ETH Price: $3,402.26 (-1.04%)
Gas: 7 Gwei

Token

CITIZEN (ZEN)
 

Overview

Max Total Supply

1,000,000,000 ZEN

Holders

121

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,641.271343244 ZEN

Value
$0.00
0xff78ff02e9bdc2516377116867ec6eb4b3349102
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:
CITIZEN

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
ᴡᴀᴋᴇ ᴜᴘ, ᴄɪᴛɪᴢᴇɴ. 

ᴛʜᴇ ʀᴏᴀᴅ ᴀʜᴇᴀᴅ ɪs ʟᴏɴɢ, ᴀ ɴᴇᴡ ᴡᴏʀʟᴅ ᴀᴡᴀɪᴛs ᴜs
*/

// Website: https://citizentoken.net

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // 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);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

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

// pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.5.0;

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 Mint(address indexed sender, uint256 amount0, uint256 amount1);
    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 mint(address to) external returns (uint256 liquidity);

    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;
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract CITIZEN is Context, IERC20, Ownable {
    using Address for address;

    string private _name = "CITIZEN";
    string private _symbol = "ZEN";
    uint8 private _decimals = 9;
    uint256 private initialsupply = 1_000_000_000;
    uint256 private _tTotal = initialsupply * 10**_decimals;
    address payable private _marketingWallet;

    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    struct Icooldown {
        bool buycooldownEnabled;
        bool sellcooldownEnabled;
        uint256 cooldown;
        uint256 cooldownLimit;
    }
    Icooldown public cooldownInfo =
        Icooldown({
            buycooldownEnabled: true,
            sellcooldownEnabled: true,
            cooldown: 30 seconds,
            cooldownLimit: 60 seconds
        });
    struct ILaunch {
        uint256 launchedAt;
        bool launched;
        bool launchProtection;
    }
    ILaunch public wenLaunch =
        ILaunch({
            launchedAt: 0, 
            launched: false, 
            launchProtection: true
        });

    struct ItxSettings {
        uint256 maxTxAmount;
        uint256 maxWalletAmount;
        uint256 numTokensToSwap;
        bool limited;
    }

    ItxSettings public txSettings;

    uint256 public _liquidityFee;
    uint256 public _marketingFee;
    uint256 public _buyLiquidityFee;
    uint256 public _buyMarketingFee;
    uint256 public _sellLiquidityFee;
    uint256 public _sellMarketingFee;

    uint256 public _lpFeeAccumulated;
    uint256 public _marketingFeeAccumulated;

    uint256 public _antiBlocks = 3;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;

    bool public tradeEnabled;
    mapping(address => bool) public tradeAllowedList;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event SniperStatus(address account, bool blacklisted);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ToMarketing(uint256 marketingBalance);
    event SwapAndLiquify(uint256 liquidityTokens, uint256 liquidityFees);

    constructor(address marketingWallet) {        
        _marketingWallet = payable(marketingWallet);
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // bsc 
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //bsc test net 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //eth 

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _approve(_msgSender(), address(_uniswapV2Router), type(uint256).max);
        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        setSellFee(10,50);
        setBuyFee(10,50);
        setTransferFee(10,30);
        setTxSettings(1,100,2,100,5,1000,true);

        _tOwned[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);

        tradeEnabled = false;
        tradeAllowedList[owner()] = true;
        tradeAllowedList[address(this)] = true;
    }

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

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

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

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

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

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

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

    function setSellFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 500);
        _sellLiquidityFee = liquidityFee;
        _sellMarketingFee = marketingFee;
    }

    function setBuyFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 500);
        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
    }

    function setTransferFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 500);
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setCooldown(uint256 amount) external onlyOwner {
        require(amount <= cooldownInfo.cooldownLimit);
        cooldownInfo.cooldown = amount;
    }

    function setWallets(address payable m) external onlyOwner {
        _marketingWallet = payable(m);
    }

    function setTxSettings(uint256 txp, uint256 txd, uint256 mwp, uint256 mwd, uint256 sp, uint256 sd, bool limiter) public onlyOwner {
        require((_tTotal * txp) / txd >= (_tTotal / 1000), "Max Transaction must be above 0.1% of total supply.");
        require((_tTotal * mwp) / mwd >= (_tTotal / 1000), "Max Wallet must be above 0.1% of total supply.");
        uint256 newTx = (_tTotal * txp) / (txd);
        uint256 newMw = (_tTotal * mwp) / mwd;
        uint256 swapAmount = (_tTotal * sp) / (sd);
        txSettings = ItxSettings ({
            numTokensToSwap: swapAmount,
            maxTxAmount: newTx,
            maxWalletAmount: newMw,
            limited: limiter
        });
    }

    function setTradeEnabled(bool onoff) external onlyOwner {
        tradeEnabled = onoff;
        launch();
    }

    function setAntiBlocks(uint256 _block) external onlyOwner {
        _antiBlocks = _block;
    }

    function setTradeAllowedAddress(address who, bool status) external onlyOwner {
        tradeAllowedList[who] = status;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - (subtractedValue)
        );
        return true;
    }

    function setBlacklistStatus(address account, bool blacklisted) external onlyOwner {
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
        } else if (blacklisted == false) {
            _isBlacklisted[account] = false;
        }
    }

    function unblacklist(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }
    
    function setSniperStatus(address account, bool blacklisted) private{
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
            emit SniperStatus(account, blacklisted);
        } 
    }

    function limits(bool onoff) public onlyOwner {
        txSettings.limited = onoff;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

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

    //to receive ETH from uniswapV2Router when swapping
    receive() external payable {}

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

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

    function swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;        
        uint256 tokensToSwap = _lpFeeAccumulated / 2 + _marketingFeeAccumulated;
        uint256 liquidityTokens = tokenBalance - tokensToSwap;

        if (tokensToSwap > 0) {
            swapTokensForEth(tokensToSwap);
        }

        uint256 newBalance = address(this).balance;
        uint256 liquidityBalance = uint256(newBalance - initialBalance) * liquidityTokens / tokensToSwap;

        if (liquidityTokens > 0 && liquidityBalance > 0) {
            addLiquidity(liquidityTokens, liquidityBalance);
            emit SwapAndLiquify(liquidityTokens, liquidityBalance);
        }        

        uint256 marketingBalance = address(this).balance;
        if (marketingBalance > 0) {
            _marketingWallet.transfer(marketingBalance);
            emit ToMarketing(marketingBalance);
        }

        _lpFeeAccumulated = 0;
        _marketingFeeAccumulated = 0;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage <= 100);
        uint256 amountETH = address(this).balance;
        payable(_marketingWallet).transfer(
            (amountETH * (amountPercentage)) / (100)
        );
    }

    function clearStuckToken(address to) external onlyOwner {
        uint256 _balance = balanceOf(address(this));
        _transfer(address(this), to, _balance);
    }

    function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

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

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - (
                amount
            )
        );
        return true;
    }

    function launch() internal {
        wenLaunch.launchedAt = block.number;
        wenLaunch.launched = true;
        swapAndLiquifyEnabled = true;
        emit Launch();
    }

    event Launch();

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_isBlacklisted[from] == false, "Hehe");
        require(_isBlacklisted[to] == false, "Hehe");

        if (!tradeEnabled) {
            require(tradeAllowedList[from] || tradeAllowedList[to], "Transfer: not allowed");
            require(balanceOf(uniswapV2Pair) == 0 || to != uniswapV2Pair, "Transfer: no body can sell now");
        }

        if (txSettings.limited) {
            if(from != owner() && to != owner() || to != address(0xdead) && to != address(0)) 
            {
                if (from == uniswapV2Pair || to == uniswapV2Pair
                ) {
                    if(!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
                        require(amount <= txSettings.maxTxAmount);
                    }
                }
                if(to != address(uniswapV2Router) && to != uniswapV2Pair) {
                    if(!_isExcludedFromFee[to]) {
                        require(balanceOf(to) + amount <= txSettings.maxWalletAmount);
                    }
                }
            }
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]
            ) {
                if (cooldownInfo.buycooldownEnabled) {
                    require(buycooldown[to] < block.timestamp);
                    buycooldown[to] = block.timestamp + (cooldownInfo.cooldown);
                }
            } else if (from != uniswapV2Pair && !_isExcludedFromFee[from]){
                if (cooldownInfo.sellcooldownEnabled) {
                    require(sellcooldown[from] <= block.timestamp);
                    sellcooldown[from] = block.timestamp + (cooldownInfo.cooldown);
                }
            }

        if (wenLaunch.launchProtection) {
            if (block.number <= (wenLaunch.launchedAt + _antiBlocks)) {
                if (
                    from == uniswapV2Pair &&
                    to != address(uniswapV2Router) &&
                    !_isExcludedFromFee[to]
                ) {
                    setSniperStatus(to, true); 
                }
            } else {
                wenLaunch.launchProtection = false;
            }
        }

        bool overMinTokenBalance = (_lpFeeAccumulated + _marketingFeeAccumulated) >= txSettings.numTokensToSwap;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify(_lpFeeAccumulated + _marketingFeeAccumulated);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

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

        //transfer amount, it will take tax, marketing, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        uint256 feeAmount = 0;
        uint256 liquidityFeeValue;
        uint256 totalFeeValue;

        if (takeFee) {
            if (sender == uniswapV2Pair) {
                feeAmount = (amount * (_buyLiquidityFee + _buyMarketingFee)) / (1000);
                liquidityFeeValue = _buyLiquidityFee;
                totalFeeValue = _buyLiquidityFee + _buyMarketingFee;
            } else if (recipient == uniswapV2Pair) {
                feeAmount = (amount * (_sellLiquidityFee + _sellMarketingFee)) / (1000);
                liquidityFeeValue = _sellLiquidityFee;
                totalFeeValue = _sellLiquidityFee + _sellMarketingFee;
            } else {
                feeAmount = (amount * (_liquidityFee + _marketingFee)) / (1000);
                liquidityFeeValue = _liquidityFee;
                totalFeeValue = _liquidityFee + _marketingFee;
            }

            if (totalFeeValue > 0) {
                _lpFeeAccumulated = feeAmount * liquidityFeeValue / totalFeeValue;
                _marketingFeeAccumulated = feeAmount - _lpFeeAccumulated;
            }
        }
        
        uint256 tAmount = amount - feeAmount;
        _tOwned[sender] -= amount;
        _tOwned[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        _tOwned[recipient] += tAmount;
        emit Transfer(sender, recipient, tAmount);
    }

    function setCooldownEnabled(bool onoff, bool offon) external onlyOwner {
        cooldownInfo.buycooldownEnabled = onoff;
        cooldownInfo.sellcooldownEnabled = offon;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"SniperStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFees","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingBalance","type":"uint256"}],"name":"ToMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_antiBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownInfo","outputs":[{"internalType":"bool","name":"buycooldownEnabled","type":"bool"},{"internalType":"bool","name":"sellcooldownEnabled","type":"bool"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"uint256","name":"cooldownLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"}],"name":"setAntiBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"},{"internalType":"bool","name":"offon","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setTradeAllowedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTradeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txp","type":"uint256"},{"internalType":"uint256","name":"txd","type":"uint256"},{"internalType":"uint256","name":"mwp","type":"uint256"},{"internalType":"uint256","name":"mwd","type":"uint256"},{"internalType":"uint256","name":"sp","type":"uint256"},{"internalType":"uint256","name":"sd","type":"uint256"},{"internalType":"bool","name":"limiter","type":"bool"}],"name":"setTxSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"m","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tradeAllowedList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txSettings","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"numTokensToSwap","type":"uint256"},{"internalType":"bool","name":"limited","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wenLaunch","outputs":[{"internalType":"uint256","name":"launchedAt","type":"uint256"},{"internalType":"bool","name":"launched","type":"bool"},{"internalType":"bool","name":"launchProtection","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600781526020017f434954495a454e00000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000f34565b506040518060400160405280600381526020017f5a454e0000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000f34565b506009600560006101000a81548160ff021916908360ff160217905550633b9aca00600655600560009054906101000a900460ff16600a620000e2919062001307565b600654620000f1919062001444565b6007556040518060800160405280600115158152602001600115158152602001601e8152602001603c815250600f60008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550604082015181600101556060820151816002015550506040518060600160405280600081526020016000151581526020016001151581525060126000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555050506003602055348015620001f757600080fd5b5060405162006f6438038062006f6483398181016040528101906200021d919062000ffb565b60006200022f6200086860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036e57600080fd5b505afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062000ffb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040c57600080fd5b505afa15801562000421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000447919062000ffb565b6040518363ffffffff1660e01b81526004016200046692919062001112565b602060405180830381600087803b1580156200048157600080fd5b505af115801562000496573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bc919062000ffb565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200056b6200053d6200086860201b60201c565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200087060201b60201c565b6200059e30827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200087060201b60201c565b6001600d6000620005b462000a4360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000671600a603262000a6c60201b60201c565b62000685600a603262000b3b60201b60201c565b62000699600a601e62000c0a60201b60201c565b620006b8600160646002606460056103e8600162000cd960201b60201c565b60075460096000620006cf6200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200071d6200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200077e9190620011e9565b60405180910390a36000602160026101000a81548160ff021916908315150217905550600160226000620007b762000a4360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001744565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620008e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008da90620011c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000956576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200094d906200113f565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a369190620011e9565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000a7c6200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b039062001183565b60405180910390fd5b6101f4818362000b1d919062001217565b111562000b2957600080fd5b81601c8190555080601d819055505050565b62000b4b6200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd29062001183565b60405180910390fd5b6101f4818362000bec919062001217565b111562000bf857600080fd5b80601b8190555081601a819055505050565b62000c1a6200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ca19062001183565b60405180910390fd5b6101f4818362000cbb919062001217565b111562000cc757600080fd5b81601881905550806019819055505050565b62000ce96200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000d79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d709062001183565b60405180910390fd5b6103e860075462000d8b919062001274565b868860075462000d9c919062001444565b62000da8919062001274565b101562000dec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000de390620011a5565b60405180910390fd5b6103e860075462000dfe919062001274565b848660075462000e0f919062001444565b62000e1b919062001274565b101562000e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e569062001161565b60405180910390fd5b6000868860075462000e72919062001444565b62000e7e919062001274565b90506000858760075462000e93919062001444565b62000e9f919062001274565b90506000848660075462000eb4919062001444565b62000ec0919062001274565b90506040518060800160405280848152602001838152602001828152602001851515815250601460008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050505050505050505050565b82805462000f4290620014f0565b90600052602060002090601f01602090048101928262000f66576000855562000fb2565b82601f1062000f8157805160ff191683800117855562000fb2565b8280016001018555821562000fb2579182015b8281111562000fb157825182559160200191906001019062000f94565b5b50905062000fc1919062000fc5565b5090565b5b8082111562000fe057600081600090555060010162000fc6565b5090565b60008151905062000ff5816200172a565b92915050565b600060208284031215620010145762001013620015b3565b5b6000620010248482850162000fe4565b91505092915050565b6200103881620014a5565b82525050565b60006200104d60228362001206565b91506200105a82620015c5565b604082019050919050565b600062001074602e8362001206565b9150620010818262001614565b604082019050919050565b60006200109b60208362001206565b9150620010a88262001663565b602082019050919050565b6000620010c260338362001206565b9150620010cf826200168c565b604082019050919050565b6000620010e960248362001206565b9150620010f682620016db565b604082019050919050565b6200110c81620014d9565b82525050565b60006040820190506200112960008301856200102d565b6200113860208301846200102d565b9392505050565b600060208201905081810360008301526200115a816200103e565b9050919050565b600060208201905081810360008301526200117c8162001065565b9050919050565b600060208201905081810360008301526200119e816200108c565b9050919050565b60006020820190508181036000830152620011c081620010b3565b9050919050565b60006020820190508181036000830152620011e281620010da565b9050919050565b600060208201905062001200600083018462001101565b92915050565b600082825260208201905092915050565b60006200122482620014d9565b91506200123183620014d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001269576200126862001526565b5b828201905092915050565b60006200128182620014d9565b91506200128e83620014d9565b925082620012a157620012a062001555565b5b828204905092915050565b6000808291508390505b6001851115620012fe57808604811115620012d657620012d562001526565b5b6001851615620012e65780820291505b8081029050620012f685620015b8565b9450620012b6565b94509492505050565b60006200131482620014d9565b91506200132183620014e3565b9250620013507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001358565b905092915050565b6000826200136a57600190506200143d565b816200137a57600090506200143d565b81600181146200139357600281146200139e57620013d4565b60019150506200143d565b60ff841115620013b357620013b262001526565b5b8360020a915084821115620013cd57620013cc62001526565b5b506200143d565b5060208310610133831016604e8410600b84101617156200140e5782820a90508381111562001408576200140762001526565b5b6200143d565b6200141d8484846001620012ac565b9250905081840481111562001437576200143662001526565b5b81810290505b9392505050565b60006200145182620014d9565b91506200145e83620014d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200149a576200149962001526565b5b828202905092915050565b6000620014b282620014b9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200150957607f821691505b6020821081141562001520576200151f62001584565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660008201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60008201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6200173581620014a5565b81146200174157600080fd5b50565b60805160601c60a05160601c6157456200181f60003960008181610cf60152818161142b01528181612e5a01528181612e870152818161301d01528181613072015281816131db015281816132ab0152818161346a01528181613601015281816137710152818161392d01528181613c890152613d23015260008181610d8101528181610f60015281816131840152818161330101528181613657015281816139b8015281816140bf015281816141ed015281816142530152818161429b01528181614375015281816143db015261442301526157456000f3fe6080604052600436106103035760003560e01c8063768dc71011610190578063c49b9a80116100dc578063dc44b6a011610095578063eb50e70e1161006f578063eb50e70e14610bbb578063f23175ff14610be4578063f2fde38b14610c0d578063fb0ecfa414610c365761030a565b8063dc44b6a014610b2a578063dd62ed3e14610b55578063ea2f0b3714610b925761030a565b8063c49b9a8014610a27578063c5d2418914610a50578063c61276b514610a7b578063c860795214610aa6578063d621e81314610ad1578063d8913ae314610afc5761030a565b80639be953b311610149578063a9059cbb11610123578063a9059cbb1461095b578063b18e984014610998578063b5ec1941146109c1578063c40fedc6146109ea5761030a565b80639be953b3146108cc578063a16df9d8146108f5578063a457c2d71461091e5761030a565b8063768dc710146107b757806388790a68146107f45780638da5cb5b1461081f578063934930a11461084a57806395d89b411461087357806395f93d481461089e5761030a565b80633bec2bf31161024f5780635b8138f6116102085780636bc87c3a116101e25780636bc87c3a1461070f57806370a082311461073a578063715018a61461077757806375e3661e1461078e5761030a565b80635b8138f6146106905780635db44757146106b95780636ac9a870146106e65761030a565b80633bec2bf314610594578063437823ec146105bd57806349bd5a5e146105e65780634a74bb02146106115780634fc3f41a1461063c578063514ec803146106655761030a565b80631cdd3be3116102bc57806323b872dd1161029657806323b872dd146104c4578063313ce56714610501578063382b23811461052c57806339509351146105575761030a565b80631cdd3be3146104335780631da1db5e1461047057806322976e0d146104995761030a565b806303d29d281461030f57806306fdde0314610338578063095ea7b3146103635780631694505e146103a057806318160ddd146103cb5780631c66cb6d146103f65761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061033660048036038101906103319190614693565b610c5f565b005b34801561034457600080fd5b5061034d610eae565b60405161035a9190614d41565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906146d3565b610f40565b6040516103979190614cc6565b60405180910390f35b3480156103ac57600080fd5b506103b5610f5e565b6040516103c29190614d26565b60405180910390f35b3480156103d757600080fd5b506103e0610f82565b6040516103ed9190614ee3565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190614579565b610f8c565b60405161042a9190614cc6565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190614579565b610fac565b6040516104679190614cc6565b60405180910390f35b34801561047c57600080fd5b50610497600480360381019061049291906147ad565b610fcc565b005b3480156104a557600080fd5b506104ae6110f8565b6040516104bb9190614ee3565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e69190614640565b6110fe565b6040516104f89190614cc6565b60405180910390f35b34801561050d57600080fd5b506105166111b6565b6040516105239190614ffd565b60405180910390f35b34801561053857600080fd5b506105416111cd565b60405161054e9190614ee3565b60405180910390f35b34801561056357600080fd5b5061057e600480360381019061057991906146d3565b6111d3565b60405161058b9190614cc6565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190614713565b61127f565b005b3480156105c957600080fd5b506105e460048036038101906105df9190614579565b611339565b005b3480156105f257600080fd5b506105fb611429565b6040516106089190614bf8565b60405180910390f35b34801561061d57600080fd5b5061062661144d565b6040516106339190614cc6565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906147ad565b611460565b005b34801561067157600080fd5b5061067a611514565b6040516106879190614ee3565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190614693565b61151a565b005b3480156106c557600080fd5b506106ce61160a565b6040516106dd93929190614efe565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190614807565b61163c565b005b34801561071b57600080fd5b506107246116fd565b6040516107319190614ee3565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190614579565b611703565b60405161076e9190614ee3565b60405180910390f35b34801561078357600080fd5b5061078c61174c565b005b34801561079a57600080fd5b506107b560048036038101906107b09190614579565b61189f565b005b3480156107c357600080fd5b506107de60048036038101906107d99190614579565b61198f565b6040516107eb9190614cc6565b60405180910390f35b34801561080057600080fd5b506108096119af565b6040516108169190614ee3565b60405180910390f35b34801561082b57600080fd5b506108346119b5565b6040516108419190614bf8565b60405180910390f35b34801561085657600080fd5b50610871600480360381019061086c9190614807565b6119de565b005b34801561087f57600080fd5b50610888611a9f565b6040516108959190614d41565b60405180910390f35b3480156108aa57600080fd5b506108b3611b31565b6040516108c39493929190614ce1565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190614579565b611b69565b005b34801561090157600080fd5b5061091c6004803603810190610917919061489a565b611c1a565b005b34801561092a57600080fd5b50610945600480360381019061094091906146d3565b611e4c565b6040516109529190614cc6565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d91906146d3565b611ef8565b60405161098f9190614cc6565b60405180910390f35b3480156109a457600080fd5b506109bf60048036038101906109ba91906147ad565b611f16565b005b3480156109cd57600080fd5b506109e860048036038101906109e39190614713565b611fb5565b005b3480156109f657600080fd5b50610a116004803603810190610a0c9190614600565b61206a565b604051610a1e9190614cc6565b60405180910390f35b348015610a3357600080fd5b50610a4e6004803603810190610a499190614713565b61225e565b005b348015610a5c57600080fd5b50610a65612347565b604051610a729190614ee3565b60405180910390f35b348015610a8757600080fd5b50610a9061234d565b604051610a9d9190614ee3565b60405180910390f35b348015610ab257600080fd5b50610abb612353565b604051610ac89190614ee3565b60405180910390f35b348015610add57600080fd5b50610ae6612359565b604051610af39190614cc6565b60405180910390f35b348015610b0857600080fd5b50610b1161236c565b604051610b219493929190614fb8565b60405180910390f35b348015610b3657600080fd5b50610b3f612397565b604051610b4c9190614ee3565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190614600565b61239d565b604051610b899190614ee3565b60405180910390f35b348015610b9e57600080fd5b50610bb96004803603810190610bb49190614579565b612424565b005b348015610bc757600080fd5b50610be26004803603810190610bdd91906145d3565b612514565b005b348015610bf057600080fd5b50610c0b6004803603810190610c06919061476d565b6125ed565b005b348015610c1957600080fd5b50610c346004803603810190610c2f9190614579565b6126c0565b005b348015610c4257600080fd5b50610c5d6004803603810190610c589190614807565b612882565b005b610c67612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90614de3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610d7957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610dcf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610dd957600080fd5b600115158115151415610e43576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610eaa565b600015158115151415610ea9576000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5050565b606060038054610ebd90615264565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee990615264565b8015610f365780601f10610f0b57610100808354040283529160200191610f36565b820191906000526020600020905b815481529060010190602001808311610f1957829003601f168201915b5050505050905090565b6000610f54610f4d612943565b848461294b565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b60226020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b610fd4612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614de3565b60405180910390fd5b606481111561106f57600080fd5b6000479050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846110be91906150f4565b6110c891906150c3565b9081150290604051600060405180830381858888f193505050501580156110f3573d6000803e3d6000fd5b505050565b60195481565b600061110b848484612b16565b6111ab84611117612943565b84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611161612943565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a6919061514e565b61294b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60205481565b60006112756111e0612943565b8484600c60006111ee612943565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611270919061506d565b61294b565b6001905092915050565b611287612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b90614de3565b60405180910390fd5b80602160026101000a81548160ff0219169083151502179055506113366138ba565b50565b611341612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590614de3565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b602160019054906101000a900460ff1681565b611468612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90614de3565b60405180910390fd5b600f6002015481111561150757600080fd5b80600f6001018190555050565b601e5481565b611522612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690614de3565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60128060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16905083565b611644612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890614de3565b60405180910390fd5b6101f481836116e0919061506d565b11156116eb57600080fd5b81601c8190555080601d819055505050565b60185481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611754612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118a7612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90614de3565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119e6612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a90614de3565b60405180910390fd5b6101f48183611a82919061506d565b1115611a8d57600080fd5b81601881905550806019819055505050565b606060048054611aae90615264565b80601f0160208091040260200160405190810160405280929190818152602001828054611ada90615264565b8015611b275780601f10611afc57610100808354040283529160200191611b27565b820191906000526020600020905b815481529060010190602001808311611b0a57829003601f168201915b5050505050905090565b600f8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154905084565b611b71612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590614de3565b60405180910390fd5b6000611c0930611703565b9050611c16308383612b16565b5050565b611c22612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690614de3565b60405180910390fd5b6103e8600754611cbf91906150c3565b8688600754611cce91906150f4565b611cd891906150c3565b1015611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1090614e63565b60405180910390fd5b6103e8600754611d2991906150c3565b8486600754611d3891906150f4565b611d4291906150c3565b1015611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90614dc3565b60405180910390fd5b60008688600754611d9491906150f4565b611d9e91906150c3565b905060008587600754611db191906150f4565b611dbb91906150c3565b905060008486600754611dce91906150f4565b611dd891906150c3565b90506040518060800160405280848152602001838152602001828152602001851515815250601460008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050505050505050505050565b6000611eee611e59612943565b8484600c6000611e67612943565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee9919061514e565b61294b565b6001905092915050565b6000611f0c611f05612943565b8484612b16565b6001905092915050565b611f1e612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290614de3565b60405180910390fd5b8060208190555050565b611fbd612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204190614de3565b60405180910390fd5b80601460030160006101000a81548160ff02191690831515021790555050565b6000612074612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561213b57600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121769190614bf8565b60206040518083038186803b15801561218e57600080fd5b505afa1580156121a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c691906147da565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401612203929190614c3c565b602060405180830381600087803b15801561221d57600080fd5b505af1158015612231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122559190614740565b91505092915050565b612266612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614de3565b60405180910390fd5b80602160016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161233c9190614cc6565b60405180910390a150565b601b5481565b601f5481565b601d5481565b602160029054906101000a900460ff1681565b60148060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b601a5481565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61242c612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090614de3565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61251c612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614de3565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125f5612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267990614de3565b60405180910390fd5b81600f60000160006101000a81548160ff02191690831515021790555080600f60000160016101000a81548160ff0219169083151502179055505050565b6126c8612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c90614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc90614d83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61288a612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90614de3565b60405180910390fd5b6101f48183612926919061506d565b111561293157600080fd5b80601b8190555081601a819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b290614ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290614da3565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b099190614ee3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d90614e83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed90614d63565b60405180910390fd5b60008111612c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3090614e23565b60405180910390fd5b60001515600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614e43565b60405180910390fd5b60001515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5690614e43565b60405180910390fd5b602160029054906101000a900460ff16612f1657602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e145750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614e03565b60405180910390fd5b6000612e7e7f0000000000000000000000000000000000000000000000000000000000000000611703565b1480612ed657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0c90614ec3565b60405180910390fd5b5b601460030160009054906101000a900460ff16156132a957612f366119b5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fa45750612f746119b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80613016575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130155750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b156132a8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806130c057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561318257600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131695750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131815760146000015481111561318057600080fd5b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561322a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132a757600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132a6576014600101548161329084611703565b61329a919061506d565b11156132a557600080fd5b5b5b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561335057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133a65750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346857600f60000160009054906101000a900460ff16156134635742600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061340e57600080fd5b600f600101544261341f919061506d565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6135ce565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561350e5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135cd57600f60000160019054906101000a900460ff16156135cc5742600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561357757600080fd5b600f6001015442613588919061506d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b601260010160019054906101000a900460ff1615613732576020546012600001546135f9919061506d565b4311613712577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156136a657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136fc5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561370d5761370c82600161392b565b5b613731565b6000601260010160016101000a81548160ff0219169083151502179055505b5b6000601460020154601f54601e5461374a919061506d565b101590508080156137685750602160009054906101000a900460ff16155b80156137c057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156137d85750602160019054906101000a900460ff165b156137f6576137f5601f54601e546137f0919061506d565b613ab3565b5b600060019050600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061389d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138a757600090505b6138b385858584613c7d565b5050505050565b436012600001819055506001601260010160006101000a81548160ff0219169083151502179055506001602160016101000a81548160ff0219169083151502179055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806139b057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80613a0657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15613a1057600080fd5b600115158115151415613aaf576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a58282604051613aa6929190614c13565b60405180910390a15b5050565b6001602160006101000a81548160ff02191690831515021790555060004790506000601f546002601e54613ae791906150c3565b613af1919061506d565b905060008184613b01919061514e565b90506000821115613b1657613b1582614020565b5b6000479050600083838684613b2b919061514e565b613b3591906150f4565b613b3f91906150c3565b9050600083118015613b515750600081115b15613b9a57613b608382614331565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868382604051613b91929190614f8f565b60405180910390a15b60004790506000811115613c4957600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c10573d6000803e3d6000fd5b507f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b81604051613c409190614ee3565b60405180910390a15b6000601e819055506000601f819055505050505050506000602160006101000a81548160ff02191690831515021790555050565b600080808315613e3a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415613d21576103e8601b54601a54613cee919061506d565b86613cf991906150f4565b613d0391906150c3565b9250601a549150601b54601a54613d1a919061506d565b9050613dfe565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415613dbb576103e8601d54601c54613d88919061506d565b86613d9391906150f4565b613d9d91906150c3565b9250601c549150601d54601c54613db4919061506d565b9050613dfd565b6103e8601954601854613dce919061506d565b86613dd991906150f4565b613de391906150c3565b92506018549150601954601854613dfa919061506d565b90505b5b6000811115613e3957808284613e1491906150f4565b613e1e91906150c3565b601e81905550601e5483613e32919061514e565b601f819055505b5b60008386613e48919061514e565b905085600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e99919061514e565b9250508190555083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613eef919061506d565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613f539190614ee3565b60405180910390a380600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613faa919061506d565b925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161400e9190614ee3565b60405180910390a35050505050505050565b6000600267ffffffffffffffff81111561403d5761403c615352565b5b60405190808252806020026020018201604052801561406b5781602001602082028036833780820191505090505b509050308160008151811061408357614082615323565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412357600080fd5b505afa158015614137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415b91906145a6565b8160018151811061416f5761416e615323565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561429957614298307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61294b565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016142fb959493929190614f35565b600060405180830381600087803b15801561431557600080fd5b505af1158015614329573d6000803e3d6000fd5b505050505050565b81600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561442157614420307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61294b565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061446b6119b5565b426040518863ffffffff1660e01b815260040161448d96959493929190614c65565b6060604051808303818588803b1580156144a657600080fd5b505af11580156144ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144df9190614847565b5050505050565b6000813590506144f5816156b3565b92915050565b60008151905061450a816156b3565b92915050565b60008135905061451f816156ca565b92915050565b600081359050614534816156e1565b92915050565b600081519050614549816156e1565b92915050565b60008135905061455e816156f8565b92915050565b600081519050614573816156f8565b92915050565b60006020828403121561458f5761458e615381565b5b600061459d848285016144e6565b91505092915050565b6000602082840312156145bc576145bb615381565b5b60006145ca848285016144fb565b91505092915050565b6000602082840312156145e9576145e8615381565b5b60006145f784828501614510565b91505092915050565b6000806040838503121561461757614616615381565b5b6000614625858286016144e6565b9250506020614636858286016144e6565b9150509250929050565b60008060006060848603121561465957614658615381565b5b6000614667868287016144e6565b9350506020614678868287016144e6565b92505060406146898682870161454f565b9150509250925092565b600080604083850312156146aa576146a9615381565b5b60006146b8858286016144e6565b92505060206146c985828601614525565b9150509250929050565b600080604083850312156146ea576146e9615381565b5b60006146f8858286016144e6565b92505060206147098582860161454f565b9150509250929050565b60006020828403121561472957614728615381565b5b600061473784828501614525565b91505092915050565b60006020828403121561475657614755615381565b5b60006147648482850161453a565b91505092915050565b6000806040838503121561478457614783615381565b5b600061479285828601614525565b92505060206147a385828601614525565b9150509250929050565b6000602082840312156147c3576147c2615381565b5b60006147d18482850161454f565b91505092915050565b6000602082840312156147f0576147ef615381565b5b60006147fe84828501614564565b91505092915050565b6000806040838503121561481e5761481d615381565b5b600061482c8582860161454f565b925050602061483d8582860161454f565b9150509250929050565b6000806000606084860312156148605761485f615381565b5b600061486e86828701614564565b935050602061487f86828701614564565b925050604061489086828701614564565b9150509250925092565b600080600080600080600060e0888a0312156148b9576148b8615381565b5b60006148c78a828b0161454f565b97505060206148d88a828b0161454f565b96505060406148e98a828b0161454f565b95505060606148fa8a828b0161454f565b945050608061490b8a828b0161454f565b93505060a061491c8a828b0161454f565b92505060c061492d8a828b01614525565b91505092959891949750929550565b60006149488383614954565b60208301905092915050565b61495d81615182565b82525050565b61496c81615182565b82525050565b600061497d82615028565b614987818561504b565b935061499283615018565b8060005b838110156149c35781516149aa888261493c565b97506149b58361503e565b925050600181019050614996565b5085935050505092915050565b6149d9816151a6565b82525050565b6149e8816151e9565b82525050565b6149f7816151fb565b82525050565b6000614a0882615033565b614a12818561505c565b9350614a22818560208601615231565b614a2b81615386565b840191505092915050565b6000614a4360238361505c565b9150614a4e82615397565b604082019050919050565b6000614a6660268361505c565b9150614a71826153e6565b604082019050919050565b6000614a8960228361505c565b9150614a9482615435565b604082019050919050565b6000614aac602e8361505c565b9150614ab782615484565b604082019050919050565b6000614acf60208361505c565b9150614ada826154d3565b602082019050919050565b6000614af260158361505c565b9150614afd826154fc565b602082019050919050565b6000614b1560298361505c565b9150614b2082615525565b604082019050919050565b6000614b3860048361505c565b9150614b4382615574565b602082019050919050565b6000614b5b60338361505c565b9150614b668261559d565b604082019050919050565b6000614b7e60258361505c565b9150614b89826155ec565b604082019050919050565b6000614ba160248361505c565b9150614bac8261563b565b604082019050919050565b6000614bc4601e8361505c565b9150614bcf8261568a565b602082019050919050565b614be3816151d2565b82525050565b614bf2816151dc565b82525050565b6000602082019050614c0d6000830184614963565b92915050565b6000604082019050614c286000830185614963565b614c3560208301846149d0565b9392505050565b6000604082019050614c516000830185614963565b614c5e6020830184614bda565b9392505050565b600060c082019050614c7a6000830189614963565b614c876020830188614bda565b614c9460408301876149ee565b614ca160608301866149ee565b614cae6080830185614963565b614cbb60a0830184614bda565b979650505050505050565b6000602082019050614cdb60008301846149d0565b92915050565b6000608082019050614cf660008301876149d0565b614d0360208301866149d0565b614d106040830185614bda565b614d1d6060830184614bda565b95945050505050565b6000602082019050614d3b60008301846149df565b92915050565b60006020820190508181036000830152614d5b81846149fd565b905092915050565b60006020820190508181036000830152614d7c81614a36565b9050919050565b60006020820190508181036000830152614d9c81614a59565b9050919050565b60006020820190508181036000830152614dbc81614a7c565b9050919050565b60006020820190508181036000830152614ddc81614a9f565b9050919050565b60006020820190508181036000830152614dfc81614ac2565b9050919050565b60006020820190508181036000830152614e1c81614ae5565b9050919050565b60006020820190508181036000830152614e3c81614b08565b9050919050565b60006020820190508181036000830152614e5c81614b2b565b9050919050565b60006020820190508181036000830152614e7c81614b4e565b9050919050565b60006020820190508181036000830152614e9c81614b71565b9050919050565b60006020820190508181036000830152614ebc81614b94565b9050919050565b60006020820190508181036000830152614edc81614bb7565b9050919050565b6000602082019050614ef86000830184614bda565b92915050565b6000606082019050614f136000830186614bda565b614f2060208301856149d0565b614f2d60408301846149d0565b949350505050565b600060a082019050614f4a6000830188614bda565b614f5760208301876149ee565b8181036040830152614f698186614972565b9050614f786060830185614963565b614f856080830184614bda565b9695505050505050565b6000604082019050614fa46000830185614bda565b614fb16020830184614bda565b9392505050565b6000608082019050614fcd6000830187614bda565b614fda6020830186614bda565b614fe76040830185614bda565b614ff460608301846149d0565b95945050505050565b60006020820190506150126000830184614be9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615078826151d2565b9150615083836151d2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150b8576150b7615296565b5b828201905092915050565b60006150ce826151d2565b91506150d9836151d2565b9250826150e9576150e86152c5565b5b828204905092915050565b60006150ff826151d2565b915061510a836151d2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561514357615142615296565b5b828202905092915050565b6000615159826151d2565b9150615164836151d2565b92508282101561517757615176615296565b5b828203905092915050565b600061518d826151b2565b9050919050565b600061519f826151b2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151f48261520d565b9050919050565b6000615206826151d2565b9050919050565b60006152188261521f565b9050919050565b600061522a826151b2565b9050919050565b60005b8381101561524f578082015181840152602081019050615234565b8381111561525e576000848401525b50505050565b6000600282049050600182168061527c57607f821691505b602082108114156152905761528f6152f4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660008201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e736665723a206e6f7420616c6c6f7765640000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4865686500000000000000000000000000000000000000000000000000000000600082015250565b7f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60008201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f770000600082015250565b6156bc81615182565b81146156c757600080fd5b50565b6156d381615194565b81146156de57600080fd5b50565b6156ea816151a6565b81146156f557600080fd5b50565b615701816151d2565b811461570c57600080fd5b5056fea2646970667358221220cc0b8b001737030d0bcf98c24dae310d74a092291c7364810adeaf7b10cf5e7464736f6c634300080700330000000000000000000000001b0f907af2ef4be9b0672b2a249a92dfedc75c95

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063768dc71011610190578063c49b9a80116100dc578063dc44b6a011610095578063eb50e70e1161006f578063eb50e70e14610bbb578063f23175ff14610be4578063f2fde38b14610c0d578063fb0ecfa414610c365761030a565b8063dc44b6a014610b2a578063dd62ed3e14610b55578063ea2f0b3714610b925761030a565b8063c49b9a8014610a27578063c5d2418914610a50578063c61276b514610a7b578063c860795214610aa6578063d621e81314610ad1578063d8913ae314610afc5761030a565b80639be953b311610149578063a9059cbb11610123578063a9059cbb1461095b578063b18e984014610998578063b5ec1941146109c1578063c40fedc6146109ea5761030a565b80639be953b3146108cc578063a16df9d8146108f5578063a457c2d71461091e5761030a565b8063768dc710146107b757806388790a68146107f45780638da5cb5b1461081f578063934930a11461084a57806395d89b411461087357806395f93d481461089e5761030a565b80633bec2bf31161024f5780635b8138f6116102085780636bc87c3a116101e25780636bc87c3a1461070f57806370a082311461073a578063715018a61461077757806375e3661e1461078e5761030a565b80635b8138f6146106905780635db44757146106b95780636ac9a870146106e65761030a565b80633bec2bf314610594578063437823ec146105bd57806349bd5a5e146105e65780634a74bb02146106115780634fc3f41a1461063c578063514ec803146106655761030a565b80631cdd3be3116102bc57806323b872dd1161029657806323b872dd146104c4578063313ce56714610501578063382b23811461052c57806339509351146105575761030a565b80631cdd3be3146104335780631da1db5e1461047057806322976e0d146104995761030a565b806303d29d281461030f57806306fdde0314610338578063095ea7b3146103635780631694505e146103a057806318160ddd146103cb5780631c66cb6d146103f65761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061033660048036038101906103319190614693565b610c5f565b005b34801561034457600080fd5b5061034d610eae565b60405161035a9190614d41565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906146d3565b610f40565b6040516103979190614cc6565b60405180910390f35b3480156103ac57600080fd5b506103b5610f5e565b6040516103c29190614d26565b60405180910390f35b3480156103d757600080fd5b506103e0610f82565b6040516103ed9190614ee3565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190614579565b610f8c565b60405161042a9190614cc6565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190614579565b610fac565b6040516104679190614cc6565b60405180910390f35b34801561047c57600080fd5b50610497600480360381019061049291906147ad565b610fcc565b005b3480156104a557600080fd5b506104ae6110f8565b6040516104bb9190614ee3565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e69190614640565b6110fe565b6040516104f89190614cc6565b60405180910390f35b34801561050d57600080fd5b506105166111b6565b6040516105239190614ffd565b60405180910390f35b34801561053857600080fd5b506105416111cd565b60405161054e9190614ee3565b60405180910390f35b34801561056357600080fd5b5061057e600480360381019061057991906146d3565b6111d3565b60405161058b9190614cc6565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190614713565b61127f565b005b3480156105c957600080fd5b506105e460048036038101906105df9190614579565b611339565b005b3480156105f257600080fd5b506105fb611429565b6040516106089190614bf8565b60405180910390f35b34801561061d57600080fd5b5061062661144d565b6040516106339190614cc6565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906147ad565b611460565b005b34801561067157600080fd5b5061067a611514565b6040516106879190614ee3565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190614693565b61151a565b005b3480156106c557600080fd5b506106ce61160a565b6040516106dd93929190614efe565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190614807565b61163c565b005b34801561071b57600080fd5b506107246116fd565b6040516107319190614ee3565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190614579565b611703565b60405161076e9190614ee3565b60405180910390f35b34801561078357600080fd5b5061078c61174c565b005b34801561079a57600080fd5b506107b560048036038101906107b09190614579565b61189f565b005b3480156107c357600080fd5b506107de60048036038101906107d99190614579565b61198f565b6040516107eb9190614cc6565b60405180910390f35b34801561080057600080fd5b506108096119af565b6040516108169190614ee3565b60405180910390f35b34801561082b57600080fd5b506108346119b5565b6040516108419190614bf8565b60405180910390f35b34801561085657600080fd5b50610871600480360381019061086c9190614807565b6119de565b005b34801561087f57600080fd5b50610888611a9f565b6040516108959190614d41565b60405180910390f35b3480156108aa57600080fd5b506108b3611b31565b6040516108c39493929190614ce1565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190614579565b611b69565b005b34801561090157600080fd5b5061091c6004803603810190610917919061489a565b611c1a565b005b34801561092a57600080fd5b50610945600480360381019061094091906146d3565b611e4c565b6040516109529190614cc6565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d91906146d3565b611ef8565b60405161098f9190614cc6565b60405180910390f35b3480156109a457600080fd5b506109bf60048036038101906109ba91906147ad565b611f16565b005b3480156109cd57600080fd5b506109e860048036038101906109e39190614713565b611fb5565b005b3480156109f657600080fd5b50610a116004803603810190610a0c9190614600565b61206a565b604051610a1e9190614cc6565b60405180910390f35b348015610a3357600080fd5b50610a4e6004803603810190610a499190614713565b61225e565b005b348015610a5c57600080fd5b50610a65612347565b604051610a729190614ee3565b60405180910390f35b348015610a8757600080fd5b50610a9061234d565b604051610a9d9190614ee3565b60405180910390f35b348015610ab257600080fd5b50610abb612353565b604051610ac89190614ee3565b60405180910390f35b348015610add57600080fd5b50610ae6612359565b604051610af39190614cc6565b60405180910390f35b348015610b0857600080fd5b50610b1161236c565b604051610b219493929190614fb8565b60405180910390f35b348015610b3657600080fd5b50610b3f612397565b604051610b4c9190614ee3565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190614600565b61239d565b604051610b899190614ee3565b60405180910390f35b348015610b9e57600080fd5b50610bb96004803603810190610bb49190614579565b612424565b005b348015610bc757600080fd5b50610be26004803603810190610bdd91906145d3565b612514565b005b348015610bf057600080fd5b50610c0b6004803603810190610c06919061476d565b6125ed565b005b348015610c1957600080fd5b50610c346004803603810190610c2f9190614579565b6126c0565b005b348015610c4257600080fd5b50610c5d6004803603810190610c589190614807565b612882565b005b610c67612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90614de3565b60405180910390fd5b7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610d7957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610dcf57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610dd957600080fd5b600115158115151415610e43576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610eaa565b600015158115151415610ea9576000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5050565b606060038054610ebd90615264565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee990615264565b8015610f365780601f10610f0b57610100808354040283529160200191610f36565b820191906000526020600020905b815481529060010190602001808311610f1957829003601f168201915b5050505050905090565b6000610f54610f4d612943565b848461294b565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b60226020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b610fd4612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614de3565b60405180910390fd5b606481111561106f57600080fd5b6000479050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846110be91906150f4565b6110c891906150c3565b9081150290604051600060405180830381858888f193505050501580156110f3573d6000803e3d6000fd5b505050565b60195481565b600061110b848484612b16565b6111ab84611117612943565b84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611161612943565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a6919061514e565b61294b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60205481565b60006112756111e0612943565b8484600c60006111ee612943565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611270919061506d565b61294b565b6001905092915050565b611287612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b90614de3565b60405180910390fd5b80602160026101000a81548160ff0219169083151502179055506113366138ba565b50565b611341612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590614de3565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2381565b602160019054906101000a900460ff1681565b611468612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90614de3565b60405180910390fd5b600f6002015481111561150757600080fd5b80600f6001018190555050565b601e5481565b611522612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690614de3565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60128060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16905083565b611644612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890614de3565b60405180910390fd5b6101f481836116e0919061506d565b11156116eb57600080fd5b81601c8190555080601d819055505050565b60185481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611754612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118a7612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90614de3565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119e6612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a90614de3565b60405180910390fd5b6101f48183611a82919061506d565b1115611a8d57600080fd5b81601881905550806019819055505050565b606060048054611aae90615264565b80601f0160208091040260200160405190810160405280929190818152602001828054611ada90615264565b8015611b275780601f10611afc57610100808354040283529160200191611b27565b820191906000526020600020905b815481529060010190602001808311611b0a57829003601f168201915b5050505050905090565b600f8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154905084565b611b71612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590614de3565b60405180910390fd5b6000611c0930611703565b9050611c16308383612b16565b5050565b611c22612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690614de3565b60405180910390fd5b6103e8600754611cbf91906150c3565b8688600754611cce91906150f4565b611cd891906150c3565b1015611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1090614e63565b60405180910390fd5b6103e8600754611d2991906150c3565b8486600754611d3891906150f4565b611d4291906150c3565b1015611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90614dc3565b60405180910390fd5b60008688600754611d9491906150f4565b611d9e91906150c3565b905060008587600754611db191906150f4565b611dbb91906150c3565b905060008486600754611dce91906150f4565b611dd891906150c3565b90506040518060800160405280848152602001838152602001828152602001851515815250601460008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050505050505050505050565b6000611eee611e59612943565b8484600c6000611e67612943565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee9919061514e565b61294b565b6001905092915050565b6000611f0c611f05612943565b8484612b16565b6001905092915050565b611f1e612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290614de3565b60405180910390fd5b8060208190555050565b611fbd612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204190614de3565b60405180910390fd5b80601460030160006101000a81548160ff02191690831515021790555050565b6000612074612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561213b57600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121769190614bf8565b60206040518083038186803b15801561218e57600080fd5b505afa1580156121a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c691906147da565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401612203929190614c3c565b602060405180830381600087803b15801561221d57600080fd5b505af1158015612231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122559190614740565b91505092915050565b612266612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614de3565b60405180910390fd5b80602160016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161233c9190614cc6565b60405180910390a150565b601b5481565b601f5481565b601d5481565b602160029054906101000a900460ff1681565b60148060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b601a5481565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61242c612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090614de3565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61251c612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614de3565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125f5612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267990614de3565b60405180910390fd5b81600f60000160006101000a81548160ff02191690831515021790555080600f60000160016101000a81548160ff0219169083151502179055505050565b6126c8612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c90614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc90614d83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61288a612943565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90614de3565b60405180910390fd5b6101f48183612926919061506d565b111561293157600080fd5b80601b8190555081601a819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b290614ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290614da3565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b099190614ee3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d90614e83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed90614d63565b60405180910390fd5b60008111612c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3090614e23565b60405180910390fd5b60001515600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614e43565b60405180910390fd5b60001515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5690614e43565b60405180910390fd5b602160029054906101000a900460ff16612f1657602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e145750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614e03565b60405180910390fd5b6000612e7e7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d23611703565b1480612ed657507f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0c90614ec3565b60405180910390fd5b5b601460030160009054906101000a900460ff16156132a957612f366119b5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fa45750612f746119b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80613016575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130155750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b156132a8577f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806130c057507f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561318257600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131695750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131815760146000015481111561318057600080fd5b5b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561322a57507f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132a757600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132a6576014600101548161329084611703565b61329a919061506d565b11156132a557600080fd5b5b5b5b5b7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561335057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133a65750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346857600f60000160009054906101000a900460ff16156134635742600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061340e57600080fd5b600f600101544261341f919061506d565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6135ce565b7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561350e5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135cd57600f60000160019054906101000a900460ff16156135cc5742600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561357757600080fd5b600f6001015442613588919061506d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b601260010160019054906101000a900460ff1615613732576020546012600001546135f9919061506d565b4311613712577f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156136a657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136fc5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561370d5761370c82600161392b565b5b613731565b6000601260010160016101000a81548160ff0219169083151502179055505b5b6000601460020154601f54601e5461374a919061506d565b101590508080156137685750602160009054906101000a900460ff16155b80156137c057507f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156137d85750602160019054906101000a900460ff165b156137f6576137f5601f54601e546137f0919061506d565b613ab3565b5b600060019050600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061389d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138a757600090505b6138b385858584613c7d565b5050505050565b436012600001819055506001601260010160006101000a81548160ff0219169083151502179055506001602160016101000a81548160ff0219169083151502179055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806139b057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80613a0657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15613a1057600080fd5b600115158115151415613aaf576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a58282604051613aa6929190614c13565b60405180910390a15b5050565b6001602160006101000a81548160ff02191690831515021790555060004790506000601f546002601e54613ae791906150c3565b613af1919061506d565b905060008184613b01919061514e565b90506000821115613b1657613b1582614020565b5b6000479050600083838684613b2b919061514e565b613b3591906150f4565b613b3f91906150c3565b9050600083118015613b515750600081115b15613b9a57613b608382614331565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868382604051613b91929190614f8f565b60405180910390a15b60004790506000811115613c4957600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c10573d6000803e3d6000fd5b507f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b81604051613c409190614ee3565b60405180910390a15b6000601e819055506000601f819055505050505050506000602160006101000a81548160ff02191690831515021790555050565b600080808315613e3a577f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415613d21576103e8601b54601a54613cee919061506d565b86613cf991906150f4565b613d0391906150c3565b9250601a549150601b54601a54613d1a919061506d565b9050613dfe565b7f0000000000000000000000008f2228912e657158c19f3cb8bb408eb6f59d3d2373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415613dbb576103e8601d54601c54613d88919061506d565b86613d9391906150f4565b613d9d91906150c3565b9250601c549150601d54601c54613db4919061506d565b9050613dfd565b6103e8601954601854613dce919061506d565b86613dd991906150f4565b613de391906150c3565b92506018549150601954601854613dfa919061506d565b90505b5b6000811115613e3957808284613e1491906150f4565b613e1e91906150c3565b601e81905550601e5483613e32919061514e565b601f819055505b5b60008386613e48919061514e565b905085600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e99919061514e565b9250508190555083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613eef919061506d565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613f539190614ee3565b60405180910390a380600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613faa919061506d565b925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161400e9190614ee3565b60405180910390a35050505050505050565b6000600267ffffffffffffffff81111561403d5761403c615352565b5b60405190808252806020026020018201604052801561406b5781602001602082028036833780820191505090505b509050308160008151811061408357614082615323565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412357600080fd5b505afa158015614137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415b91906145a6565b8160018151811061416f5761416e615323565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561429957614298307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61294b565b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016142fb959493929190614f35565b600060405180830381600087803b15801561431557600080fd5b505af1158015614329573d6000803e3d6000fd5b505050505050565b81600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561442157614420307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61294b565b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061446b6119b5565b426040518863ffffffff1660e01b815260040161448d96959493929190614c65565b6060604051808303818588803b1580156144a657600080fd5b505af11580156144ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144df9190614847565b5050505050565b6000813590506144f5816156b3565b92915050565b60008151905061450a816156b3565b92915050565b60008135905061451f816156ca565b92915050565b600081359050614534816156e1565b92915050565b600081519050614549816156e1565b92915050565b60008135905061455e816156f8565b92915050565b600081519050614573816156f8565b92915050565b60006020828403121561458f5761458e615381565b5b600061459d848285016144e6565b91505092915050565b6000602082840312156145bc576145bb615381565b5b60006145ca848285016144fb565b91505092915050565b6000602082840312156145e9576145e8615381565b5b60006145f784828501614510565b91505092915050565b6000806040838503121561461757614616615381565b5b6000614625858286016144e6565b9250506020614636858286016144e6565b9150509250929050565b60008060006060848603121561465957614658615381565b5b6000614667868287016144e6565b9350506020614678868287016144e6565b92505060406146898682870161454f565b9150509250925092565b600080604083850312156146aa576146a9615381565b5b60006146b8858286016144e6565b92505060206146c985828601614525565b9150509250929050565b600080604083850312156146ea576146e9615381565b5b60006146f8858286016144e6565b92505060206147098582860161454f565b9150509250929050565b60006020828403121561472957614728615381565b5b600061473784828501614525565b91505092915050565b60006020828403121561475657614755615381565b5b60006147648482850161453a565b91505092915050565b6000806040838503121561478457614783615381565b5b600061479285828601614525565b92505060206147a385828601614525565b9150509250929050565b6000602082840312156147c3576147c2615381565b5b60006147d18482850161454f565b91505092915050565b6000602082840312156147f0576147ef615381565b5b60006147fe84828501614564565b91505092915050565b6000806040838503121561481e5761481d615381565b5b600061482c8582860161454f565b925050602061483d8582860161454f565b9150509250929050565b6000806000606084860312156148605761485f615381565b5b600061486e86828701614564565b935050602061487f86828701614564565b925050604061489086828701614564565b9150509250925092565b600080600080600080600060e0888a0312156148b9576148b8615381565b5b60006148c78a828b0161454f565b97505060206148d88a828b0161454f565b96505060406148e98a828b0161454f565b95505060606148fa8a828b0161454f565b945050608061490b8a828b0161454f565b93505060a061491c8a828b0161454f565b92505060c061492d8a828b01614525565b91505092959891949750929550565b60006149488383614954565b60208301905092915050565b61495d81615182565b82525050565b61496c81615182565b82525050565b600061497d82615028565b614987818561504b565b935061499283615018565b8060005b838110156149c35781516149aa888261493c565b97506149b58361503e565b925050600181019050614996565b5085935050505092915050565b6149d9816151a6565b82525050565b6149e8816151e9565b82525050565b6149f7816151fb565b82525050565b6000614a0882615033565b614a12818561505c565b9350614a22818560208601615231565b614a2b81615386565b840191505092915050565b6000614a4360238361505c565b9150614a4e82615397565b604082019050919050565b6000614a6660268361505c565b9150614a71826153e6565b604082019050919050565b6000614a8960228361505c565b9150614a9482615435565b604082019050919050565b6000614aac602e8361505c565b9150614ab782615484565b604082019050919050565b6000614acf60208361505c565b9150614ada826154d3565b602082019050919050565b6000614af260158361505c565b9150614afd826154fc565b602082019050919050565b6000614b1560298361505c565b9150614b2082615525565b604082019050919050565b6000614b3860048361505c565b9150614b4382615574565b602082019050919050565b6000614b5b60338361505c565b9150614b668261559d565b604082019050919050565b6000614b7e60258361505c565b9150614b89826155ec565b604082019050919050565b6000614ba160248361505c565b9150614bac8261563b565b604082019050919050565b6000614bc4601e8361505c565b9150614bcf8261568a565b602082019050919050565b614be3816151d2565b82525050565b614bf2816151dc565b82525050565b6000602082019050614c0d6000830184614963565b92915050565b6000604082019050614c286000830185614963565b614c3560208301846149d0565b9392505050565b6000604082019050614c516000830185614963565b614c5e6020830184614bda565b9392505050565b600060c082019050614c7a6000830189614963565b614c876020830188614bda565b614c9460408301876149ee565b614ca160608301866149ee565b614cae6080830185614963565b614cbb60a0830184614bda565b979650505050505050565b6000602082019050614cdb60008301846149d0565b92915050565b6000608082019050614cf660008301876149d0565b614d0360208301866149d0565b614d106040830185614bda565b614d1d6060830184614bda565b95945050505050565b6000602082019050614d3b60008301846149df565b92915050565b60006020820190508181036000830152614d5b81846149fd565b905092915050565b60006020820190508181036000830152614d7c81614a36565b9050919050565b60006020820190508181036000830152614d9c81614a59565b9050919050565b60006020820190508181036000830152614dbc81614a7c565b9050919050565b60006020820190508181036000830152614ddc81614a9f565b9050919050565b60006020820190508181036000830152614dfc81614ac2565b9050919050565b60006020820190508181036000830152614e1c81614ae5565b9050919050565b60006020820190508181036000830152614e3c81614b08565b9050919050565b60006020820190508181036000830152614e5c81614b2b565b9050919050565b60006020820190508181036000830152614e7c81614b4e565b9050919050565b60006020820190508181036000830152614e9c81614b71565b9050919050565b60006020820190508181036000830152614ebc81614b94565b9050919050565b60006020820190508181036000830152614edc81614bb7565b9050919050565b6000602082019050614ef86000830184614bda565b92915050565b6000606082019050614f136000830186614bda565b614f2060208301856149d0565b614f2d60408301846149d0565b949350505050565b600060a082019050614f4a6000830188614bda565b614f5760208301876149ee565b8181036040830152614f698186614972565b9050614f786060830185614963565b614f856080830184614bda565b9695505050505050565b6000604082019050614fa46000830185614bda565b614fb16020830184614bda565b9392505050565b6000608082019050614fcd6000830187614bda565b614fda6020830186614bda565b614fe76040830185614bda565b614ff460608301846149d0565b95945050505050565b60006020820190506150126000830184614be9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615078826151d2565b9150615083836151d2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150b8576150b7615296565b5b828201905092915050565b60006150ce826151d2565b91506150d9836151d2565b9250826150e9576150e86152c5565b5b828204905092915050565b60006150ff826151d2565b915061510a836151d2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561514357615142615296565b5b828202905092915050565b6000615159826151d2565b9150615164836151d2565b92508282101561517757615176615296565b5b828203905092915050565b600061518d826151b2565b9050919050565b600061519f826151b2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151f48261520d565b9050919050565b6000615206826151d2565b9050919050565b60006152188261521f565b9050919050565b600061522a826151b2565b9050919050565b60005b8381101561524f578082015181840152602081019050615234565b8381111561525e576000848401525b50505050565b6000600282049050600182168061527c57607f821691505b602082108114156152905761528f6152f4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660008201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e736665723a206e6f7420616c6c6f7765640000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4865686500000000000000000000000000000000000000000000000000000000600082015250565b7f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60008201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f770000600082015250565b6156bc81615182565b81146156c757600080fd5b50565b6156d381615194565b81146156de57600080fd5b50565b6156ea816151a6565b81146156f557600080fd5b50565b615701816151d2565b811461570c57600080fd5b5056fea2646970667358221220cc0b8b001737030d0bcf98c24dae310d74a092291c7364810adeaf7b10cf5e7464736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001b0f907af2ef4be9b0672b2a249a92dfedc75c95

-----Decoded View---------------
Arg [0] : marketingWallet (address): 0x1B0F907Af2Ef4Be9B0672b2a249a92dfEdc75c95

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b0f907af2ef4be9b0672b2a249a92dfedc75c95


Deployed Bytecode Sourcemap

14682:17980:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21956:389;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18508:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19164:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16591:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18785:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16795:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15331:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24827:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16274:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26848:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18694:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16552:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21397:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21036:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22927:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16649:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16722:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20037:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16465:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21263:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15883:153;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;19333:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16239:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19039:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4771:148;;;;;;;;;;;;;:::i;:::-;;22353:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15274:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16385:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4557:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19804:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18599:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15545:217;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;25121:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20320:708;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21671:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30717:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21158:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22829:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25296:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23164:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16347:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16504:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16424:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16764:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16201:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16309:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18888:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23046:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20206:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32479:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4927:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19570:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21956:389;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22063:13:::1;22052:24;;:7;:24;;;:52;;;;22099:4;22080:24;;:7;:24;;;22052:52;:91;;;;22127:15;22108:35;;:7;:35;;;22052:91;22049:107;;;22146:8;::::0;::::1;22049:107;22185:4;22170:19;;:11;:19;;;22166:172;;;22232:4;22206:14;:23;22221:7;22206:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22166:172;;;22273:5;22258:20;;:11;:20;;;22254:84;;;22321:5;22295:14;:23;22310:7;22295:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22254:84;22166:172;21956:389:::0;;:::o;18508:83::-;18545:13;18578:5;18571:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18508:83;:::o;19164:161::-;19239:4;19256:39;19265:12;:10;:12::i;:::-;19279:7;19288:6;19256:8;:39::i;:::-;19313:4;19306:11;;19164:161;;;;:::o;16591:51::-;;;:::o;18785:95::-;18838:7;18865;;18858:14;;18785:95;:::o;16795:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15331:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;24827:286::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24938:3:::1;24918:16;:23;;24910:32;;;::::0;::::1;;24953:17;24973:21;24953:41;;25013:16;;;;;;;;;;;25005:34;;:100;25090:3;25068:16;25055:9;:30;;;;:::i;:::-;25054:40;;;;:::i;:::-;25005:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24899:214;24827:286:::0;:::o;16274:28::-;;;;:::o;26848:348::-;26944:4;26961:36;26971:6;26979:9;26990:6;26961:9;:36::i;:::-;27008:158;27031:6;27052:12;:10;:12::i;:::-;27134:6;27079:11;:19;27091:6;27079:19;;;;;;;;;;;;;;;:33;27099:12;:10;:12::i;:::-;27079:33;;;;;;;;;;;;;;;;:76;;;;:::i;:::-;27008:8;:158::i;:::-;27184:4;27177:11;;26848:348;;;;;:::o;18694:83::-;18735:5;18760:9;;;;;;;;;;;18753:16;;18694:83;:::o;16552:30::-;;;;:::o;21397:266::-;21485:4;21501:132;21524:12;:10;:12::i;:::-;21551:7;21611:10;21573:11;:25;21585:12;:10;:12::i;:::-;21573:25;;;;;;;;;;;;;;;:34;21599:7;21573:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;21501:8;:132::i;:::-;21651:4;21644:11;;21397:266;;;;:::o;21036:114::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21118:5:::1;21103:12;;:20;;;;;;;;;;;;;;;;;;21134:8;:6;:8::i;:::-;21036:114:::0;:::o;22927:111::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23026:4:::1;22996:18;:27;23015:7;22996:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22927:111:::0;:::o;16649:38::-;;;:::o;16722:33::-;;;;;;;;;;;;;:::o;20037:161::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20122:12:::1;:26;;;20112:6;:36;;20104:45;;;::::0;::::1;;20184:6;20160:12;:21;;:30;;;;20037:161:::0;:::o;16465:32::-;;;;:::o;21263:126::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21375:6:::1;21351:16;:21;21368:3;21351:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21263:126:::0;;:::o;15883:153::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19333:229::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19464:3:::1;19448:12;19433;:27;;;;:::i;:::-;:34;;19425:43;;;::::0;::::1;;19499:12;19479:17;:32;;;;19542:12;19522:17;:32;;;;19333:229:::0;;:::o;16239:28::-;;;;:::o;19039:117::-;19105:7;19132;:16;19140:7;19132:16;;;;;;;;;;;;;;;;19125:23;;19039:117;;;:::o;4771:148::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4878:1:::1;4841:40;;4862:6;::::0;::::1;;;;;;;;4841:40;;;;;;;;;;;;4909:1;4892:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4771:148::o:0;22353:107::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22447:5:::1;22421:14;:23;22436:7;22421:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22353:107:::0;:::o;15274:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;16385:32::-;;;;:::o;4557:79::-;4595:7;4622:6;;;;;;;;;;;4615:13;;4557:79;:::o;19804:225::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19939:3:::1;19923:12;19908;:27;;;;:::i;:::-;:34;;19900:43;;;::::0;::::1;;19970:12;19954:13;:28;;;;20009:12;19993:13;:28;;;;19804:225:::0;;:::o;18599:87::-;18638:13;18671:7;18664:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18599:87;:::o;15545:217::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25121:167::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25188:16:::1;25207:24;25225:4;25207:9;:24::i;:::-;25188:43;;25242:38;25260:4;25267:2;25271:8;25242:9;:38::i;:::-;25177:111;25121:167:::0;:::o;20320:708::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20505:4:::1;20495:7;;:14;;;;:::i;:::-;20487:3;20480;20470:7;;:13;;;;:::i;:::-;20469:21;;;;:::i;:::-;:41;;20461:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20621:4;20611:7;;:14;;;;:::i;:::-;20603:3;20596;20586:7;;:13;;;;:::i;:::-;20585:21;;;;:::i;:::-;:41;;20577:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;20688:13;20723:3;20715;20705:7;;:13;;;;:::i;:::-;20704:23;;;;:::i;:::-;20688:39;;20738:13;20772:3;20765;20755:7;;:13;;;;:::i;:::-;20754:21;;;;:::i;:::-;20738:37;;20786:18;20825:2;20818;20808:7;;:12;;;;:::i;:::-;20807:21;;;;:::i;:::-;20786:42;;20852:168;;;;;;;;20935:5;20852:168;;;;20972:5;20852:168;;;;20897:10;20852:168;;;;21001:7;20852:168;;;;::::0;20839:10:::1;:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20450:578;;;20320:708:::0;;;;;;;:::o;21671:277::-;21764:4;21781:137;21804:12;:10;:12::i;:::-;21831:7;21891:15;21853:11;:25;21865:12;:10;:12::i;:::-;21853:25;;;;;;;;;;;;;;;:34;21879:7;21853:34;;;;;;;;;;;;;;;;:54;;;;:::i;:::-;21781:8;:137::i;:::-;21936:4;21929:11;;21671:277;;;;:::o;30717:167::-;30795:4;30812:42;30822:12;:10;:12::i;:::-;30836:9;30847:6;30812:9;:42::i;:::-;30872:4;30865:11;;30717:167;;;;:::o;21158:97::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21241:6:::1;21227:11;:20;;;;21158:97:::0;:::o;22829:90::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22906:5:::1;22885:10;:18;;;:26;;;;;;;;;;;;;;;;;;22829:90:::0;:::o;25296:285::-;25379:10;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25428:1:::1;25410:20;;:6;:20;;;;25402:29;;;::::0;::::1;;25442:24;25476:6;25469:24;;;25502:4;25469:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25442:66;;25534:6;25527:23;;;25551:3;25556:16;25527:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25519:54;;25391:190;25296:285:::0;;;;:::o;23164:171::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23265:8:::1;23241:21;;:32;;;;;;;;;;;;;;;;;;23289:38;23318:8;23289:38;;;;;;:::i;:::-;;;;;;;;23164:171:::0;:::o;16347:31::-;;;;:::o;16504:39::-;;;;:::o;16424:32::-;;;;:::o;16764:24::-;;;;;;;;;;;;;:::o;16201:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16309:31::-;;;;:::o;18888:143::-;18969:7;18996:11;:18;19008:5;18996:18;;;;;;;;;;;;;;;:27;19015:7;18996:27;;;;;;;;;;;;;;;;18989:34;;18888:143;;;;:::o;23046:110::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23143:5:::1;23113:18;:27;23132:7;23113:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23046:110:::0;:::o;20206:106::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20302:1:::1;20275:16;;:29;;;;;;;;;;;;;;;;;;20206:106:::0;:::o;32479:180::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32595:5:::1;32561:12;:31;;;:39;;;;;;;;;;;;;;;;;;32646:5;32611:12;:32;;;:40;;;;;;;;;;;;;;;;;;32479:180:::0;;:::o;4927:281::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5050:1:::1;5030:22;;:8;:22;;;;5008:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;5163:8;5134:38;;5155:6;::::0;::::1;;;;;;;;5134:38;;;;;;;;;;;;5192:8;5183:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4927:281:::0;:::o;19570:226::-;4694:12;:10;:12::i;:::-;4684:22;;:6;;;;;;;;;;:22;;;4676:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19700:3:::1;19684:12;19669;:27;;;;:::i;:::-;:34;;19661:43;;;::::0;::::1;;19734:12;19715:16;:31;;;;19776:12;19757:16;:31;;;;19570:226:::0;;:::o;1094:98::-;1147:7;1174:10;1167:17;;1094:98;:::o;23437:335::-;23545:1;23528:19;;:5;:19;;;;23520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23626:1;23607:21;;:7;:21;;;;23599:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23710:6;23680:11;:18;23692:5;23680:18;;;;;;;;;;;;;;;:27;23699:7;23680:27;;;;;;;;;;;;;;;:36;;;;23748:7;23732:32;;23741:5;23732:32;;;23757:6;23732:32;;;;;;:::i;:::-;;;;;;;;23437:335;;;:::o;27415:3294::-;27519:1;27503:18;;:4;:18;;;;27495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27596:1;27582:16;;:2;:16;;;;27574:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27666:1;27657:6;:10;27649:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27756:5;27732:29;;:14;:20;27747:4;27732:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;27724:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;27811:5;27789:27;;:14;:18;27804:2;27789:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;27781:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;27843:12;;;;;;;;;;;27838:236;;27880:16;:22;27897:4;27880:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;27906:16;:20;27923:2;27906:20;;;;;;;;;;;;;;;;;;;;;;;;;27880:46;27872:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;28003:1;27975:24;27985:13;27975:9;:24::i;:::-;:29;:52;;;;28014:13;28008:19;;:2;:19;;;;27975:52;27967:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;27838:236;28090:10;:18;;;;;;;;;;;;28086:697;;;28136:7;:5;:7::i;:::-;28128:15;;:4;:15;;;;:32;;;;;28153:7;:5;:7::i;:::-;28147:13;;:2;:13;;;;28128:32;:77;;;;28178:6;28164:21;;:2;:21;;;;:41;;;;;28203:1;28189:16;;:2;:16;;;;28164:41;28128:77;28125:647;;;28252:13;28244:21;;:4;:21;;;:44;;;;28275:13;28269:19;;:2;:19;;;28244:44;28240:259;;;28335:18;:22;28354:2;28335:22;;;;;;;;;;;;;;;;;;;;;;;;;28334:23;:52;;;;;28362:18;:24;28381:4;28362:24;;;;;;;;;;;;;;;;;;;;;;;;;28361:25;28334:52;28331:149;;;28433:10;:22;;;28423:6;:32;;28415:41;;;;;;28331:149;28240:259;28534:15;28520:30;;:2;:30;;;;:53;;;;;28560:13;28554:19;;:2;:19;;;;28520:53;28517:240;;;28602:18;:22;28621:2;28602:22;;;;;;;;;;;;;;;;;;;;;;;;;28598:140;;28687:10;:26;;;28677:6;28661:13;28671:2;28661:9;:13::i;:::-;:22;;;;:::i;:::-;:52;;28653:61;;;;;;28598:140;28517:240;28125:647;28086:697;28807:13;28799:21;;:4;:21;;;:55;;;;;28838:15;28824:30;;:2;:30;;;;28799:55;:82;;;;;28859:18;:22;28878:2;28859:22;;;;;;;;;;;;;;;;;;;;;;;;;28858:23;28799:82;28795:647;;;28920:12;:31;;;;;;;;;;;;28916:204;;;29002:15;28984:11;:15;28996:2;28984:15;;;;;;;;;;;;;;;;:33;28976:42;;;;;;29078:12;:21;;;29059:15;:41;;;;:::i;:::-;29041:11;:15;29053:2;29041:15;;;;;;;;;;;;;;;:59;;;;28916:204;28795:647;;;29153:13;29145:21;;:4;:21;;;;:50;;;;;29171:18;:24;29190:4;29171:24;;;;;;;;;;;;;;;;;;;;;;;;;29170:25;29145:50;29141:301;;;29219:12;:32;;;;;;;;;;;;29215:212;;;29306:15;29284:12;:18;29297:4;29284:18;;;;;;;;;;;;;;;;:37;;29276:46;;;;;;29385:12;:21;;;29366:15;:41;;;;:::i;:::-;29345:12;:18;29358:4;29345:18;;;;;;;;;;;;;;;:62;;;;29215:212;29141:301;28795:647;29458:9;:26;;;;;;;;;;;;29454:464;;;29545:11;;29522:9;:20;;;:34;;;;:::i;:::-;29505:12;:52;29501:406;;29612:13;29604:21;;:4;:21;;;:76;;;;;29664:15;29650:30;;:2;:30;;;;29604:76;:124;;;;;29706:18;:22;29725:2;29706:22;;;;;;;;;;;;;;;;;;;;;;;;;29705:23;29604:124;29578:239;;;29771:25;29787:2;29791:4;29771:15;:25::i;:::-;29578:239;29501:406;;;29886:5;29857:9;:26;;;:34;;;;;;;;;;;;;;;;;;29501:406;29454:464;29930:24;30007:10;:26;;;29978:24;;29958:17;;:44;;;;:::i;:::-;29957:76;;29930:103;;30062:19;:53;;;;;30099:16;;;;;;;;;;;30098:17;30062:53;:91;;;;;30140:13;30132:21;;:4;:21;;;;30062:91;:129;;;;;30170:21;;;;;;;;;;;30062:129;30044:246;;;30218:60;30253:24;;30233:17;;:44;;;;:::i;:::-;30218:14;:60::i;:::-;30044:246;30363:12;30378:4;30363:19;;30483:18;:24;30502:4;30483:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;30511:18;:22;30530:2;30511:22;;;;;;;;;;;;;;;;;;;;;;;;;30483:50;30479:98;;;30560:5;30550:15;;30479:98;30660:41;30675:4;30681:2;30685:6;30693:7;30660:14;:41::i;:::-;27484:3225;;27415:3294;;;:::o;27204:180::-;27265:12;27242:9;:20;;:35;;;;27309:4;27288:9;:18;;;:25;;;;;;;;;;;;;;;;;;27348:4;27324:21;;:28;;;;;;;;;;;;;;;;;;27368:8;;;;;;;;;;27204:180::o;22472:349::-;22564:13;22553:24;;:7;:24;;;:52;;;;22600:4;22581:24;;:7;:24;;;22553:52;:91;;;;22628:15;22609:35;;:7;:35;;;22553:91;22550:107;;;22647:8;;;22550:107;22696:4;22681:19;;:11;:19;;;22677:136;;;22743:4;22717:14;:23;22732:7;22717:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22767:34;22780:7;22789:11;22767:34;;;;;;;:::i;:::-;;;;;;;;22677:136;22472:349;;:::o;23780:1039::-;16905:4;16886:16;;:23;;;;;;;;;;;;;;;;;;23857:22:::1;23882:21;23857:46;;23922:20;23969:24;;23965:1;23945:17;;:21;;;;:::i;:::-;:48;;;;:::i;:::-;23922:71;;24004:23;24045:12;24030;:27;;;;:::i;:::-;24004:53;;24089:1;24074:12;:16;24070:79;;;24107:30;24124:12;24107:16;:30::i;:::-;24070:79;24161:18;24182:21;24161:42;;24214:24;24298:12;24280:15;24262:14;24249:10;:27;;;;:::i;:::-;24241:54;;;;:::i;:::-;:69;;;;:::i;:::-;24214:96;;24345:1;24327:15;:19;:43;;;;;24369:1;24350:16;:20;24327:43;24323:192;;;24387:47;24400:15;24417:16;24387:12;:47::i;:::-;24454:49;24469:15;24486:16;24454:49;;;;;;;:::i;:::-;;;;;;;;24323:192;24535:24;24562:21;24535:48;;24617:1;24598:16;:20;24594:145;;;24635:16;;;;;;;;;;;:25;;:43;24661:16;24635:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24698:29;24710:16;24698:29;;;;;;:::i;:::-;;;;;;;;24594:145;24771:1;24751:17;:21;;;;24810:1;24783:24;:28;;;;23846:973;;;;;;16951:5:::0;16932:16;;:24;;;;;;;;;;;;;;;;;;23780:1039;:::o;30965:1506::-;31070:17;31102:25;31138:21;31176:7;31172:1003;;;31214:13;31204:23;;:6;:23;;;31200:750;;;31312:4;31290:16;;31271;;:35;;;;:::i;:::-;31261:6;:46;;;;:::i;:::-;31260:57;;;;:::i;:::-;31248:69;;31356:16;;31336:36;;31426:16;;31407;;:35;;;;:::i;:::-;31391:51;;31200:750;;;31481:13;31468:26;;:9;:26;;;31464:486;;;31581:4;31558:17;;31538;;:37;;;;:::i;:::-;31528:6;:48;;;;:::i;:::-;31527:59;;;;:::i;:::-;31515:71;;31625:17;;31605:37;;31697:17;;31677;;:37;;;;:::i;:::-;31661:53;;31464:486;;;31813:4;31794:13;;31778;;:29;;;;:::i;:::-;31768:6;:40;;;;:::i;:::-;31767:51;;;;:::i;:::-;31755:63;;31857:13;;31837:33;;31921:13;;31905;;:29;;;;:::i;:::-;31889:45;;31464:486;31200:750;31986:1;31970:13;:17;31966:198;;;32060:13;32040:17;32028:9;:29;;;;:::i;:::-;:45;;;;:::i;:::-;32008:17;:65;;;;32131:17;;32119:9;:29;;;;:::i;:::-;32092:24;:56;;;;31966:198;31172:1003;32195:15;32222:9;32213:6;:18;;;;:::i;:::-;32195:36;;32261:6;32242:7;:15;32250:6;32242:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;32304:9;32278:7;:22;32294:4;32278:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;32354:4;32329:42;;32338:6;32329:42;;;32361:9;32329:42;;;;;;:::i;:::-;;;;;;;;32404:7;32382;:18;32390:9;32382:18;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;32444:9;32427:36;;32436:6;32427:36;;;32455:7;32427:36;;;;;;:::i;:::-;;;;;;;;31059:1412;;;;30965:1506;;;;:::o;25589:692::-;25715:21;25753:1;25739:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25715:40;;25784:4;25766;25771:1;25766:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25810:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25800:4;25805:1;25800:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25903:11;25848;:26;25868:4;25848:26;;;;;;;;;;;;;;;:52;25883:15;25848:52;;;;;;;;;;;;;;;;:66;25845:166;;;25931:68;25948:4;25963:15;25981:17;25931:8;:68::i;:::-;25845:166;26049:15;:66;;;26130:11;26156:1;26200:4;26227;26247:15;26049:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25644:637;25589:692;:::o;26289:551::-;26430:11;26375;:26;26395:4;26375:26;;;;;;;;;;;;;;;:52;26410:15;26375:52;;;;;;;;;;;;;;;;:66;26372:166;;;26458:68;26475:4;26490:15;26508:17;26458:8;:68::i;:::-;26372:166;26580:15;:31;;;26619:9;26652:4;26672:11;26698:1;26741;26784:7;:5;:7::i;:::-;26806:15;26580:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26289:551;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:139::-;790:5;828:6;815:20;806:29;;844:33;871:5;844:33;:::i;:::-;744:139;;;;:::o;889:143::-;946:5;977:6;971:13;962:22;;993:33;1020:5;993:33;:::i;:::-;889:143;;;;:::o;1038:329::-;1097:6;1146:2;1134:9;1125:7;1121:23;1117:32;1114:119;;;1152:79;;:::i;:::-;1114:119;1272:1;1297:53;1342:7;1333:6;1322:9;1318:22;1297:53;:::i;:::-;1287:63;;1243:117;1038:329;;;;:::o;1373:351::-;1443:6;1492:2;1480:9;1471:7;1467:23;1463:32;1460:119;;;1498:79;;:::i;:::-;1460:119;1618:1;1643:64;1699:7;1690:6;1679:9;1675:22;1643:64;:::i;:::-;1633:74;;1589:128;1373:351;;;;:::o;1730:345::-;1797:6;1846:2;1834:9;1825:7;1821:23;1817:32;1814:119;;;1852:79;;:::i;:::-;1814:119;1972:1;1997:61;2050:7;2041:6;2030:9;2026:22;1997:61;:::i;:::-;1987:71;;1943:125;1730:345;;;;:::o;2081:474::-;2149:6;2157;2206:2;2194:9;2185:7;2181:23;2177:32;2174:119;;;2212:79;;:::i;:::-;2174:119;2332:1;2357:53;2402:7;2393:6;2382:9;2378:22;2357:53;:::i;:::-;2347:63;;2303:117;2459:2;2485:53;2530:7;2521:6;2510:9;2506:22;2485:53;:::i;:::-;2475:63;;2430:118;2081:474;;;;;:::o;2561:619::-;2638:6;2646;2654;2703:2;2691:9;2682:7;2678:23;2674:32;2671:119;;;2709:79;;:::i;:::-;2671:119;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2561:619;;;;;:::o;3186:468::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:119;;;3314:79;;:::i;:::-;3276:119;3434:1;3459:53;3504:7;3495:6;3484:9;3480:22;3459:53;:::i;:::-;3449:63;;3405:117;3561:2;3587:50;3629:7;3620:6;3609:9;3605:22;3587:50;:::i;:::-;3577:60;;3532:115;3186:468;;;;;:::o;3660:474::-;3728:6;3736;3785:2;3773:9;3764:7;3760:23;3756:32;3753:119;;;3791:79;;:::i;:::-;3753:119;3911:1;3936:53;3981:7;3972:6;3961:9;3957:22;3936:53;:::i;:::-;3926:63;;3882:117;4038:2;4064:53;4109:7;4100:6;4089:9;4085:22;4064:53;:::i;:::-;4054:63;;4009:118;3660:474;;;;;:::o;4140:323::-;4196:6;4245:2;4233:9;4224:7;4220:23;4216:32;4213:119;;;4251:79;;:::i;:::-;4213:119;4371:1;4396:50;4438:7;4429:6;4418:9;4414:22;4396:50;:::i;:::-;4386:60;;4342:114;4140:323;;;;:::o;4469:345::-;4536:6;4585:2;4573:9;4564:7;4560:23;4556:32;4553:119;;;4591:79;;:::i;:::-;4553:119;4711:1;4736:61;4789:7;4780:6;4769:9;4765:22;4736:61;:::i;:::-;4726:71;;4682:125;4469:345;;;;:::o;4820:462::-;4882:6;4890;4939:2;4927:9;4918:7;4914:23;4910:32;4907:119;;;4945:79;;:::i;:::-;4907:119;5065:1;5090:50;5132:7;5123:6;5112:9;5108:22;5090:50;:::i;:::-;5080:60;;5036:114;5189:2;5215:50;5257:7;5248:6;5237:9;5233:22;5215:50;:::i;:::-;5205:60;;5160:115;4820:462;;;;;:::o;5288:329::-;5347:6;5396:2;5384:9;5375:7;5371:23;5367:32;5364:119;;;5402:79;;:::i;:::-;5364:119;5522:1;5547:53;5592:7;5583:6;5572:9;5568:22;5547:53;:::i;:::-;5537:63;;5493:117;5288:329;;;;:::o;5623:351::-;5693:6;5742:2;5730:9;5721:7;5717:23;5713:32;5710:119;;;5748:79;;:::i;:::-;5710:119;5868:1;5893:64;5949:7;5940:6;5929:9;5925:22;5893:64;:::i;:::-;5883:74;;5839:128;5623:351;;;;:::o;5980:474::-;6048:6;6056;6105:2;6093:9;6084:7;6080:23;6076:32;6073:119;;;6111:79;;:::i;:::-;6073:119;6231:1;6256:53;6301:7;6292:6;6281:9;6277:22;6256:53;:::i;:::-;6246:63;;6202:117;6358:2;6384:53;6429:7;6420:6;6409:9;6405:22;6384:53;:::i;:::-;6374:63;;6329:118;5980:474;;;;;:::o;6460:663::-;6548:6;6556;6564;6613:2;6601:9;6592:7;6588:23;6584:32;6581:119;;;6619:79;;:::i;:::-;6581:119;6739:1;6764:64;6820:7;6811:6;6800:9;6796:22;6764:64;:::i;:::-;6754:74;;6710:128;6877:2;6903:64;6959:7;6950:6;6939:9;6935:22;6903:64;:::i;:::-;6893:74;;6848:129;7016:2;7042:64;7098:7;7089:6;7078:9;7074:22;7042:64;:::i;:::-;7032:74;;6987:129;6460:663;;;;;:::o;7129:1197::-;7239:6;7247;7255;7263;7271;7279;7287;7336:3;7324:9;7315:7;7311:23;7307:33;7304:120;;;7343:79;;:::i;:::-;7304:120;7463:1;7488:53;7533:7;7524:6;7513:9;7509:22;7488:53;:::i;:::-;7478:63;;7434:117;7590:2;7616:53;7661:7;7652:6;7641:9;7637:22;7616:53;:::i;:::-;7606:63;;7561:118;7718:2;7744:53;7789:7;7780:6;7769:9;7765:22;7744:53;:::i;:::-;7734:63;;7689:118;7846:2;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7817:118;7974:3;8001:53;8046:7;8037:6;8026:9;8022:22;8001:53;:::i;:::-;7991:63;;7945:119;8103:3;8130:53;8175:7;8166:6;8155:9;8151:22;8130:53;:::i;:::-;8120:63;;8074:119;8232:3;8259:50;8301:7;8292:6;8281:9;8277:22;8259:50;:::i;:::-;8249:60;;8203:116;7129:1197;;;;;;;;;;:::o;8332:179::-;8401:10;8422:46;8464:3;8456:6;8422:46;:::i;:::-;8500:4;8495:3;8491:14;8477:28;;8332:179;;;;:::o;8517:108::-;8594:24;8612:5;8594:24;:::i;:::-;8589:3;8582:37;8517:108;;:::o;8631:118::-;8718:24;8736:5;8718:24;:::i;:::-;8713:3;8706:37;8631:118;;:::o;8785:732::-;8904:3;8933:54;8981:5;8933:54;:::i;:::-;9003:86;9082:6;9077:3;9003:86;:::i;:::-;8996:93;;9113:56;9163:5;9113:56;:::i;:::-;9192:7;9223:1;9208:284;9233:6;9230:1;9227:13;9208:284;;;9309:6;9303:13;9336:63;9395:3;9380:13;9336:63;:::i;:::-;9329:70;;9422:60;9475:6;9422:60;:::i;:::-;9412:70;;9268:224;9255:1;9252;9248:9;9243:14;;9208:284;;;9212:14;9508:3;9501:10;;8909:608;;;8785:732;;;;:::o;9523:109::-;9604:21;9619:5;9604:21;:::i;:::-;9599:3;9592:34;9523:109;;:::o;9638:185::-;9752:64;9810:5;9752:64;:::i;:::-;9747:3;9740:77;9638:185;;:::o;9829:147::-;9924:45;9963:5;9924:45;:::i;:::-;9919:3;9912:58;9829:147;;:::o;9982:364::-;10070:3;10098:39;10131:5;10098:39;:::i;:::-;10153:71;10217:6;10212:3;10153:71;:::i;:::-;10146:78;;10233:52;10278:6;10273:3;10266:4;10259:5;10255:16;10233:52;:::i;:::-;10310:29;10332:6;10310:29;:::i;:::-;10305:3;10301:39;10294:46;;10074:272;9982:364;;;;:::o;10352:366::-;10494:3;10515:67;10579:2;10574:3;10515:67;:::i;:::-;10508:74;;10591:93;10680:3;10591:93;:::i;:::-;10709:2;10704:3;10700:12;10693:19;;10352:366;;;:::o;10724:::-;10866:3;10887:67;10951:2;10946:3;10887:67;:::i;:::-;10880:74;;10963:93;11052:3;10963:93;:::i;:::-;11081:2;11076:3;11072:12;11065:19;;10724:366;;;:::o;11096:::-;11238:3;11259:67;11323:2;11318:3;11259:67;:::i;:::-;11252:74;;11335:93;11424:3;11335:93;:::i;:::-;11453:2;11448:3;11444:12;11437:19;;11096:366;;;:::o;11468:::-;11610:3;11631:67;11695:2;11690:3;11631:67;:::i;:::-;11624:74;;11707:93;11796:3;11707:93;:::i;:::-;11825:2;11820:3;11816:12;11809:19;;11468:366;;;:::o;11840:::-;11982:3;12003:67;12067:2;12062:3;12003:67;:::i;:::-;11996:74;;12079:93;12168:3;12079:93;:::i;:::-;12197:2;12192:3;12188:12;12181:19;;11840:366;;;:::o;12212:::-;12354:3;12375:67;12439:2;12434:3;12375:67;:::i;:::-;12368:74;;12451:93;12540:3;12451:93;:::i;:::-;12569:2;12564:3;12560:12;12553:19;;12212:366;;;:::o;12584:::-;12726:3;12747:67;12811:2;12806:3;12747:67;:::i;:::-;12740:74;;12823:93;12912:3;12823:93;:::i;:::-;12941:2;12936:3;12932:12;12925:19;;12584:366;;;:::o;12956:365::-;13098:3;13119:66;13183:1;13178:3;13119:66;:::i;:::-;13112:73;;13194:93;13283:3;13194:93;:::i;:::-;13312:2;13307:3;13303:12;13296:19;;12956:365;;;:::o;13327:366::-;13469:3;13490:67;13554:2;13549:3;13490:67;:::i;:::-;13483:74;;13566:93;13655:3;13566:93;:::i;:::-;13684:2;13679:3;13675:12;13668:19;;13327:366;;;:::o;13699:::-;13841:3;13862:67;13926:2;13921:3;13862:67;:::i;:::-;13855:74;;13938:93;14027:3;13938:93;:::i;:::-;14056:2;14051:3;14047:12;14040:19;;13699:366;;;:::o;14071:::-;14213:3;14234:67;14298:2;14293:3;14234:67;:::i;:::-;14227:74;;14310:93;14399:3;14310:93;:::i;:::-;14428:2;14423:3;14419:12;14412:19;;14071:366;;;:::o;14443:::-;14585:3;14606:67;14670:2;14665:3;14606:67;:::i;:::-;14599:74;;14682:93;14771:3;14682:93;:::i;:::-;14800:2;14795:3;14791:12;14784:19;;14443:366;;;:::o;14815:118::-;14902:24;14920:5;14902:24;:::i;:::-;14897:3;14890:37;14815:118;;:::o;14939:112::-;15022:22;15038:5;15022:22;:::i;:::-;15017:3;15010:35;14939:112;;:::o;15057:222::-;15150:4;15188:2;15177:9;15173:18;15165:26;;15201:71;15269:1;15258:9;15254:17;15245:6;15201:71;:::i;:::-;15057:222;;;;:::o;15285:320::-;15400:4;15438:2;15427:9;15423:18;15415:26;;15451:71;15519:1;15508:9;15504:17;15495:6;15451:71;:::i;:::-;15532:66;15594:2;15583:9;15579:18;15570:6;15532:66;:::i;:::-;15285:320;;;;;:::o;15611:332::-;15732:4;15770:2;15759:9;15755:18;15747:26;;15783:71;15851:1;15840:9;15836:17;15827:6;15783:71;:::i;:::-;15864:72;15932:2;15921:9;15917:18;15908:6;15864:72;:::i;:::-;15611:332;;;;;:::o;15949:807::-;16198:4;16236:3;16225:9;16221:19;16213:27;;16250:71;16318:1;16307:9;16303:17;16294:6;16250:71;:::i;:::-;16331:72;16399:2;16388:9;16384:18;16375:6;16331:72;:::i;:::-;16413:80;16489:2;16478:9;16474:18;16465:6;16413:80;:::i;:::-;16503;16579:2;16568:9;16564:18;16555:6;16503:80;:::i;:::-;16593:73;16661:3;16650:9;16646:19;16637:6;16593:73;:::i;:::-;16676;16744:3;16733:9;16729:19;16720:6;16676:73;:::i;:::-;15949:807;;;;;;;;;:::o;16762:210::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16900:65;16962:1;16951:9;16947:17;16938:6;16900:65;:::i;:::-;16762:210;;;;:::o;16978:529::-;17143:4;17181:3;17170:9;17166:19;17158:27;;17195:65;17257:1;17246:9;17242:17;17233:6;17195:65;:::i;:::-;17270:66;17332:2;17321:9;17317:18;17308:6;17270:66;:::i;:::-;17346:72;17414:2;17403:9;17399:18;17390:6;17346:72;:::i;:::-;17428;17496:2;17485:9;17481:18;17472:6;17428:72;:::i;:::-;16978:529;;;;;;;:::o;17513:276::-;17633:4;17671:2;17660:9;17656:18;17648:26;;17684:98;17779:1;17768:9;17764:17;17755:6;17684:98;:::i;:::-;17513:276;;;;:::o;17795:313::-;17908:4;17946:2;17935:9;17931:18;17923:26;;17995:9;17989:4;17985:20;17981:1;17970:9;17966:17;17959:47;18023:78;18096:4;18087:6;18023:78;:::i;:::-;18015:86;;17795:313;;;;:::o;18114:419::-;18280:4;18318:2;18307:9;18303:18;18295:26;;18367:9;18361:4;18357:20;18353:1;18342:9;18338:17;18331:47;18395:131;18521:4;18395:131;:::i;:::-;18387:139;;18114:419;;;:::o;18539:::-;18705:4;18743:2;18732:9;18728:18;18720:26;;18792:9;18786:4;18782:20;18778:1;18767:9;18763:17;18756:47;18820:131;18946:4;18820:131;:::i;:::-;18812:139;;18539:419;;;:::o;18964:::-;19130:4;19168:2;19157:9;19153:18;19145:26;;19217:9;19211:4;19207:20;19203:1;19192:9;19188:17;19181:47;19245:131;19371:4;19245:131;:::i;:::-;19237:139;;18964:419;;;:::o;19389:::-;19555:4;19593:2;19582:9;19578:18;19570:26;;19642:9;19636:4;19632:20;19628:1;19617:9;19613:17;19606:47;19670:131;19796:4;19670:131;:::i;:::-;19662:139;;19389:419;;;:::o;19814:::-;19980:4;20018:2;20007:9;20003:18;19995:26;;20067:9;20061:4;20057:20;20053:1;20042:9;20038:17;20031:47;20095:131;20221:4;20095:131;:::i;:::-;20087:139;;19814:419;;;:::o;20239:::-;20405:4;20443:2;20432:9;20428:18;20420:26;;20492:9;20486:4;20482:20;20478:1;20467:9;20463:17;20456:47;20520:131;20646:4;20520:131;:::i;:::-;20512:139;;20239:419;;;:::o;20664:::-;20830:4;20868:2;20857:9;20853:18;20845:26;;20917:9;20911:4;20907:20;20903:1;20892:9;20888:17;20881:47;20945:131;21071:4;20945:131;:::i;:::-;20937:139;;20664:419;;;:::o;21089:::-;21255:4;21293:2;21282:9;21278:18;21270:26;;21342:9;21336:4;21332:20;21328:1;21317:9;21313:17;21306:47;21370:131;21496:4;21370:131;:::i;:::-;21362:139;;21089:419;;;:::o;21514:::-;21680:4;21718:2;21707:9;21703:18;21695:26;;21767:9;21761:4;21757:20;21753:1;21742:9;21738:17;21731:47;21795:131;21921:4;21795:131;:::i;:::-;21787:139;;21514:419;;;:::o;21939:::-;22105:4;22143:2;22132:9;22128:18;22120:26;;22192:9;22186:4;22182:20;22178:1;22167:9;22163:17;22156:47;22220:131;22346:4;22220:131;:::i;:::-;22212:139;;21939:419;;;:::o;22364:::-;22530:4;22568:2;22557:9;22553:18;22545:26;;22617:9;22611:4;22607:20;22603:1;22592:9;22588:17;22581:47;22645:131;22771:4;22645:131;:::i;:::-;22637:139;;22364:419;;;:::o;22789:::-;22955:4;22993:2;22982:9;22978:18;22970:26;;23042:9;23036:4;23032:20;23028:1;23017:9;23013:17;23006:47;23070:131;23196:4;23070:131;:::i;:::-;23062:139;;22789:419;;;:::o;23214:222::-;23307:4;23345:2;23334:9;23330:18;23322:26;;23358:71;23426:1;23415:9;23411:17;23402:6;23358:71;:::i;:::-;23214:222;;;;:::o;23442:418::-;23579:4;23617:2;23606:9;23602:18;23594:26;;23630:71;23698:1;23687:9;23683:17;23674:6;23630:71;:::i;:::-;23711:66;23773:2;23762:9;23758:18;23749:6;23711:66;:::i;:::-;23787;23849:2;23838:9;23834:18;23825:6;23787:66;:::i;:::-;23442:418;;;;;;:::o;23866:831::-;24129:4;24167:3;24156:9;24152:19;24144:27;;24181:71;24249:1;24238:9;24234:17;24225:6;24181:71;:::i;:::-;24262:80;24338:2;24327:9;24323:18;24314:6;24262:80;:::i;:::-;24389:9;24383:4;24379:20;24374:2;24363:9;24359:18;24352:48;24417:108;24520:4;24511:6;24417:108;:::i;:::-;24409:116;;24535:72;24603:2;24592:9;24588:18;24579:6;24535:72;:::i;:::-;24617:73;24685:3;24674:9;24670:19;24661:6;24617:73;:::i;:::-;23866:831;;;;;;;;:::o;24703:332::-;24824:4;24862:2;24851:9;24847:18;24839:26;;24875:71;24943:1;24932:9;24928:17;24919:6;24875:71;:::i;:::-;24956:72;25024:2;25013:9;25009:18;25000:6;24956:72;:::i;:::-;24703:332;;;;;:::o;25041:541::-;25212:4;25250:3;25239:9;25235:19;25227:27;;25264:71;25332:1;25321:9;25317:17;25308:6;25264:71;:::i;:::-;25345:72;25413:2;25402:9;25398:18;25389:6;25345:72;:::i;:::-;25427;25495:2;25484:9;25480:18;25471:6;25427:72;:::i;:::-;25509:66;25571:2;25560:9;25556:18;25547:6;25509:66;:::i;:::-;25041:541;;;;;;;:::o;25588:214::-;25677:4;25715:2;25704:9;25700:18;25692:26;;25728:67;25792:1;25781:9;25777:17;25768:6;25728:67;:::i;:::-;25588:214;;;;:::o;25889:132::-;25956:4;25979:3;25971:11;;26009:4;26004:3;26000:14;25992:22;;25889:132;;;:::o;26027:114::-;26094:6;26128:5;26122:12;26112:22;;26027:114;;;:::o;26147:99::-;26199:6;26233:5;26227:12;26217:22;;26147:99;;;:::o;26252:113::-;26322:4;26354;26349:3;26345:14;26337:22;;26252:113;;;:::o;26371:184::-;26470:11;26504:6;26499:3;26492:19;26544:4;26539:3;26535:14;26520:29;;26371:184;;;;:::o;26561:169::-;26645:11;26679:6;26674:3;26667:19;26719:4;26714:3;26710:14;26695:29;;26561:169;;;;:::o;26736:305::-;26776:3;26795:20;26813:1;26795:20;:::i;:::-;26790:25;;26829:20;26847:1;26829:20;:::i;:::-;26824:25;;26983:1;26915:66;26911:74;26908:1;26905:81;26902:107;;;26989:18;;:::i;:::-;26902:107;27033:1;27030;27026:9;27019:16;;26736:305;;;;:::o;27047:185::-;27087:1;27104:20;27122:1;27104:20;:::i;:::-;27099:25;;27138:20;27156:1;27138:20;:::i;:::-;27133:25;;27177:1;27167:35;;27182:18;;:::i;:::-;27167:35;27224:1;27221;27217:9;27212:14;;27047:185;;;;:::o;27238:348::-;27278:7;27301:20;27319:1;27301:20;:::i;:::-;27296:25;;27335:20;27353:1;27335:20;:::i;:::-;27330:25;;27523:1;27455:66;27451:74;27448:1;27445:81;27440:1;27433:9;27426:17;27422:105;27419:131;;;27530:18;;:::i;:::-;27419:131;27578:1;27575;27571:9;27560:20;;27238:348;;;;:::o;27592:191::-;27632:4;27652:20;27670:1;27652:20;:::i;:::-;27647:25;;27686:20;27704:1;27686:20;:::i;:::-;27681:25;;27725:1;27722;27719:8;27716:34;;;27730:18;;:::i;:::-;27716:34;27775:1;27772;27768:9;27760:17;;27592:191;;;;:::o;27789:96::-;27826:7;27855:24;27873:5;27855:24;:::i;:::-;27844:35;;27789:96;;;:::o;27891:104::-;27936:7;27965:24;27983:5;27965:24;:::i;:::-;27954:35;;27891:104;;;:::o;28001:90::-;28035:7;28078:5;28071:13;28064:21;28053:32;;28001:90;;;:::o;28097:126::-;28134:7;28174:42;28167:5;28163:54;28152:65;;28097:126;;;:::o;28229:77::-;28266:7;28295:5;28284:16;;28229:77;;;:::o;28312:86::-;28347:7;28387:4;28380:5;28376:16;28365:27;;28312:86;;;:::o;28404:153::-;28481:9;28514:37;28545:5;28514:37;:::i;:::-;28501:50;;28404:153;;;:::o;28563:121::-;28621:9;28654:24;28672:5;28654:24;:::i;:::-;28641:37;;28563:121;;;:::o;28690:126::-;28740:9;28773:37;28804:5;28773:37;:::i;:::-;28760:50;;28690:126;;;:::o;28822:113::-;28872:9;28905:24;28923:5;28905:24;:::i;:::-;28892:37;;28822:113;;;:::o;28941:307::-;29009:1;29019:113;29033:6;29030:1;29027:13;29019:113;;;29118:1;29113:3;29109:11;29103:18;29099:1;29094:3;29090:11;29083:39;29055:2;29052:1;29048:10;29043:15;;29019:113;;;29150:6;29147:1;29144:13;29141:101;;;29230:1;29221:6;29216:3;29212:16;29205:27;29141:101;28990:258;28941:307;;;:::o;29254:320::-;29298:6;29335:1;29329:4;29325:12;29315:22;;29382:1;29376:4;29372:12;29403:18;29393:81;;29459:4;29451:6;29447:17;29437:27;;29393:81;29521:2;29513:6;29510:14;29490:18;29487:38;29484:84;;;29540:18;;:::i;:::-;29484:84;29305:269;29254:320;;;:::o;29580:180::-;29628:77;29625:1;29618:88;29725:4;29722:1;29715:15;29749:4;29746:1;29739:15;29766:180;29814:77;29811:1;29804:88;29911:4;29908:1;29901:15;29935:4;29932:1;29925:15;29952:180;30000:77;29997:1;29990:88;30097:4;30094:1;30087:15;30121:4;30118:1;30111:15;30138:180;30186:77;30183:1;30176:88;30283:4;30280:1;30273:15;30307:4;30304:1;30297:15;30324:180;30372:77;30369:1;30362:88;30469:4;30466:1;30459:15;30493:4;30490:1;30483:15;30633:117;30742:1;30739;30732:12;30756:102;30797:6;30848:2;30844:7;30839:2;30832:5;30828:14;30824:28;30814:38;;30756:102;;;:::o;30864:222::-;31004:34;31000:1;30992:6;30988:14;30981:58;31073:5;31068:2;31060:6;31056:15;31049:30;30864:222;:::o;31092:225::-;31232:34;31228:1;31220:6;31216:14;31209:58;31301:8;31296:2;31288:6;31284:15;31277:33;31092:225;:::o;31323:221::-;31463:34;31459:1;31451:6;31447:14;31440:58;31532:4;31527:2;31519:6;31515:15;31508:29;31323:221;:::o;31550:233::-;31690:34;31686:1;31678:6;31674:14;31667:58;31759:16;31754:2;31746:6;31742:15;31735:41;31550:233;:::o;31789:182::-;31929:34;31925:1;31917:6;31913:14;31906:58;31789:182;:::o;31977:171::-;32117:23;32113:1;32105:6;32101:14;32094:47;31977:171;:::o;32154:228::-;32294:34;32290:1;32282:6;32278:14;32271:58;32363:11;32358:2;32350:6;32346:15;32339:36;32154:228;:::o;32388:154::-;32528:6;32524:1;32516:6;32512:14;32505:30;32388:154;:::o;32548:238::-;32688:34;32684:1;32676:6;32672:14;32665:58;32757:21;32752:2;32744:6;32740:15;32733:46;32548:238;:::o;32792:224::-;32932:34;32928:1;32920:6;32916:14;32909:58;33001:7;32996:2;32988:6;32984:15;32977:32;32792:224;:::o;33022:223::-;33162:34;33158:1;33150:6;33146:14;33139:58;33231:6;33226:2;33218:6;33214:15;33207:31;33022:223;:::o;33251:180::-;33391:32;33387:1;33379:6;33375:14;33368:56;33251:180;:::o;33437:122::-;33510:24;33528:5;33510:24;:::i;:::-;33503:5;33500:35;33490:63;;33549:1;33546;33539:12;33490:63;33437:122;:::o;33565:138::-;33646:32;33672:5;33646:32;:::i;:::-;33639:5;33636:43;33626:71;;33693:1;33690;33683:12;33626:71;33565:138;:::o;33709:116::-;33779:21;33794:5;33779:21;:::i;:::-;33772:5;33769:32;33759:60;;33815:1;33812;33805:12;33759:60;33709:116;:::o;33831:122::-;33904:24;33922:5;33904:24;:::i;:::-;33897:5;33894:35;33884:63;;33943:1;33940;33933:12;33884:63;33831:122;:::o

Swarm Source

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