ETH Price: $3,334.68 (-3.36%)
Gas: 8.32 Gwei

Token

Betav3rse (BETA)
 

Overview

Max Total Supply

16,700,000,000 BETA

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,621,164.963703958521337962 BETA

Value
$0.00
0x8437db666a05d81fb770a5339a0b337c0f9c2b59
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:
Betav3rse

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-17
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.17;

/*

www.betav3rse.com

*/


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using this function
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _createSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }


    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


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

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

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

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

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

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

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

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

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

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

contract Betav3rse is ERC20, Ownable {

    IUniswapV2Router02 public uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public liquidityFee = 2;
    uint256 public marketingFee = 2;
    
    uint256 public swapTokensAtAmount = 5000000 * (10**18);
    uint256 public maxTransactionAmount = 16700000000 * (10**18);
    uint256 public maxWalletToken = 334000000 * (10**18);
   
    // exlcude from fees and max wallet
    mapping (address => bool) private _isExcludedFromFees;

    address payable public marketingWallet = payable(0x2A33caF29A8E6CB03Bb891fD501ECD171A7CedD6);

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

    event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("Betav3rse", "BETA") {
    	IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        // exclude from paying fees or having max wallet limit
        excludeFromFees(owner(), true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(address(this), true);
        
        /*
            an internal function that is only called here,
            and CANNOT be called ever again
        */
        _createSupply(owner(), 16700000000 * (10**18));
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

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

        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            require(amount <= maxTransactionAmount, "amount must be less than or equal to maxTx limit");
        }

         if(from==uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
            uint256 contractBalanceRecepient = balanceOf(to);
            require(contractBalanceRecepient + amount <= maxWalletToken, "Exceeds maximum wallet token amount.");
        }

    	uint256 contractTokenBalance = balanceOf(address(this));
        
        bool overMinTokenBalance = contractTokenBalance >= swapTokensAtAmount;
       
        if(
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            to==uniswapV2Pair && 
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = swapTokensAtAmount;
            swapAndLiquify(contractTokenBalance);
        }

         // if any account belongs to _isExcludedFromFee account then remove the fee
        if(
            !_isExcludedFromFees[from] && 
            !_isExcludedFromFees[to] &&
            (from==uniswapV2Pair || to==uniswapV2Pair)
        ) {
            uint256 fees = amount*(marketingFee+liquidityFee)/100;
            amount = amount-fees;

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

        super._transfer(from, to, amount);

    }

     function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 tokensForLiquidity = contractTokenBalance*liquidityFee/(liquidityFee+marketingFee);
        // split the Liquidity token balance into halves
        uint256 half = tokensForLiquidity/2;
        uint256 otherHalf = tokensForLiquidity-half;

        // capture the contract's current ETH balance.
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); 

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance-initialBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance);

        // swap and Send ether to wallets
        swapTokensForEth(contractTokenBalance-tokensForLiquidity);
        marketingWallet.transfer(address(this).balance);

    }

    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(allowance(address(this), address(uniswapV2Router)) < tokenAmount) {
          _approve(address(this), address(uniswapV2Router), ~uint256(0));
        }

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

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

    receive() external payable {

  	}

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }
    
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
   
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setMaxWalletLimit(uint256 _newLimit) public onlyOwner {
        maxWalletToken = _newLimit;
        require(maxWalletToken >= totalSupply()/500, "value too low");
    }

    function setMaxTxAmount(uint256 _newLimit) public onlyOwner {
        maxTransactionAmount = _newLimit;
        require(maxTransactionAmount >= totalSupply()/500, "value too low");
    }

    function setSwapTokensAtAmouunt(uint256 _newAmount) public onlyOwner {
        swapTokensAtAmount = _newAmount;
    }

    function updateFee(uint256 _liqFee, uint256 _markFee) public onlyOwner {
       require(_liqFee <= 5 && _markFee <= 10, "tax too high");
        liquidityFee = _liqFee;
        marketingFee = _markFee;
    }

    function updateMarketingWallet(address payable _marketing) public onlyOwner {
        marketingWallet = _marketing;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","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":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmouunt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"_liqFee","type":"uint256"},{"internalType":"uint256","name":"_markFee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketing","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600660156101000a81548160ff021916908315150217905550600260075560026008556a0422ca8b0a00a4250000006009556b35f5ea8e06805d92bc000000600a556b0114474047cf5e080e000000600b55732a33caf29a8e6cb03bb891fd501ecd171a7cedd6600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000ba57600080fd5b506040518060400160405280600981526020017f42657461763372736500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4245544100000000000000000000000000000000000000000000000000000000815250816003908162000138919062000ac6565b5080600490816200014a919062000ac6565b5050506200016d620001616200040360201b60201c565b6200040b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fa919062000c17565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000288919062000c17565b6040518363ffffffff1660e01b8152600401620002a792919062000c5a565b6020604051808303816000875af1158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed919062000c17565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200038662000378620004d160201b60201c565b6001620004fb60201b60201c565b620003bb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004fb60201b60201c565b620003ce306001620004fb60201b60201c565b620003fb620003e2620004d160201b60201c565b6b35f5ea8e06805d92bc000000620006ca60201b60201c565b505062000ee6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200050b6200040360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000531620004d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200058a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005819062000ce8565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036200061f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006169062000d80565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620006be919062000dbf565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200073c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007339062000e2c565b60405180910390fd5b62000750600083836200084260201b60201c565b806002600082825462000764919062000e7d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007bb919062000e7d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000822919062000ec9565b60405180910390a36200083e600083836200084760201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008ce57607f821691505b602082108103620008e457620008e362000886565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200094e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200090f565b6200095a86836200090f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009a7620009a16200099b8462000972565b6200097c565b62000972565b9050919050565b6000819050919050565b620009c38362000986565b620009db620009d282620009ae565b8484546200091c565b825550505050565b600090565b620009f2620009e3565b620009ff818484620009b8565b505050565b5b8181101562000a275762000a1b600082620009e8565b60018101905062000a05565b5050565b601f82111562000a765762000a4081620008ea565b62000a4b84620008ff565b8101602085101562000a5b578190505b62000a7362000a6a85620008ff565b83018262000a04565b50505b505050565b600082821c905092915050565b600062000a9b6000198460080262000a7b565b1980831691505092915050565b600062000ab6838362000a88565b9150826002028217905092915050565b62000ad1826200084c565b67ffffffffffffffff81111562000aed5762000aec62000857565b5b62000af98254620008b5565b62000b0682828562000a2b565b600060209050601f83116001811462000b3e576000841562000b29578287015190505b62000b35858262000aa8565b86555062000ba5565b601f19841662000b4e86620008ea565b60005b8281101562000b785784890151825560018201915060208501945060208101905062000b51565b8683101562000b98578489015162000b94601f89168262000a88565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bdf8262000bb2565b9050919050565b62000bf18162000bd2565b811462000bfd57600080fd5b50565b60008151905062000c118162000be6565b92915050565b60006020828403121562000c305762000c2f62000bad565b5b600062000c408482850162000c00565b91505092915050565b62000c548162000bd2565b82525050565b600060408201905062000c71600083018562000c49565b62000c80602083018462000c49565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000cd060208362000c87565b915062000cdd8262000c98565b602082019050919050565b6000602082019050818103600083015262000d038162000cc1565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062000d68602a8362000c87565b915062000d758262000d0a565b604082019050919050565b6000602082019050818103600083015262000d9b8162000d59565b9050919050565b60008115159050919050565b62000db98162000da2565b82525050565b600060208201905062000dd6600083018462000dae565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e14601f8362000c87565b915062000e218262000ddc565b602082019050919050565b6000602082019050818103600083015262000e478162000e05565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e8a8262000972565b915062000e978362000972565b925082820190508082111562000eb25762000eb162000e4e565b5b92915050565b62000ec38162000972565b82525050565b600060208201905062000ee0600083018462000eb8565b92915050565b60805161362f62000f1e60003960008181610af70152818161191d01528181611ab401528181611bdb0152611c30015261362f6000f3fe6080604052600436106101dc5760003560e01c8063750c11b611610102578063c024666811610095578063e2f4560511610064578063e2f45605146106e1578063e6c75f711461070c578063ec28438a14610737578063f2fde38b14610760576101e3565b8063c024666814610627578063c49b9a8014610650578063c8c8ebe414610679578063dd62ed3e146106a4576101e3565b806398118cb4116100d157806398118cb414610559578063a457c2d714610584578063a9059cbb146105c1578063aacebbe3146105fe576101e3565b8063750c11b6146104af57806375f0a874146104d85780638da5cb5b1461050357806395d89b411461052e576101e3565b8063395093511161017a5780636b67c4df116101495780636b67c4df1461040757806370a0823114610432578063715018a61461046f578063728d41c914610486576101e3565b8063395093511461033757806349bd5a5e146103745780634a74bb021461039f5780634fbee193146103ca576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632740c197146102e3578063313ce5671461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610789565b60405161020a9190612560565b60405180910390f35b34801561021f57600080fd5b5061023a6004803603810190610235919061261b565b61081b565b6040516102479190612676565b60405180910390f35b34801561025c57600080fd5b50610265610839565b60405161027291906126f0565b60405180910390f35b34801561028757600080fd5b5061029061085f565b60405161029d919061271a565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612735565b610869565b6040516102da9190612676565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190612788565b610961565b005b34801561031857600080fd5b50610321610a40565b60405161032e91906127e4565b60405180910390f35b34801561034357600080fd5b5061035e6004803603810190610359919061261b565b610a49565b60405161036b9190612676565b60405180910390f35b34801561038057600080fd5b50610389610af5565b604051610396919061280e565b60405180910390f35b3480156103ab57600080fd5b506103b4610b19565b6040516103c19190612676565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612829565b610b2c565b6040516103fe9190612676565b60405180910390f35b34801561041357600080fd5b5061041c610b82565b604051610429919061271a565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612829565b610b88565b604051610466919061271a565b60405180910390f35b34801561047b57600080fd5b50610484610bd0565b005b34801561049257600080fd5b506104ad60048036038101906104a89190612856565b610c58565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190612856565b610d37565b005b3480156104e457600080fd5b506104ed610dbd565b6040516104fa91906128a4565b60405180910390f35b34801561050f57600080fd5b50610518610de3565b604051610525919061280e565b60405180910390f35b34801561053a57600080fd5b50610543610e0d565b6040516105509190612560565b60405180910390f35b34801561056557600080fd5b5061056e610e9f565b60405161057b919061271a565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a6919061261b565b610ea5565b6040516105b89190612676565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e3919061261b565b610f90565b6040516105f59190612676565b60405180910390f35b34801561060a57600080fd5b50610625600480360381019061062091906128eb565b610fae565b005b34801561063357600080fd5b5061064e60048036038101906106499190612944565b61106e565b005b34801561065c57600080fd5b5061067760048036038101906106729190612984565b611225565b005b34801561068557600080fd5b5061068e6112f5565b60405161069b919061271a565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906129b1565b6112fb565b6040516106d8919061271a565b60405180910390f35b3480156106ed57600080fd5b506106f6611382565b604051610703919061271a565b60405180910390f35b34801561071857600080fd5b50610721611388565b60405161072e919061271a565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190612856565b61138e565b005b34801561076c57600080fd5b5061078760048036038101906107829190612829565b61146d565b005b60606003805461079890612a20565b80601f01602080910402602001604051908101604052809291908181526020018280546107c490612a20565b80156108115780601f106107e657610100808354040283529160200191610811565b820191906000526020600020905b8154815290600101906020018083116107f457829003601f168201915b5050505050905090565b600061082f610828611564565b848461156c565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610876848484611735565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c1611564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093890612ac3565b60405180910390fd5b6109558561094d611564565b85840361156c565b60019150509392505050565b610969611564565b73ffffffffffffffffffffffffffffffffffffffff16610987610de3565b73ffffffffffffffffffffffffffffffffffffffff16146109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490612b2f565b60405180910390fd5b600582111580156109ef5750600a8111155b610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2590612b9b565b60405180910390fd5b81600781905550806008819055505050565b60006012905090565b6000610aeb610a56611564565b848460016000610a64611564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae69190612bea565b61156c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600660159054906101000a900460ff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bd8611564565b73ffffffffffffffffffffffffffffffffffffffff16610bf6610de3565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390612b2f565b60405180910390fd5b610c566000611ce7565b565b610c60611564565b73ffffffffffffffffffffffffffffffffffffffff16610c7e610de3565b73ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612b2f565b60405180910390fd5b80600b819055506101f4610ce661085f565b610cf09190612c4d565b600b541015610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90612cca565b60405180910390fd5b50565b610d3f611564565b73ffffffffffffffffffffffffffffffffffffffff16610d5d610de3565b73ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90612b2f565b60405180910390fd5b8060098190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e1c90612a20565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4890612a20565b8015610e955780601f10610e6a57610100808354040283529160200191610e95565b820191906000526020600020905b815481529060010190602001808311610e7857829003601f168201915b5050505050905090565b60075481565b60008060016000610eb4611564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890612d5c565b60405180910390fd5b610f85610f7c611564565b8585840361156c565b600191505092915050565b6000610fa4610f9d611564565b8484611735565b6001905092915050565b610fb6611564565b73ffffffffffffffffffffffffffffffffffffffff16610fd4610de3565b73ffffffffffffffffffffffffffffffffffffffff161461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612b2f565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611076611564565b73ffffffffffffffffffffffffffffffffffffffff16611094610de3565b73ffffffffffffffffffffffffffffffffffffffff16146110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190612b2f565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390612dee565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516112199190612676565b60405180910390a25050565b61122d611564565b73ffffffffffffffffffffffffffffffffffffffff1661124b610de3565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890612b2f565b60405180910390fd5b80600660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516112ea9190612676565b60405180910390a150565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600b5481565b611396611564565b73ffffffffffffffffffffffffffffffffffffffff166113b4610de3565b73ffffffffffffffffffffffffffffffffffffffff161461140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190612b2f565b60405180910390fd5b80600a819055506101f461141c61085f565b6114269190612c4d565b600a54101561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612cca565b60405180910390fd5b50565b611475611564565b73ffffffffffffffffffffffffffffffffffffffff16611493610de3565b73ffffffffffffffffffffffffffffffffffffffff16146114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090612b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90612e80565b60405180910390fd5b61156181611ce7565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d290612f12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190612fa4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611728919061271a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613036565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a906130c8565b60405180910390fd5b6000810361182c5761182783836000611dad565b611ce2565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118d05750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561191b57600a5481111561191a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119119061315a565b60405180910390fd5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119c05750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a165750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a7a576000611a2683610b88565b9050600b548282611a379190612bea565b1115611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f906131ec565b60405180910390fd5b505b6000611a8530610b88565b905060006009548210159050808015611aab5750600660149054906101000a900460ff16155b8015611b0257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b1a5750600660159054906101000a900460ff165b15611b2e576009549150611b2d8261202c565b5b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bd25750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c7f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611c7e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15611cd45760006064600754600854611c989190612bea565b85611ca3919061320c565b611cad9190612c4d565b90508084611cbb919061324e565b93506000811115611cd257611cd1863083611dad565b5b505b611cdf858585611dad565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613036565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e82906130c8565b60405180910390fd5b611e96838383612195565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f13906132f4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611faf9190612bea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612013919061271a565b60405180910390a361202684848461219a565b50505050565b6001600660146101000a81548160ff02191690831515021790555060006008546007546120599190612bea565b60075483612067919061320c565b6120719190612c4d565b905060006002826120829190612c4d565b905060008183612092919061324e565b905060004790506120a28361219f565b600081476120b0919061324e565b90506120bc8382612418565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f838148684826040516120ed929190613314565b60405180910390a16121098587612104919061324e565b61219f565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612171573d6000803e3d6000fd5b5050505050506000600660146101000a81548160ff02191690831515021790555050565b505050565b505050565b6000600267ffffffffffffffff8111156121bc576121bb61333d565b5b6040519080825280602002602001820160405280156121ea5781602001602082028036833780820191505090505b50905030816000815181106122025761220161336c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd91906133b0565b816001815181106122e1576122e061336c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508161234830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112fb565b101561237e5761237d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961156c565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123e29594939291906134d6565b600060405180830381600087803b1580156123fc57600080fd5b505af1158015612410573d6000803e3d6000fd5b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612464610de3565b426040518863ffffffff1660e01b815260040161248696959493929190613530565b60606040518083038185885af11580156124a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124c991906135a6565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561250a5780820151818401526020810190506124ef565b60008484015250505050565b6000601f19601f8301169050919050565b6000612532826124d0565b61253c81856124db565b935061254c8185602086016124ec565b61255581612516565b840191505092915050565b6000602082019050818103600083015261257a8184612527565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125b282612587565b9050919050565b6125c2816125a7565b81146125cd57600080fd5b50565b6000813590506125df816125b9565b92915050565b6000819050919050565b6125f8816125e5565b811461260357600080fd5b50565b600081359050612615816125ef565b92915050565b6000806040838503121561263257612631612582565b5b6000612640858286016125d0565b925050602061265185828601612606565b9150509250929050565b60008115159050919050565b6126708161265b565b82525050565b600060208201905061268b6000830184612667565b92915050565b6000819050919050565b60006126b66126b16126ac84612587565b612691565b612587565b9050919050565b60006126c88261269b565b9050919050565b60006126da826126bd565b9050919050565b6126ea816126cf565b82525050565b600060208201905061270560008301846126e1565b92915050565b612714816125e5565b82525050565b600060208201905061272f600083018461270b565b92915050565b60008060006060848603121561274e5761274d612582565b5b600061275c868287016125d0565b935050602061276d868287016125d0565b925050604061277e86828701612606565b9150509250925092565b6000806040838503121561279f5761279e612582565b5b60006127ad85828601612606565b92505060206127be85828601612606565b9150509250929050565b600060ff82169050919050565b6127de816127c8565b82525050565b60006020820190506127f960008301846127d5565b92915050565b612808816125a7565b82525050565b600060208201905061282360008301846127ff565b92915050565b60006020828403121561283f5761283e612582565b5b600061284d848285016125d0565b91505092915050565b60006020828403121561286c5761286b612582565b5b600061287a84828501612606565b91505092915050565b600061288e82612587565b9050919050565b61289e81612883565b82525050565b60006020820190506128b96000830184612895565b92915050565b6128c881612883565b81146128d357600080fd5b50565b6000813590506128e5816128bf565b92915050565b60006020828403121561290157612900612582565b5b600061290f848285016128d6565b91505092915050565b6129218161265b565b811461292c57600080fd5b50565b60008135905061293e81612918565b92915050565b6000806040838503121561295b5761295a612582565b5b6000612969858286016125d0565b925050602061297a8582860161292f565b9150509250929050565b60006020828403121561299a57612999612582565b5b60006129a88482850161292f565b91505092915050565b600080604083850312156129c8576129c7612582565b5b60006129d6858286016125d0565b92505060206129e7858286016125d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a3857607f821691505b602082108103612a4b57612a4a6129f1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612aad6028836124db565b9150612ab882612a51565b604082019050919050565b60006020820190508181036000830152612adc81612aa0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b196020836124db565b9150612b2482612ae3565b602082019050919050565b60006020820190508181036000830152612b4881612b0c565b9050919050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612b85600c836124db565b9150612b9082612b4f565b602082019050919050565b60006020820190508181036000830152612bb481612b78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bf5826125e5565b9150612c00836125e5565b9250828201905080821115612c1857612c17612bbb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c58826125e5565b9150612c63836125e5565b925082612c7357612c72612c1e565b5b828204905092915050565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b6000612cb4600d836124db565b9150612cbf82612c7e565b602082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d466025836124db565b9150612d5182612cea565b604082019050919050565b60006020820190508181036000830152612d7581612d39565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612dd8602a836124db565b9150612de382612d7c565b604082019050919050565b60006020820190508181036000830152612e0781612dcb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e6a6026836124db565b9150612e7582612e0e565b604082019050919050565b60006020820190508181036000830152612e9981612e5d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612efc6024836124db565b9150612f0782612ea0565b604082019050919050565b60006020820190508181036000830152612f2b81612eef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f8e6022836124db565b9150612f9982612f32565b604082019050919050565b60006020820190508181036000830152612fbd81612f81565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130206025836124db565b915061302b82612fc4565b604082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130b26023836124db565b91506130bd82613056565b604082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f616d6f756e74206d757374206265206c657373207468616e206f72206571756160008201527f6c20746f206d61785478206c696d697400000000000000000000000000000000602082015250565b60006131446030836124db565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836124db565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b6000613217826125e5565b9150613222836125e5565b9250828202613230816125e5565b9150828204841483151761324757613246612bbb565b5b5092915050565b6000613259826125e5565b9150613264836125e5565b925082820390508181111561327c5761327b612bbb565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006132de6026836124db565b91506132e982613282565b604082019050919050565b6000602082019050818103600083015261330d816132d1565b9050919050565b6000604082019050613329600083018561270b565b613336602083018461270b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506133aa816125b9565b92915050565b6000602082840312156133c6576133c5612582565b5b60006133d48482850161339b565b91505092915050565b6000819050919050565b60006134026133fd6133f8846133dd565b612691565b6125e5565b9050919050565b613412816133e7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344d816125a7565b82525050565b600061345f8383613444565b60208301905092915050565b6000602082019050919050565b600061348382613418565b61348d8185613423565b935061349883613434565b8060005b838110156134c95781516134b08882613453565b97506134bb8361346b565b92505060018101905061349c565b5085935050505092915050565b600060a0820190506134eb600083018861270b565b6134f86020830187613409565b818103604083015261350a8186613478565b905061351960608301856127ff565b613526608083018461270b565b9695505050505050565b600060c08201905061354560008301896127ff565b613552602083018861270b565b61355f6040830187613409565b61356c6060830186613409565b61357960808301856127ff565b61358660a083018461270b565b979650505050505050565b6000815190506135a0816125ef565b92915050565b6000806000606084860312156135bf576135be612582565b5b60006135cd86828701613591565b93505060206135de86828701613591565b92505060406135ef86828701613591565b915050925092509256fea2646970667358221220b391553fb8d55091c1c5c048d8961a254973a5fc240f522c9965a0404e04658364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063750c11b611610102578063c024666811610095578063e2f4560511610064578063e2f45605146106e1578063e6c75f711461070c578063ec28438a14610737578063f2fde38b14610760576101e3565b8063c024666814610627578063c49b9a8014610650578063c8c8ebe414610679578063dd62ed3e146106a4576101e3565b806398118cb4116100d157806398118cb414610559578063a457c2d714610584578063a9059cbb146105c1578063aacebbe3146105fe576101e3565b8063750c11b6146104af57806375f0a874146104d85780638da5cb5b1461050357806395d89b411461052e576101e3565b8063395093511161017a5780636b67c4df116101495780636b67c4df1461040757806370a0823114610432578063715018a61461046f578063728d41c914610486576101e3565b8063395093511461033757806349bd5a5e146103745780634a74bb021461039f5780634fbee193146103ca576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632740c197146102e3578063313ce5671461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610789565b60405161020a9190612560565b60405180910390f35b34801561021f57600080fd5b5061023a6004803603810190610235919061261b565b61081b565b6040516102479190612676565b60405180910390f35b34801561025c57600080fd5b50610265610839565b60405161027291906126f0565b60405180910390f35b34801561028757600080fd5b5061029061085f565b60405161029d919061271a565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612735565b610869565b6040516102da9190612676565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190612788565b610961565b005b34801561031857600080fd5b50610321610a40565b60405161032e91906127e4565b60405180910390f35b34801561034357600080fd5b5061035e6004803603810190610359919061261b565b610a49565b60405161036b9190612676565b60405180910390f35b34801561038057600080fd5b50610389610af5565b604051610396919061280e565b60405180910390f35b3480156103ab57600080fd5b506103b4610b19565b6040516103c19190612676565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612829565b610b2c565b6040516103fe9190612676565b60405180910390f35b34801561041357600080fd5b5061041c610b82565b604051610429919061271a565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612829565b610b88565b604051610466919061271a565b60405180910390f35b34801561047b57600080fd5b50610484610bd0565b005b34801561049257600080fd5b506104ad60048036038101906104a89190612856565b610c58565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190612856565b610d37565b005b3480156104e457600080fd5b506104ed610dbd565b6040516104fa91906128a4565b60405180910390f35b34801561050f57600080fd5b50610518610de3565b604051610525919061280e565b60405180910390f35b34801561053a57600080fd5b50610543610e0d565b6040516105509190612560565b60405180910390f35b34801561056557600080fd5b5061056e610e9f565b60405161057b919061271a565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a6919061261b565b610ea5565b6040516105b89190612676565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e3919061261b565b610f90565b6040516105f59190612676565b60405180910390f35b34801561060a57600080fd5b50610625600480360381019061062091906128eb565b610fae565b005b34801561063357600080fd5b5061064e60048036038101906106499190612944565b61106e565b005b34801561065c57600080fd5b5061067760048036038101906106729190612984565b611225565b005b34801561068557600080fd5b5061068e6112f5565b60405161069b919061271a565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906129b1565b6112fb565b6040516106d8919061271a565b60405180910390f35b3480156106ed57600080fd5b506106f6611382565b604051610703919061271a565b60405180910390f35b34801561071857600080fd5b50610721611388565b60405161072e919061271a565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190612856565b61138e565b005b34801561076c57600080fd5b5061078760048036038101906107829190612829565b61146d565b005b60606003805461079890612a20565b80601f01602080910402602001604051908101604052809291908181526020018280546107c490612a20565b80156108115780601f106107e657610100808354040283529160200191610811565b820191906000526020600020905b8154815290600101906020018083116107f457829003601f168201915b5050505050905090565b600061082f610828611564565b848461156c565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610876848484611735565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c1611564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093890612ac3565b60405180910390fd5b6109558561094d611564565b85840361156c565b60019150509392505050565b610969611564565b73ffffffffffffffffffffffffffffffffffffffff16610987610de3565b73ffffffffffffffffffffffffffffffffffffffff16146109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490612b2f565b60405180910390fd5b600582111580156109ef5750600a8111155b610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2590612b9b565b60405180910390fd5b81600781905550806008819055505050565b60006012905090565b6000610aeb610a56611564565b848460016000610a64611564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae69190612bea565b61156c565b6001905092915050565b7f000000000000000000000000ed15d4de3929ad2df45d1d954a09f102eac096d381565b600660159054906101000a900460ff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bd8611564565b73ffffffffffffffffffffffffffffffffffffffff16610bf6610de3565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390612b2f565b60405180910390fd5b610c566000611ce7565b565b610c60611564565b73ffffffffffffffffffffffffffffffffffffffff16610c7e610de3565b73ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612b2f565b60405180910390fd5b80600b819055506101f4610ce661085f565b610cf09190612c4d565b600b541015610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90612cca565b60405180910390fd5b50565b610d3f611564565b73ffffffffffffffffffffffffffffffffffffffff16610d5d610de3565b73ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90612b2f565b60405180910390fd5b8060098190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e1c90612a20565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4890612a20565b8015610e955780601f10610e6a57610100808354040283529160200191610e95565b820191906000526020600020905b815481529060010190602001808311610e7857829003601f168201915b5050505050905090565b60075481565b60008060016000610eb4611564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890612d5c565b60405180910390fd5b610f85610f7c611564565b8585840361156c565b600191505092915050565b6000610fa4610f9d611564565b8484611735565b6001905092915050565b610fb6611564565b73ffffffffffffffffffffffffffffffffffffffff16610fd4610de3565b73ffffffffffffffffffffffffffffffffffffffff161461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612b2f565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611076611564565b73ffffffffffffffffffffffffffffffffffffffff16611094610de3565b73ffffffffffffffffffffffffffffffffffffffff16146110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190612b2f565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390612dee565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516112199190612676565b60405180910390a25050565b61122d611564565b73ffffffffffffffffffffffffffffffffffffffff1661124b610de3565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890612b2f565b60405180910390fd5b80600660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516112ea9190612676565b60405180910390a150565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600b5481565b611396611564565b73ffffffffffffffffffffffffffffffffffffffff166113b4610de3565b73ffffffffffffffffffffffffffffffffffffffff161461140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190612b2f565b60405180910390fd5b80600a819055506101f461141c61085f565b6114269190612c4d565b600a54101561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612cca565b60405180910390fd5b50565b611475611564565b73ffffffffffffffffffffffffffffffffffffffff16611493610de3565b73ffffffffffffffffffffffffffffffffffffffff16146114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090612b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90612e80565b60405180910390fd5b61156181611ce7565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d290612f12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190612fa4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611728919061271a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613036565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a906130c8565b60405180910390fd5b6000810361182c5761182783836000611dad565b611ce2565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118d05750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561191b57600a5481111561191a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119119061315a565b60405180910390fd5b5b7f000000000000000000000000ed15d4de3929ad2df45d1d954a09f102eac096d373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119c05750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a165750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a7a576000611a2683610b88565b9050600b548282611a379190612bea565b1115611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f906131ec565b60405180910390fd5b505b6000611a8530610b88565b905060006009548210159050808015611aab5750600660149054906101000a900460ff16155b8015611b0257507f000000000000000000000000ed15d4de3929ad2df45d1d954a09f102eac096d373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b1a5750600660159054906101000a900460ff165b15611b2e576009549150611b2d8261202c565b5b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bd25750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c7f57507f000000000000000000000000ed15d4de3929ad2df45d1d954a09f102eac096d373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611c7e57507f000000000000000000000000ed15d4de3929ad2df45d1d954a09f102eac096d373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15611cd45760006064600754600854611c989190612bea565b85611ca3919061320c565b611cad9190612c4d565b90508084611cbb919061324e565b93506000811115611cd257611cd1863083611dad565b5b505b611cdf858585611dad565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613036565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e82906130c8565b60405180910390fd5b611e96838383612195565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f13906132f4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611faf9190612bea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612013919061271a565b60405180910390a361202684848461219a565b50505050565b6001600660146101000a81548160ff02191690831515021790555060006008546007546120599190612bea565b60075483612067919061320c565b6120719190612c4d565b905060006002826120829190612c4d565b905060008183612092919061324e565b905060004790506120a28361219f565b600081476120b0919061324e565b90506120bc8382612418565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f838148684826040516120ed929190613314565b60405180910390a16121098587612104919061324e565b61219f565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612171573d6000803e3d6000fd5b5050505050506000600660146101000a81548160ff02191690831515021790555050565b505050565b505050565b6000600267ffffffffffffffff8111156121bc576121bb61333d565b5b6040519080825280602002602001820160405280156121ea5781602001602082028036833780820191505090505b50905030816000815181106122025761220161336c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd91906133b0565b816001815181106122e1576122e061336c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508161234830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112fb565b101561237e5761237d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961156c565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123e29594939291906134d6565b600060405180830381600087803b1580156123fc57600080fd5b505af1158015612410573d6000803e3d6000fd5b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612464610de3565b426040518863ffffffff1660e01b815260040161248696959493929190613530565b60606040518083038185885af11580156124a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124c991906135a6565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561250a5780820151818401526020810190506124ef565b60008484015250505050565b6000601f19601f8301169050919050565b6000612532826124d0565b61253c81856124db565b935061254c8185602086016124ec565b61255581612516565b840191505092915050565b6000602082019050818103600083015261257a8184612527565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125b282612587565b9050919050565b6125c2816125a7565b81146125cd57600080fd5b50565b6000813590506125df816125b9565b92915050565b6000819050919050565b6125f8816125e5565b811461260357600080fd5b50565b600081359050612615816125ef565b92915050565b6000806040838503121561263257612631612582565b5b6000612640858286016125d0565b925050602061265185828601612606565b9150509250929050565b60008115159050919050565b6126708161265b565b82525050565b600060208201905061268b6000830184612667565b92915050565b6000819050919050565b60006126b66126b16126ac84612587565b612691565b612587565b9050919050565b60006126c88261269b565b9050919050565b60006126da826126bd565b9050919050565b6126ea816126cf565b82525050565b600060208201905061270560008301846126e1565b92915050565b612714816125e5565b82525050565b600060208201905061272f600083018461270b565b92915050565b60008060006060848603121561274e5761274d612582565b5b600061275c868287016125d0565b935050602061276d868287016125d0565b925050604061277e86828701612606565b9150509250925092565b6000806040838503121561279f5761279e612582565b5b60006127ad85828601612606565b92505060206127be85828601612606565b9150509250929050565b600060ff82169050919050565b6127de816127c8565b82525050565b60006020820190506127f960008301846127d5565b92915050565b612808816125a7565b82525050565b600060208201905061282360008301846127ff565b92915050565b60006020828403121561283f5761283e612582565b5b600061284d848285016125d0565b91505092915050565b60006020828403121561286c5761286b612582565b5b600061287a84828501612606565b91505092915050565b600061288e82612587565b9050919050565b61289e81612883565b82525050565b60006020820190506128b96000830184612895565b92915050565b6128c881612883565b81146128d357600080fd5b50565b6000813590506128e5816128bf565b92915050565b60006020828403121561290157612900612582565b5b600061290f848285016128d6565b91505092915050565b6129218161265b565b811461292c57600080fd5b50565b60008135905061293e81612918565b92915050565b6000806040838503121561295b5761295a612582565b5b6000612969858286016125d0565b925050602061297a8582860161292f565b9150509250929050565b60006020828403121561299a57612999612582565b5b60006129a88482850161292f565b91505092915050565b600080604083850312156129c8576129c7612582565b5b60006129d6858286016125d0565b92505060206129e7858286016125d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a3857607f821691505b602082108103612a4b57612a4a6129f1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612aad6028836124db565b9150612ab882612a51565b604082019050919050565b60006020820190508181036000830152612adc81612aa0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b196020836124db565b9150612b2482612ae3565b602082019050919050565b60006020820190508181036000830152612b4881612b0c565b9050919050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612b85600c836124db565b9150612b9082612b4f565b602082019050919050565b60006020820190508181036000830152612bb481612b78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bf5826125e5565b9150612c00836125e5565b9250828201905080821115612c1857612c17612bbb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c58826125e5565b9150612c63836125e5565b925082612c7357612c72612c1e565b5b828204905092915050565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b6000612cb4600d836124db565b9150612cbf82612c7e565b602082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d466025836124db565b9150612d5182612cea565b604082019050919050565b60006020820190508181036000830152612d7581612d39565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612dd8602a836124db565b9150612de382612d7c565b604082019050919050565b60006020820190508181036000830152612e0781612dcb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e6a6026836124db565b9150612e7582612e0e565b604082019050919050565b60006020820190508181036000830152612e9981612e5d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612efc6024836124db565b9150612f0782612ea0565b604082019050919050565b60006020820190508181036000830152612f2b81612eef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f8e6022836124db565b9150612f9982612f32565b604082019050919050565b60006020820190508181036000830152612fbd81612f81565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130206025836124db565b915061302b82612fc4565b604082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130b26023836124db565b91506130bd82613056565b604082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f616d6f756e74206d757374206265206c657373207468616e206f72206571756160008201527f6c20746f206d61785478206c696d697400000000000000000000000000000000602082015250565b60006131446030836124db565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836124db565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b6000613217826125e5565b9150613222836125e5565b9250828202613230816125e5565b9150828204841483151761324757613246612bbb565b5b5092915050565b6000613259826125e5565b9150613264836125e5565b925082820390508181111561327c5761327b612bbb565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006132de6026836124db565b91506132e982613282565b604082019050919050565b6000602082019050818103600083015261330d816132d1565b9050919050565b6000604082019050613329600083018561270b565b613336602083018461270b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506133aa816125b9565b92915050565b6000602082840312156133c6576133c5612582565b5b60006133d48482850161339b565b91505092915050565b6000819050919050565b60006134026133fd6133f8846133dd565b612691565b6125e5565b9050919050565b613412816133e7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344d816125a7565b82525050565b600061345f8383613444565b60208301905092915050565b6000602082019050919050565b600061348382613418565b61348d8185613423565b935061349883613434565b8060005b838110156134c95781516134b08882613453565b97506134bb8361346b565b92505060018101905061349c565b5085935050505092915050565b600060a0820190506134eb600083018861270b565b6134f86020830187613409565b818103604083015261350a8186613478565b905061351960608301856127ff565b613526608083018461270b565b9695505050505050565b600060c08201905061354560008301896127ff565b613552602083018861270b565b61355f6040830187613409565b61356c6060830186613409565b61357960808301856127ff565b61358660a083018461270b565b979650505050505050565b6000815190506135a0816125ef565b92915050565b6000806000606084860312156135bf576135be612582565b5b60006135cd86828701613591565b93505060206135de86828701613591565b92505060406135ef86828701613591565b915050925092509256fea2646970667358221220b391553fb8d55091c1c5c048d8961a254973a5fc240f522c9965a0404e04658364736f6c63430008110033

Deployed Bytecode Sourcemap

22372:7293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9977:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22418:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8930:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10628:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29318:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8772:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11529:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22466:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22549:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28491:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22636:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9101:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5207:94;;;;;;;;;;;;;:::i;:::-;;28806:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29191:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22975:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4556:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8029:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22598:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12247:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9441:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29537:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28189:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28627:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22741:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9679:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22680:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22808:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28994:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5456:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7810:100;7864:13;7897:5;7890:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:100;:::o;9977:169::-;10060:4;10077:39;10086:12;:10;:12::i;:::-;10100:7;10109:6;10077:8;:39::i;:::-;10134:4;10127:11;;9977:169;;;;:::o;22418:41::-;;;;;;;;;;;;;:::o;8930:108::-;8991:7;9018:12;;9011:19;;8930:108;:::o;10628:492::-;10768:4;10785:36;10795:6;10803:9;10814:6;10785:9;:36::i;:::-;10834:24;10861:11;:19;10873:6;10861:19;;;;;;;;;;;;;;;:33;10881:12;:10;:12::i;:::-;10861:33;;;;;;;;;;;;;;;;10834:60;;10933:6;10913:16;:26;;10905:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11020:57;11029:6;11037:12;:10;:12::i;:::-;11070:6;11051:16;:25;11020:8;:57::i;:::-;11108:4;11101:11;;;10628:492;;;;;:::o;29318:211::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29418:1:::1;29407:7;:12;;:30;;;;;29435:2;29423:8;:14;;29407:30;29399:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;29480:7;29465:12;:22;;;;29513:8;29498:12;:23;;;;29318:211:::0;;:::o;8772:93::-;8830:5;8855:2;8848:9;;8772:93;:::o;11529:215::-;11617:4;11634:80;11643:12;:10;:12::i;:::-;11657:7;11703:10;11666:11;:25;11678:12;:10;:12::i;:::-;11666:25;;;;;;;;;;;;;;;:34;11692:7;11666:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11634:8;:80::i;:::-;11732:4;11725:11;;11529:215;;;;:::o;22466:38::-;;;:::o;22549:40::-;;;;;;;;;;;;;:::o;28491:125::-;28556:4;28580:19;:28;28600:7;28580:28;;;;;;;;;;;;;;;;;;;;;;;;;28573:35;;28491:125;;;:::o;22636:31::-;;;;:::o;9101:127::-;9175:7;9202:9;:18;9212:7;9202:18;;;;;;;;;;;;;;;;9195:25;;9101:127;;;:::o;5207:94::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5272:21:::1;5290:1;5272:9;:21::i;:::-;5207:94::o:0;28806:180::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28897:9:::1;28880:14;:26;;;;28957:3;28943:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28925:14;;:35;;28917:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28806:180:::0;:::o;29191:119::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29292:10:::1;29271:18;:31;;;;29191:119:::0;:::o;22975:92::-;;;;;;;;;;;;;:::o;4556:87::-;4602:7;4629:6;;;;;;;;;;;4622:13;;4556:87;:::o;8029:104::-;8085:13;8118:7;8111:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8029:104;:::o;22598:31::-;;;;:::o;12247:413::-;12340:4;12357:24;12384:11;:25;12396:12;:10;:12::i;:::-;12384:25;;;;;;;;;;;;;;;:34;12410:7;12384:34;;;;;;;;;;;;;;;;12357:61;;12457:15;12437:16;:35;;12429:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:67;12559:12;:10;:12::i;:::-;12573:7;12601:15;12582:16;:34;12550:8;:67::i;:::-;12648:4;12641:11;;;12247:413;;;;:::o;9441:175::-;9527:4;9544:42;9554:12;:10;:12::i;:::-;9568:9;9579:6;9544:9;:42::i;:::-;9604:4;9597:11;;9441:175;;;;:::o;29537:123::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29642:10:::1;29624:15;;:28;;;;;;;;;;;;;;;;;;29537:123:::0;:::o;28189:290::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28314:8:::1;28282:40;;:19;:28;28302:7;28282:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;28274:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28411:8;28380:19;:28;28400:7;28380:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28453:7;28437:34;;;28462:8;28437:34;;;;;;:::i;:::-;;;;;;;;28189:290:::0;;:::o;28627:171::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28728:8:::1;28704:21;;:32;;;;;;;;;;;;;;;;;;28752:38;28781:8;28752:38;;;;;;:::i;:::-;;;;;;;;28627:171:::0;:::o;22741:60::-;;;;:::o;9679:151::-;9768:7;9795:11;:18;9807:5;9795:18;;;;;;;;;;;;;;;:27;9814:7;9795:27;;;;;;;;;;;;;;;;9788:34;;9679:151;;;;:::o;22680:54::-;;;;:::o;22808:52::-;;;;:::o;28994:189::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29088:9:::1;29065:20;:32;;;;29154:3;29140:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29116:20;;:41;;29108:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28994:189:::0;:::o;5456:192::-;4787:12;:10;:12::i;:::-;4776:23;;:7;:5;:7::i;:::-;:23;;;4768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5565:1:::1;5545:22;;:8;:22;;::::0;5537:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5621:19;5631:8;5621:9;:19::i;:::-;5456:192:::0;:::o;3430:98::-;3483:7;3510:10;3503:17;;3430:98;:::o;15017:380::-;15170:1;15153:19;;:5;:19;;;15145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15251:1;15232:21;;:7;:21;;;15224:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15335:6;15305:11;:18;15317:5;15305:18;;;;;;;;;;;;;;;:27;15324:7;15305:27;;;;;;;;;;;;;;;:36;;;;15373:7;15357:32;;15366:5;15357:32;;;15382:6;15357:32;;;;;;:::i;:::-;;;;;;;;15017:380;;;:::o;24250:1839::-;24398:1;24382:18;;:4;:18;;;24374:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24475:1;24461:16;;:2;:16;;;24453:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24543:1;24533:6;:11;24530:92;;24561:28;24577:4;24583:2;24587:1;24561:15;:28::i;:::-;24604:7;;24530:92;24638:19;:25;24658:4;24638:25;;;;;;;;;;;;;;;;;;;;;;;;;24637:26;:54;;;;;24668:19;:23;24688:2;24668:23;;;;;;;;;;;;;;;;;;;;;;;;;24667:24;24637:54;24634:177;;;24726:20;;24716:6;:30;;24708:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;24634:177;24833:13;24827:19;;:4;:19;;;:49;;;;;24851:19;:25;24871:4;24851:25;;;;;;;;;;;;;;;;;;;;;;;;;24850:26;24827:49;:77;;;;;24881:19;:23;24901:2;24881:23;;;;;;;;;;;;;;;;;;;;;;;;;24880:24;24827:77;24824:271;;;24920:32;24955:13;24965:2;24955:9;:13::i;:::-;24920:48;;25028:14;;25018:6;24991:24;:33;;;;:::i;:::-;:51;;24983:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24905:190;24824:271;25104:28;25135:24;25153:4;25135:9;:24::i;:::-;25104:55;;25180:24;25231:18;;25207:20;:42;;25180:69;;25286:19;:53;;;;;25323:16;;;;;;;;;;;25322:17;25286:53;:87;;;;;25360:13;25356:17;;:2;:17;;;25286:87;:126;;;;;25391:21;;;;;;;;;;;25286:126;25269:274;;;25462:18;;25439:41;;25495:36;25510:20;25495:14;:36::i;:::-;25269:274;25659:19;:25;25679:4;25659:25;;;;;;;;;;;;;;;;;;;;;;;;;25658:26;:68;;;;;25703:19;:23;25723:2;25703:23;;;;;;;;;;;;;;;;;;;;;;;;;25702:24;25658:68;:127;;;;;25750:13;25744:19;;:4;:19;;;:40;;;;25771:13;25767:17;;:2;:17;;;25744:40;25658:127;25641:393;;;25812:12;25862:3;25848:12;;25835;;:25;;;;:::i;:::-;25827:6;:34;;;;:::i;:::-;:38;;;;:::i;:::-;25812:53;;25896:4;25889:6;:11;;;;:::i;:::-;25880:20;;25927:1;25920:4;:8;25917:91;;;25949:42;25965:4;25979;25986;25949:15;:42::i;:::-;25917:91;25797:237;25641:393;26046:33;26062:4;26068:2;26072:6;26046:15;:33::i;:::-;24363:1726;;24250:1839;;;;:::o;5656:173::-;5712:16;5731:6;;;;;;;;;;;5712:25;;5757:8;5748:6;;:17;;;;;;;;;;;;;;;;;;5812:8;5781:40;;5802:8;5781:40;;;;;;;;;;;;5701:128;5656:173;:::o;13150:733::-;13308:1;13290:20;;:6;:20;;;13282:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13392:1;13371:23;;:9;:23;;;13363:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13447:47;13468:6;13476:9;13487:6;13447:20;:47::i;:::-;13507:21;13531:9;:17;13541:6;13531:17;;;;;;;;;;;;;;;;13507:41;;13584:6;13567:13;:23;;13559:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13705:6;13689:13;:22;13669:9;:17;13679:6;13669:17;;;;;;;;;;;;;;;:42;;;;13757:6;13733:9;:20;13743:9;13733:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13798:9;13781:35;;13790:6;13781:35;;;13809:6;13781:35;;;;;;:::i;:::-;;;;;;;;13829:46;13849:6;13857:9;13868:6;13829:19;:46::i;:::-;13271:612;13150:733;;;:::o;26098:950::-;23127:4;23108:16;;:23;;;;;;;;;;;;;;;;;;26183:26:::1;26260:12;;26247;;:25;;;;:::i;:::-;26233:12;;26212:20;:33;;;;:::i;:::-;:61;;;;:::i;:::-;26183:90;;26342:12;26376:1;26357:18;:20;;;;:::i;:::-;26342:35;;26388:17;26427:4;26408:18;:23;;;;:::i;:::-;26388:43;;26500:22;26525:21;26500:46;;26591:22;26608:4;26591:16;:22::i;:::-;26675:18;26718:14;26696:21;:36;;;;:::i;:::-;26675:57;;26782:35;26795:9;26806:10;26782:12;:35::i;:::-;26835:32;26850:4;26856:10;26835:32;;;;;;;:::i;:::-;;;;;;;;26923:57;26961:18;26940:20;:39;;;;:::i;:::-;26923:16;:57::i;:::-;26991:15;;;;;;;;;;;:24;;:47;27016:21;26991:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26172:876;;;;;23173:5:::0;23154:16;;:24;;;;;;;;;;;;;;;;;;26098:950;:::o;15997:125::-;;;;:::o;16726:124::-;;;;:::o;27056:692::-;27182:21;27220:1;27206:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27182:40;;27251:4;27233;27238:1;27233:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27277:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27267:4;27272:1;27267:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27368:11;27315:50;27333:4;27348:15;;;;;;;;;;;27315:9;:50::i;:::-;:64;27312:156;;;27394:62;27411:4;27426:15;;;;;;;;;;;27453:1;27444:11;27394:8;:62::i;:::-;27312:156;27506:15;;;;;;;;;;;:66;;;27587:11;27613:1;27657:4;27684;27704:15;27506:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27111:637;27056:692;:::o;27756:381::-;27867:15;;;;;;;;;;;:31;;;27906:9;27939:4;27959:11;27985:1;28028;28071:7;:5;:7::i;:::-;28093:15;27867:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27756:381;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:474::-;5469:6;5477;5526:2;5514:9;5505:7;5501:23;5497:32;5494:119;;;5532:79;;:::i;:::-;5494:119;5652:1;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5623:117;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5401:474;;;;;:::o;5881:86::-;5916:7;5956:4;5949:5;5945:16;5934:27;;5881:86;;;:::o;5973:112::-;6056:22;6072:5;6056:22;:::i;:::-;6051:3;6044:35;5973:112;;:::o;6091:214::-;6180:4;6218:2;6207:9;6203:18;6195:26;;6231:67;6295:1;6284:9;6280:17;6271:6;6231:67;:::i;:::-;6091:214;;;;:::o;6311:118::-;6398:24;6416:5;6398:24;:::i;:::-;6393:3;6386:37;6311:118;;:::o;6435:222::-;6528:4;6566:2;6555:9;6551:18;6543:26;;6579:71;6647:1;6636:9;6632:17;6623:6;6579:71;:::i;:::-;6435:222;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:::-;7057:6;7106:2;7094:9;7085:7;7081:23;7077:32;7074:119;;;7112:79;;:::i;:::-;7074:119;7232:1;7257:53;7302:7;7293:6;7282:9;7278:22;7257:53;:::i;:::-;7247:63;;7203:117;6998:329;;;;:::o;7333:104::-;7378:7;7407:24;7425:5;7407:24;:::i;:::-;7396:35;;7333:104;;;:::o;7443:142::-;7546:32;7572:5;7546:32;:::i;:::-;7541:3;7534:45;7443:142;;:::o;7591:254::-;7700:4;7738:2;7727:9;7723:18;7715:26;;7751:87;7835:1;7824:9;7820:17;7811:6;7751:87;:::i;:::-;7591:254;;;;:::o;7851:138::-;7932:32;7958:5;7932:32;:::i;:::-;7925:5;7922:43;7912:71;;7979:1;7976;7969:12;7912:71;7851:138;:::o;7995:155::-;8049:5;8087:6;8074:20;8065:29;;8103:41;8138:5;8103:41;:::i;:::-;7995:155;;;;:::o;8156:345::-;8223:6;8272:2;8260:9;8251:7;8247:23;8243:32;8240:119;;;8278:79;;:::i;:::-;8240:119;8398:1;8423:61;8476:7;8467:6;8456:9;8452:22;8423:61;:::i;:::-;8413:71;;8369:125;8156:345;;;;:::o;8507:116::-;8577:21;8592:5;8577:21;:::i;:::-;8570:5;8567:32;8557:60;;8613:1;8610;8603:12;8557:60;8507:116;:::o;8629:133::-;8672:5;8710:6;8697:20;8688:29;;8726:30;8750:5;8726:30;:::i;:::-;8629:133;;;;:::o;8768:468::-;8833:6;8841;8890:2;8878:9;8869:7;8865:23;8861:32;8858:119;;;8896:79;;:::i;:::-;8858:119;9016:1;9041:53;9086:7;9077:6;9066:9;9062:22;9041:53;:::i;:::-;9031:63;;8987:117;9143:2;9169:50;9211:7;9202:6;9191:9;9187:22;9169:50;:::i;:::-;9159:60;;9114:115;8768:468;;;;;:::o;9242:323::-;9298:6;9347:2;9335:9;9326:7;9322:23;9318:32;9315:119;;;9353:79;;:::i;:::-;9315:119;9473:1;9498:50;9540:7;9531:6;9520:9;9516:22;9498:50;:::i;:::-;9488:60;;9444:114;9242:323;;;;:::o;9571:474::-;9639:6;9647;9696:2;9684:9;9675:7;9671:23;9667:32;9664:119;;;9702:79;;:::i;:::-;9664:119;9822:1;9847:53;9892:7;9883:6;9872:9;9868:22;9847:53;:::i;:::-;9837:63;;9793:117;9949:2;9975:53;10020:7;10011:6;10000:9;9996:22;9975:53;:::i;:::-;9965:63;;9920:118;9571:474;;;;;:::o;10051:180::-;10099:77;10096:1;10089:88;10196:4;10193:1;10186:15;10220:4;10217:1;10210:15;10237:320;10281:6;10318:1;10312:4;10308:12;10298:22;;10365:1;10359:4;10355:12;10386:18;10376:81;;10442:4;10434:6;10430:17;10420:27;;10376:81;10504:2;10496:6;10493:14;10473:18;10470:38;10467:84;;10523:18;;:::i;:::-;10467:84;10288:269;10237:320;;;:::o;10563:227::-;10703:34;10699:1;10691:6;10687:14;10680:58;10772:10;10767:2;10759:6;10755:15;10748:35;10563:227;:::o;10796:366::-;10938:3;10959:67;11023:2;11018:3;10959:67;:::i;:::-;10952:74;;11035:93;11124:3;11035:93;:::i;:::-;11153:2;11148:3;11144:12;11137:19;;10796:366;;;:::o;11168:419::-;11334:4;11372:2;11361:9;11357:18;11349:26;;11421:9;11415:4;11411:20;11407:1;11396:9;11392:17;11385:47;11449:131;11575:4;11449:131;:::i;:::-;11441:139;;11168:419;;;:::o;11593:182::-;11733:34;11729:1;11721:6;11717:14;11710:58;11593:182;:::o;11781:366::-;11923:3;11944:67;12008:2;12003:3;11944:67;:::i;:::-;11937:74;;12020:93;12109:3;12020:93;:::i;:::-;12138:2;12133:3;12129:12;12122:19;;11781:366;;;:::o;12153:419::-;12319:4;12357:2;12346:9;12342:18;12334:26;;12406:9;12400:4;12396:20;12392:1;12381:9;12377:17;12370:47;12434:131;12560:4;12434:131;:::i;:::-;12426:139;;12153:419;;;:::o;12578:162::-;12718:14;12714:1;12706:6;12702:14;12695:38;12578:162;:::o;12746:366::-;12888:3;12909:67;12973:2;12968:3;12909:67;:::i;:::-;12902:74;;12985:93;13074:3;12985:93;:::i;:::-;13103:2;13098:3;13094:12;13087:19;;12746:366;;;:::o;13118:419::-;13284:4;13322:2;13311:9;13307:18;13299:26;;13371:9;13365:4;13361:20;13357:1;13346:9;13342:17;13335:47;13399:131;13525:4;13399:131;:::i;:::-;13391:139;;13118:419;;;:::o;13543:180::-;13591:77;13588:1;13581:88;13688:4;13685:1;13678:15;13712:4;13709:1;13702:15;13729:191;13769:3;13788:20;13806:1;13788:20;:::i;:::-;13783:25;;13822:20;13840:1;13822:20;:::i;:::-;13817:25;;13865:1;13862;13858:9;13851:16;;13886:3;13883:1;13880:10;13877:36;;;13893:18;;:::i;:::-;13877:36;13729:191;;;;:::o;13926:180::-;13974:77;13971:1;13964:88;14071:4;14068:1;14061:15;14095:4;14092:1;14085:15;14112:185;14152:1;14169:20;14187:1;14169:20;:::i;:::-;14164:25;;14203:20;14221:1;14203:20;:::i;:::-;14198:25;;14242:1;14232:35;;14247:18;;:::i;:::-;14232:35;14289:1;14286;14282:9;14277:14;;14112:185;;;;:::o;14303:163::-;14443:15;14439:1;14431:6;14427:14;14420:39;14303:163;:::o;14472:366::-;14614:3;14635:67;14699:2;14694:3;14635:67;:::i;:::-;14628:74;;14711:93;14800:3;14711:93;:::i;:::-;14829:2;14824:3;14820:12;14813:19;;14472:366;;;:::o;14844:419::-;15010:4;15048:2;15037:9;15033:18;15025:26;;15097:9;15091:4;15087:20;15083:1;15072:9;15068:17;15061:47;15125:131;15251:4;15125:131;:::i;:::-;15117:139;;14844:419;;;:::o;15269:224::-;15409:34;15405:1;15397:6;15393:14;15386:58;15478:7;15473:2;15465:6;15461:15;15454:32;15269:224;:::o;15499:366::-;15641:3;15662:67;15726:2;15721:3;15662:67;:::i;:::-;15655:74;;15738:93;15827:3;15738:93;:::i;:::-;15856:2;15851:3;15847:12;15840:19;;15499:366;;;:::o;15871:419::-;16037:4;16075:2;16064:9;16060:18;16052:26;;16124:9;16118:4;16114:20;16110:1;16099:9;16095:17;16088:47;16152:131;16278:4;16152:131;:::i;:::-;16144:139;;15871:419;;;:::o;16296:229::-;16436:34;16432:1;16424:6;16420:14;16413:58;16505:12;16500:2;16492:6;16488:15;16481:37;16296:229;:::o;16531:366::-;16673:3;16694:67;16758:2;16753:3;16694:67;:::i;:::-;16687:74;;16770:93;16859:3;16770:93;:::i;:::-;16888:2;16883:3;16879:12;16872:19;;16531:366;;;:::o;16903:419::-;17069:4;17107:2;17096:9;17092:18;17084:26;;17156:9;17150:4;17146:20;17142:1;17131:9;17127:17;17120:47;17184:131;17310:4;17184:131;:::i;:::-;17176:139;;16903:419;;;:::o;17328:225::-;17468:34;17464:1;17456:6;17452:14;17445:58;17537:8;17532:2;17524:6;17520:15;17513:33;17328:225;:::o;17559:366::-;17701:3;17722:67;17786:2;17781:3;17722:67;:::i;:::-;17715:74;;17798:93;17887:3;17798:93;:::i;:::-;17916:2;17911:3;17907:12;17900:19;;17559:366;;;:::o;17931:419::-;18097:4;18135:2;18124:9;18120:18;18112:26;;18184:9;18178:4;18174:20;18170:1;18159:9;18155:17;18148:47;18212:131;18338:4;18212:131;:::i;:::-;18204:139;;17931:419;;;:::o;18356:223::-;18496:34;18492:1;18484:6;18480:14;18473:58;18565:6;18560:2;18552:6;18548:15;18541:31;18356:223;:::o;18585:366::-;18727:3;18748:67;18812:2;18807:3;18748:67;:::i;:::-;18741:74;;18824:93;18913:3;18824:93;:::i;:::-;18942:2;18937:3;18933:12;18926:19;;18585:366;;;:::o;18957:419::-;19123:4;19161:2;19150:9;19146:18;19138:26;;19210:9;19204:4;19200:20;19196:1;19185:9;19181:17;19174:47;19238:131;19364:4;19238:131;:::i;:::-;19230:139;;18957:419;;;:::o;19382:221::-;19522:34;19518:1;19510:6;19506:14;19499:58;19591:4;19586:2;19578:6;19574:15;19567:29;19382:221;:::o;19609:366::-;19751:3;19772:67;19836:2;19831:3;19772:67;:::i;:::-;19765:74;;19848:93;19937:3;19848:93;:::i;:::-;19966:2;19961:3;19957:12;19950:19;;19609:366;;;:::o;19981:419::-;20147:4;20185:2;20174:9;20170:18;20162:26;;20234:9;20228:4;20224:20;20220:1;20209:9;20205:17;20198:47;20262:131;20388:4;20262:131;:::i;:::-;20254:139;;19981:419;;;:::o;20406:224::-;20546:34;20542:1;20534:6;20530:14;20523:58;20615:7;20610:2;20602:6;20598:15;20591:32;20406:224;:::o;20636:366::-;20778:3;20799:67;20863:2;20858:3;20799:67;:::i;:::-;20792:74;;20875:93;20964:3;20875:93;:::i;:::-;20993:2;20988:3;20984:12;20977:19;;20636:366;;;:::o;21008:419::-;21174:4;21212:2;21201:9;21197:18;21189:26;;21261:9;21255:4;21251:20;21247:1;21236:9;21232:17;21225:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21008:419;;;:::o;21433:222::-;21573:34;21569:1;21561:6;21557:14;21550:58;21642:5;21637:2;21629:6;21625:15;21618:30;21433:222;:::o;21661:366::-;21803:3;21824:67;21888:2;21883:3;21824:67;:::i;:::-;21817:74;;21900:93;21989:3;21900:93;:::i;:::-;22018:2;22013:3;22009:12;22002:19;;21661:366;;;:::o;22033:419::-;22199:4;22237:2;22226:9;22222:18;22214:26;;22286:9;22280:4;22276:20;22272:1;22261:9;22257:17;22250:47;22314:131;22440:4;22314:131;:::i;:::-;22306:139;;22033:419;;;:::o;22458:235::-;22598:34;22594:1;22586:6;22582:14;22575:58;22667:18;22662:2;22654:6;22650:15;22643:43;22458:235;:::o;22699:366::-;22841:3;22862:67;22926:2;22921:3;22862:67;:::i;:::-;22855:74;;22938:93;23027:3;22938:93;:::i;:::-;23056:2;23051:3;23047:12;23040:19;;22699:366;;;:::o;23071:419::-;23237:4;23275:2;23264:9;23260:18;23252:26;;23324:9;23318:4;23314:20;23310:1;23299:9;23295:17;23288:47;23352:131;23478:4;23352:131;:::i;:::-;23344:139;;23071:419;;;:::o;23496:223::-;23636:34;23632:1;23624:6;23620:14;23613:58;23705:6;23700:2;23692:6;23688:15;23681:31;23496:223;:::o;23725:366::-;23867:3;23888:67;23952:2;23947:3;23888:67;:::i;:::-;23881:74;;23964:93;24053:3;23964:93;:::i;:::-;24082:2;24077:3;24073:12;24066:19;;23725:366;;;:::o;24097:419::-;24263:4;24301:2;24290:9;24286:18;24278:26;;24350:9;24344:4;24340:20;24336:1;24325:9;24321:17;24314:47;24378:131;24504:4;24378:131;:::i;:::-;24370:139;;24097:419;;;:::o;24522:410::-;24562:7;24585:20;24603:1;24585:20;:::i;:::-;24580:25;;24619:20;24637:1;24619:20;:::i;:::-;24614:25;;24674:1;24671;24667:9;24696:30;24714:11;24696:30;:::i;:::-;24685:41;;24875:1;24866:7;24862:15;24859:1;24856:22;24836:1;24829:9;24809:83;24786:139;;24905:18;;:::i;:::-;24786:139;24570:362;24522:410;;;;:::o;24938:194::-;24978:4;24998:20;25016:1;24998:20;:::i;:::-;24993:25;;25032:20;25050:1;25032:20;:::i;:::-;25027:25;;25076:1;25073;25069:9;25061:17;;25100:1;25094:4;25091:11;25088:37;;;25105:18;;:::i;:::-;25088:37;24938:194;;;;:::o;25138:225::-;25278:34;25274:1;25266:6;25262:14;25255:58;25347:8;25342:2;25334:6;25330:15;25323:33;25138:225;:::o;25369:366::-;25511:3;25532:67;25596:2;25591:3;25532:67;:::i;:::-;25525:74;;25608:93;25697:3;25608:93;:::i;:::-;25726:2;25721:3;25717:12;25710:19;;25369:366;;;:::o;25741:419::-;25907:4;25945:2;25934:9;25930:18;25922:26;;25994:9;25988:4;25984:20;25980:1;25969:9;25965:17;25958:47;26022:131;26148:4;26022:131;:::i;:::-;26014:139;;25741:419;;;:::o;26166:332::-;26287:4;26325:2;26314:9;26310:18;26302:26;;26338:71;26406:1;26395:9;26391:17;26382:6;26338:71;:::i;:::-;26419:72;26487:2;26476:9;26472:18;26463:6;26419:72;:::i;:::-;26166:332;;;;;:::o;26504:180::-;26552:77;26549:1;26542:88;26649:4;26646:1;26639:15;26673:4;26670:1;26663:15;26690:180;26738:77;26735:1;26728:88;26835:4;26832:1;26825:15;26859:4;26856:1;26849:15;26876:143;26933:5;26964:6;26958:13;26949:22;;26980:33;27007:5;26980:33;:::i;:::-;26876:143;;;;:::o;27025:351::-;27095:6;27144:2;27132:9;27123:7;27119:23;27115:32;27112:119;;;27150:79;;:::i;:::-;27112:119;27270:1;27295:64;27351:7;27342:6;27331:9;27327:22;27295:64;:::i;:::-;27285:74;;27241:128;27025:351;;;;:::o;27382:85::-;27427:7;27456:5;27445:16;;27382:85;;;:::o;27473:158::-;27531:9;27564:61;27582:42;27591:32;27617:5;27591:32;:::i;:::-;27582:42;:::i;:::-;27564:61;:::i;:::-;27551:74;;27473:158;;;:::o;27637:147::-;27732:45;27771:5;27732:45;:::i;:::-;27727:3;27720:58;27637:147;;:::o;27790:114::-;27857:6;27891:5;27885:12;27875:22;;27790:114;;;:::o;27910:184::-;28009:11;28043:6;28038:3;28031:19;28083:4;28078:3;28074:14;28059:29;;27910:184;;;;:::o;28100:132::-;28167:4;28190:3;28182:11;;28220:4;28215:3;28211:14;28203:22;;28100:132;;;:::o;28238:108::-;28315:24;28333:5;28315:24;:::i;:::-;28310:3;28303:37;28238:108;;:::o;28352:179::-;28421:10;28442:46;28484:3;28476:6;28442:46;:::i;:::-;28520:4;28515:3;28511:14;28497:28;;28352:179;;;;:::o;28537:113::-;28607:4;28639;28634:3;28630:14;28622:22;;28537:113;;;:::o;28686:732::-;28805:3;28834:54;28882:5;28834:54;:::i;:::-;28904:86;28983:6;28978:3;28904:86;:::i;:::-;28897:93;;29014:56;29064:5;29014:56;:::i;:::-;29093:7;29124:1;29109:284;29134:6;29131:1;29128:13;29109:284;;;29210:6;29204:13;29237:63;29296:3;29281:13;29237:63;:::i;:::-;29230:70;;29323:60;29376:6;29323:60;:::i;:::-;29313:70;;29169:224;29156:1;29153;29149:9;29144:14;;29109:284;;;29113:14;29409:3;29402:10;;28810:608;;;28686:732;;;;:::o;29424:831::-;29687:4;29725:3;29714:9;29710:19;29702:27;;29739:71;29807:1;29796:9;29792:17;29783:6;29739:71;:::i;:::-;29820:80;29896:2;29885:9;29881:18;29872:6;29820:80;:::i;:::-;29947:9;29941:4;29937:20;29932:2;29921:9;29917:18;29910:48;29975:108;30078:4;30069:6;29975:108;:::i;:::-;29967:116;;30093:72;30161:2;30150:9;30146:18;30137:6;30093:72;:::i;:::-;30175:73;30243:3;30232:9;30228:19;30219:6;30175:73;:::i;:::-;29424:831;;;;;;;;:::o;30261:807::-;30510:4;30548:3;30537:9;30533:19;30525:27;;30562:71;30630:1;30619:9;30615:17;30606:6;30562:71;:::i;:::-;30643:72;30711:2;30700:9;30696:18;30687:6;30643:72;:::i;:::-;30725:80;30801:2;30790:9;30786:18;30777:6;30725:80;:::i;:::-;30815;30891:2;30880:9;30876:18;30867:6;30815:80;:::i;:::-;30905:73;30973:3;30962:9;30958:19;30949:6;30905:73;:::i;:::-;30988;31056:3;31045:9;31041:19;31032:6;30988:73;:::i;:::-;30261:807;;;;;;;;;:::o;31074:143::-;31131:5;31162:6;31156:13;31147:22;;31178:33;31205:5;31178:33;:::i;:::-;31074:143;;;;:::o;31223:663::-;31311:6;31319;31327;31376:2;31364:9;31355:7;31351:23;31347:32;31344:119;;;31382:79;;:::i;:::-;31344:119;31502:1;31527:64;31583:7;31574:6;31563:9;31559:22;31527:64;:::i;:::-;31517:74;;31473:128;31640:2;31666:64;31722:7;31713:6;31702:9;31698:22;31666:64;:::i;:::-;31656:74;;31611:129;31779:2;31805:64;31861:7;31852:6;31841:9;31837:22;31805:64;:::i;:::-;31795:74;;31750:129;31223:663;;;;;:::o

Swarm Source

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