ETH Price: $2,375.81 (+0.32%)

Token

PREME Token (PREME)
 

Overview

Max Total Supply

294,990,000 PREME

Holders

4,105 ( 0.024%)

Total Transfers

-

Market

Price

$0.00 @ 0.000002 ETH (+1.24%)

Onchain Market Cap

$1,424,562.13

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

PREME is the gateway from Web2 to Web3. PREME help companies, artists and entertainers grow with NFT and Web3 Solutions.

Market

Volume (24H):$1,395.84
Market Capitalization:$0.00
Circulating Supply:0.00 PREME
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PREME

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

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

// SPDX-License-Identifier: UNLICENSED
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


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

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @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 {_mint}.
 * 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 Contracts guidelines: functions revert
 * instead 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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 _mint(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 Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), 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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 {}
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface BURNTOKEN {
  function burn(uint256 amount) external;
}


pragma solidity ^0.8.0;

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

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

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

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

contract PREME is Ownable, ERC20('PREME Token', 'PREME') {
       
    IRouter public Router;
    
    uint256 public devFee;
    uint256 public burnFee;
    uint256 public NFTFee;
    address public burnToken;
    uint256 public swapAtAmount;
    address payable public  marketingWallet;
    address payable public NFTWallet;
    address public swapPair;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isExcludedFromFees;
    
    constructor(address _router, address _MarketingWallet, address _NFTWallet, uint256 initialSupply, address _burnToken)  {
       devFee = 100;  // 100 = 1%
       burnFee = 100; // 100 = 1%
       NFTFee = 100;  // 100 = 1%
       burnToken = _burnToken;
       marketingWallet = payable(_MarketingWallet);
       NFTWallet = payable(_NFTWallet);
       excludeFromFees(owner(), true);
       excludeFromFees(address(this), true);
       _mint(owner(), initialSupply * (10**18));
       swapAtAmount = totalSupply() * 10 / 1000000;  // .01% 
       updateSwapRouter(_router);   
    }
   
     event ExcludeFromFees(address indexed account, bool isExcluded);
     event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    function setDevFee(uint256 _newDevFee) public onlyOwner {
      require(_newDevFee <= 1000, "Cannot exceed 1000");
      devFee = _newDevFee;
    }
    
    function setBurnFee(uint256 _newBurnFee) public onlyOwner {
      require(_newBurnFee <= 1000, "Cannot exceed 1000");
      burnFee = _newBurnFee;
    }

    function setNFTFee(uint256 _newNFTFee) public onlyOwner {
      require(_newNFTFee <= 1000, "Cannot exceed 1000");
      NFTFee = _newNFTFee;
    }
    
    function setMarketingWallet(address payable newMarketingWallet) public onlyOwner {
         if (_isExcludedFromFees[marketingWallet] = true) excludeFromFees(marketingWallet, false);
        marketingWallet = newMarketingWallet;
         if (_isExcludedFromFees[marketingWallet] = false) excludeFromFees(marketingWallet, true);
    }

    function setBurnToken(address _newBurnToken) external onlyOwner {
        burnToken = _newBurnToken;
    }
    
    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 _setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
   
    function updateSwapRouter(address newAddress) public onlyOwner {
        require(newAddress != address(Router), "The router already has that address");
        Router = IRouter(newAddress);
        address bnbPair = IFactory(Router.factory())
            .getPair(address(this), Router.WETH());
        if(bnbPair == address(0)) bnbPair = IFactory(Router.factory()).createPair(address(this), Router.WETH());
        if (automatedMarketMakerPairs[bnbPair] != true && bnbPair != address(0) ){
            _setAutomatedMarketMakerPair(bnbPair, true);
        }
          _approve(address(this), address(Router), ~uint256(0));
        
        swapPair = bnbPair;
    }
    
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setSwapAtAmount(uint256 _newSwapAtAmount) external onlyOwner {
        swapAtAmount = _newSwapAtAmount;
    }

    bool private inSwapAndLiquify;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
           
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {

            if(automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from]) {
                uint256 extraFee;
                if(devFee >0 || burnFee >0 || NFTFee >0) extraFee =(amount * devFee)/10000 + (amount * burnFee)/10000 + (amount * NFTFee)/10000;
                

                if (balanceOf(address(this)) > swapAtAmount && !inSwapAndLiquify && automatedMarketMakerPairs[to]) SwapFees();
                
                if (extraFee > 0) {
                  super._transfer(from, address(this), extraFee);
                  amount = amount - extraFee;
                }
                
            }     
        }
      super._transfer(from, to, amount);
        
   }

    function SwapFees() private lockTheSwap {
       
          address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = Router.WETH();

                Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                    balanceOf(address(this)),
                    0,
                    path,
                    address(this),
                    block.timestamp
                );

            uint256 burnAmount = address(this).balance * burnFee / (burnFee + devFee + NFTFee);
            
            address[] memory path1 = new address[](2);
            path1[0] = Router.WETH();
            path1[1] = burnToken;

                Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: burnAmount} (
                    0,
                    path1,
                    address(this),
                    block.timestamp
                );
                        
            BURNTOKEN(burnToken).burn(ERC20(burnToken).balanceOf(address(this)));

            uint256 NFTAmount = address(this).balance * NFTFee / ( devFee + NFTFee );

            payable(NFTWallet).transfer(NFTAmount);
            payable(marketingWallet).transfer(address(this).balance);
                    
    }

        function manualSwapAndBurn() external onlyOwner {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = Router.WETH();

                Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                    balanceOf(address(this)),
                    0,
                    path,
                    address(this),
                    block.timestamp
                );

            uint256 burnAmount = address(this).balance * burnFee / (burnFee + devFee + NFTFee);
            
            address[] memory path1 = new address[](2);
            path1[0] = Router.WETH();
            path1[1] = burnToken;

                Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: burnAmount} (
                    0,
                    path1,
                    address(this),
                    block.timestamp
                );
                        
            BURNTOKEN(burnToken).burn(ERC20(burnToken).balanceOf(address(this)));

            uint256 NFTAmount = address(this).balance * NFTFee / ( devFee + NFTFee );

            payable(NFTWallet).transfer(NFTAmount);
            payable(marketingWallet).transfer(address(this).balance);
        }

        function withdawlBNB() external onlyOwner {
            payable(msg.sender).transfer(address(this).balance);
        }

        function withdrawlToken(address _tokenAddress) external onlyOwner {
            ERC20(_tokenAddress).transfer(msg.sender, ERC20(_tokenAddress).balanceOf(address(this)));
        }   
 

    // to receive Eth From Router when Swapping
    receive() external payable {}
    
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_MarketingWallet","type":"address"},{"internalType":"address","name":"_NFTWallet","type":"address"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"_burnToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"NFTFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFTWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"manualSwapAndBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"_newBurnFee","type":"uint256"}],"name":"setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBurnToken","type":"address"}],"name":"setBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDevFee","type":"uint256"}],"name":"setDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newNFTFee","type":"uint256"}],"name":"setNFTFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapAtAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdawlBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"withdrawlToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162005aa738038062005aa7833981810160405281019062000037919062001158565b6040518060400160405280600b81526020017f5052454d4520546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5052454d45000000000000000000000000000000000000000000000000000000815250620000c3620000b76200028d60201b60201c565b6200029560201b60201c565b8160049080519060200190620000db92919062001003565b508060059080519060200190620000f492919062001003565b50505060646007819055506064600881905550606460098190555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001f4620001e66200035960201b60201c565b60016200038260201b60201c565b620002073060016200038260201b60201c565b6200023d6200021b6200035960201b60201c565b670de0b6b3a7640000846200023191906200120f565b620004d360201b60201c565b620f4240600a620002536200064d60201b60201c565b6200025f91906200120f565b6200026b91906200129f565b600b8190555062000282856200065760201b60201c565b50505050506200185e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200039262000c4e60201b60201c565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000428576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200041f906200135e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620004c791906200139d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000546576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200053d906200140a565b60405180910390fd5b6200055a6000838362000cdf60201b60201c565b80600360008282546200056e91906200142c565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005c691906200142c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200062d91906200149a565b60405180910390a3620006496000838362000ce460201b60201c565b5050565b6000600354905090565b6200066762000c4e60201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620006fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f2906200152d565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620007a757600080fd5b505afa158015620007bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e291906200154f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200086757600080fd5b505afa1580156200087c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008a291906200154f565b6040518363ffffffff1660e01b8152600401620008c192919062001592565b60206040518083038186803b158015620008da57600080fd5b505afa158015620008ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200091591906200154f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b2957600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620009b657600080fd5b505afa158015620009cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009f191906200154f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a7657600080fd5b505afa15801562000a8b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab191906200154f565b6040518363ffffffff1660e01b815260040162000ad092919062001592565b602060405180830381600087803b15801562000aeb57600080fd5b505af115801562000b00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b2691906200154f565b90505b60011515600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415801562000bb85750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1562000bd25762000bd181600162000ce960201b60201c565b5b62000c0930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001962000e3060201b60201c565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b62000c5e6200028d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000c846200035960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cd4906200160f565b60405180910390fd5b565b505050565b505050565b62000cf962000c4e60201b60201c565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d8690620016a7565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000ea3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e9a906200173f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000f16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f0d90620017d7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000ff691906200149a565b60405180910390a3505050565b828054620010119062001828565b90600052602060002090601f01602090048101928262001035576000855562001081565b82601f106200105057805160ff191683800117855562001081565b8280016001018555821562001081579182015b828111156200108057825182559160200191906001019062001063565b5b50905062001090919062001094565b5090565b5b80821115620010af57600081600090555060010162001095565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010e582620010b8565b9050919050565b620010f781620010d8565b81146200110357600080fd5b50565b6000815190506200111781620010ec565b92915050565b6000819050919050565b62001132816200111d565b81146200113e57600080fd5b50565b600081519050620011528162001127565b92915050565b600080600080600060a08688031215620011775762001176620010b3565b5b6000620011878882890162001106565b95505060206200119a8882890162001106565b9450506040620011ad8882890162001106565b9350506060620011c08882890162001141565b9250506080620011d38882890162001106565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200121c826200111d565b915062001229836200111d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620012655762001264620011e0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012ac826200111d565b9150620012b9836200111d565b925082620012cc57620012cb62001270565b5b828204905092915050565b600082825260208201905092915050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062001346602a83620012d7565b91506200135382620012e8565b604082019050919050565b60006020820190508181036000830152620013798162001337565b9050919050565b60008115159050919050565b620013978162001380565b82525050565b6000602082019050620013b460008301846200138c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620013f2601f83620012d7565b9150620013ff82620013ba565b602082019050919050565b600060208201905081810360008301526200142581620013e3565b9050919050565b600062001439826200111d565b915062001446836200111d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200147e576200147d620011e0565b5b828201905092915050565b62001494816200111d565b82525050565b6000602082019050620014b1600083018462001489565b92915050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062001515602383620012d7565b91506200152282620014b7565b604082019050919050565b60006020820190508181036000830152620015488162001506565b9050919050565b600060208284031215620015685762001567620010b3565b5b6000620015788482850162001106565b91505092915050565b6200158c81620010d8565b82525050565b6000604082019050620015a9600083018562001581565b620015b8602083018462001581565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620015f7602083620012d7565b91506200160482620015bf565b602082019050919050565b600060208201905081810360008301526200162a81620015e8565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200168f603883620012d7565b91506200169c8262001631565b604082019050919050565b60006020820190508181036000830152620016c28162001680565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001727602483620012d7565b91506200173482620016c9565b604082019050919050565b600060208201905081810360008301526200175a8162001718565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620017bf602283620012d7565b9150620017cc8262001761565b604082019050919050565b60006020820190508181036000830152620017f281620017b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200184157607f821691505b60208210811415620018585762001857620017f9565b5b50919050565b614239806200186e6000396000f3fe60806040526004361061021e5760003560e01c8063881196de11610123578063b9413b51116100ab578063e799ffb11161006f578063e799ffb1146107f0578063f2fde38b14610807578063f6d7eade14610830578063faa0a2641461085b578063fce589d81461088657610225565b8063b9413b5114610721578063b98b677f14610738578063c024666814610761578063c35879801461078a578063dd62ed3e146107b357610225565b8063a457c2d7116100f2578063a457c2d714610618578063a7f7b36f14610655578063a9059cbb1461067e578063ac5cad56146106bb578063b62496f5146106e457610225565b8063881196de1461056e5780638da5cb5b1461059957806395d89b41146105c4578063a2186ab5146105ef57610225565b80634bf2c7c9116101a65780636827e764116101755780636827e7641461049957806370a08231146104c4578063715018a61461050157806375f0a87414610518578063869175241461054357610225565b80634bf2c7c9146103e15780634fbee1931461040a5780635d098b38146104475780636402511e1461047057610225565b806323b872dd116101ed57806323b872dd146102e657806326991cc814610323578063313ce5671461034e578063395093511461037957806342e6253b146103b657610225565b806306fdde031461022a578063095ea7b31461025557806318160ddd146102925780631c75b6b2146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b1565b60405161024c91906131fe565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906132b9565b610943565b6040516102899190613314565b60405180910390f35b34801561029e57600080fd5b506102a7610966565b6040516102b4919061333e565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613359565b610970565b005b3480156102f257600080fd5b5061030d60048036038101906103089190613386565b6109c7565b60405161031a9190613314565b60405180910390f35b34801561032f57600080fd5b506103386109f6565b60405161034591906133e8565b60405180910390f35b34801561035a57600080fd5b50610363610a1c565b604051610370919061341f565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906132b9565b610a25565b6040516103ad9190613314565b60405180910390f35b3480156103c257600080fd5b506103cb610a5c565b6040516103d8919061333e565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190613359565b610a62565b005b34801561041657600080fd5b50610431600480360381019061042c919061343a565b610ab9565b60405161043e9190613314565b60405180910390f35b34801561045357600080fd5b5061046e600480360381019061046991906134a5565b610b0f565b005b34801561047c57600080fd5b5061049760048036038101906104929190613359565b610cb3565b005b3480156104a557600080fd5b506104ae610cc5565b6040516104bb919061333e565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e6919061343a565b610ccb565b6040516104f8919061333e565b60405180910390f35b34801561050d57600080fd5b50610516610d14565b005b34801561052457600080fd5b5061052d610d28565b60405161053a91906134e1565b60405180910390f35b34801561054f57600080fd5b50610558610d4e565b604051610565919061333e565b60405180910390f35b34801561057a57600080fd5b50610583610d54565b60405161059091906134e1565b60405180910390f35b3480156105a557600080fd5b506105ae610d7a565b6040516105bb91906133e8565b60405180910390f35b3480156105d057600080fd5b506105d9610da3565b6040516105e691906131fe565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190613359565b610e35565b005b34801561062457600080fd5b5061063f600480360381019061063a91906132b9565b610e8c565b60405161064c9190613314565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190613528565b610f03565b005b34801561068a57600080fd5b506106a560048036038101906106a091906132b9565b61103f565b6040516106b29190613314565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd919061343a565b611062565b005b3480156106f057600080fd5b5061070b6004803603810190610706919061343a565b611183565b6040516107189190613314565b60405180910390f35b34801561072d57600080fd5b506107366111a3565b005b34801561074457600080fd5b5061075f600480360381019061075a919061343a565b61188a565b005b34801561076d57600080fd5b5061078860048036038101906107839190613528565b611e47565b005b34801561079657600080fd5b506107b160048036038101906107ac919061343a565b611f8b565b005b3480156107bf57600080fd5b506107da60048036038101906107d59190613568565b611fd7565b6040516107e7919061333e565b60405180910390f35b3480156107fc57600080fd5b5061080561205e565b005b34801561081357600080fd5b5061082e6004803603810190610829919061343a565b6120af565b005b34801561083c57600080fd5b50610845612133565b6040516108529190613607565b60405180910390f35b34801561086757600080fd5b50610870612159565b60405161087d91906133e8565b60405180910390f35b34801561089257600080fd5b5061089b61217f565b6040516108a8919061333e565b60405180910390f35b6060600480546108c090613651565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90613651565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b60008061094e612185565b905061095b81858561218d565b600191505092915050565b6000600354905090565b610978612358565b6103e88111156109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b4906136cf565b60405180910390fd5b8060078190555050565b6000806109d2612185565b90506109df8582856123d6565b6109ea858585612462565b60019150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600080610a30612185565b9050610a51818585610a428589611fd7565b610a4c919061371e565b61218d565b600191505092915050565b60095481565b610a6a612358565b6103e8811115610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa6906136cf565b60405180910390fd5b8060088190555050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b17612358565b600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610bc357610bc2600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611e47565b5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610cb057610caf600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611e47565b5b50565b610cbb612358565b80600b8190555050565b60075481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1c612358565b610d2660006126fe565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610db290613651565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde90613651565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b5050505050905090565b610e3d612358565b6103e8811115610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e79906136cf565b60405180910390fd5b8060098190555050565b600080610e97612185565b90506000610ea58286611fd7565b905083811015610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee1906137e6565b60405180910390fd5b610ef7828686840361218d565b60019250505092915050565b610f0b612358565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590613878565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008061104a612185565b9050611057818585612462565b600191505092915050565b61106a612358565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110c091906133e8565b60206040518083038186803b1580156110d857600080fd5b505afa1580156110ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111091906138ad565b6040518363ffffffff1660e01b815260040161112d9291906138da565b602060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190613918565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6111ab612358565b6000600267ffffffffffffffff8111156111c8576111c7613945565b5b6040519080825280602002602001820160405280156111f65781602001602082028036833780820191505090505b509050308160008151811061120e5761120d613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b057600080fd5b505afa1580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e891906139b8565b816001815181106112fc576112fb613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94761137d30610ccb565b60008430426040518663ffffffff1660e01b81526004016113a2959493929190613ade565b600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b5050505060006009546007546008546113e9919061371e565b6113f3919061371e565b600854476114019190613b38565b61140b9190613bc1565b90506000600267ffffffffffffffff81111561142a57611429613945565b5b6040519080825280602002602001820160405280156114585781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb91906139b8565b8160008151811061150f5761150e613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106115805761157f613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b815260040161161d9493929190613bf2565b6000604051808303818588803b15801561163657600080fd5b505af115801561164a573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116e891906133e8565b60206040518083038186803b15801561170057600080fd5b505afa158015611714573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173891906138ad565b6040518263ffffffff1660e01b8152600401611754919061333e565b600060405180830381600087803b15801561176e57600080fd5b505af1158015611782573d6000803e3d6000fd5b505050506000600954600754611798919061371e565b600954476117a69190613b38565b6117b09190613bc1565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561181a573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611883573d6000803e3d6000fd5b5050505050565b611892612358565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613cb0565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ce57600080fd5b505afa1580156119e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0691906139b8565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac291906139b8565b6040518363ffffffff1660e01b8152600401611adf929190613cd0565b60206040518083038186803b158015611af757600080fd5b505afa158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f91906139b8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d3457600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611bce57600080fd5b505afa158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0691906139b8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8a57600080fd5b505afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc291906139b8565b6040518363ffffffff1660e01b8152600401611cdf929190613cd0565b602060405180830381600087803b158015611cf957600080fd5b505af1158015611d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3191906139b8565b90505b60011515600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015611dc25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611dd357611dd2816001610f03565b5b611e0230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961218d565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611e4f612358565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed990613d6b565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f7f9190613314565b60405180910390a25050565b611f93612358565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612066612358565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156120ac573d6000803e3d6000fd5b50565b6120b7612358565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90613dfd565b60405180910390fd5b612130816126fe565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490613e8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613f21565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161234b919061333e565b60405180910390a3505050565b612360612185565b73ffffffffffffffffffffffffffffffffffffffff1661237e610d7a565b73ffffffffffffffffffffffffffffffffffffffff16146123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613f8d565b60405180910390fd5b565b60006123e28484611fd7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461245c578181101561244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590613ff9565b60405180910390fd5b61245b848484840361218d565b5b50505050565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125065750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ee57600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125ac5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ed5760008060075411806125c557506000600854115b806125d257506000600954115b1561263f57612710600954836125e89190613b38565b6125f29190613bc1565b612710600854846126039190613b38565b61260d9190613bc1565b6127106007548561261e9190613b38565b6126289190613bc1565b612632919061371e565b61263c919061371e565b90505b600b5461264b30610ccb565b1180156126655750601160009054906101000a900460ff16155b80156126ba5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126c8576126c76127c2565b5b60008111156126eb576126dc843083612ed7565b80826126e89190614019565b91505b505b5b6126f9838383612ed7565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601160006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156127fa576127f9613945565b5b6040519080825280602002602001820160405280156128285781602001602082028036833780820191505090505b50905030816000815181106128405761283f613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128e257600080fd5b505afa1580156128f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291a91906139b8565b8160018151811061292e5761292d613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476129af30610ccb565b60008430426040518663ffffffff1660e01b81526004016129d4959493929190613ade565b600060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506000600954600754600854612a1b919061371e565b612a25919061371e565b60085447612a339190613b38565b612a3d9190613bc1565b90506000600267ffffffffffffffff811115612a5c57612a5b613945565b5b604051908082528060200260200182016040528015612a8a5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612af557600080fd5b505afa158015612b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2d91906139b8565b81600081518110612b4157612b40613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612bb257612bb1613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401612c4f9493929190613bf2565b6000604051808303818588803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612d1a91906133e8565b60206040518083038186803b158015612d3257600080fd5b505afa158015612d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6a91906138ad565b6040518263ffffffff1660e01b8152600401612d86919061333e565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b505050506000600954600754612dca919061371e565b60095447612dd89190613b38565b612de29190613bc1565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e4c573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612eb5573d6000803e3d6000fd5b50505050506000601160006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e906140bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fae90614151565b60405180910390fd5b612fc283838361315b565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613049576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613040906141e3565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130de919061371e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613142919061333e565b60405180910390a3613155848484613160565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561319f578082015181840152602081019050613184565b838111156131ae576000848401525b50505050565b6000601f19601f8301169050919050565b60006131d082613165565b6131da8185613170565b93506131ea818560208601613181565b6131f3816131b4565b840191505092915050565b6000602082019050818103600083015261321881846131c5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061325082613225565b9050919050565b61326081613245565b811461326b57600080fd5b50565b60008135905061327d81613257565b92915050565b6000819050919050565b61329681613283565b81146132a157600080fd5b50565b6000813590506132b38161328d565b92915050565b600080604083850312156132d0576132cf613220565b5b60006132de8582860161326e565b92505060206132ef858286016132a4565b9150509250929050565b60008115159050919050565b61330e816132f9565b82525050565b60006020820190506133296000830184613305565b92915050565b61333881613283565b82525050565b6000602082019050613353600083018461332f565b92915050565b60006020828403121561336f5761336e613220565b5b600061337d848285016132a4565b91505092915050565b60008060006060848603121561339f5761339e613220565b5b60006133ad8682870161326e565b93505060206133be8682870161326e565b92505060406133cf868287016132a4565b9150509250925092565b6133e281613245565b82525050565b60006020820190506133fd60008301846133d9565b92915050565b600060ff82169050919050565b61341981613403565b82525050565b60006020820190506134346000830184613410565b92915050565b6000602082840312156134505761344f613220565b5b600061345e8482850161326e565b91505092915050565b600061347282613225565b9050919050565b61348281613467565b811461348d57600080fd5b50565b60008135905061349f81613479565b92915050565b6000602082840312156134bb576134ba613220565b5b60006134c984828501613490565b91505092915050565b6134db81613467565b82525050565b60006020820190506134f660008301846134d2565b92915050565b613505816132f9565b811461351057600080fd5b50565b600081359050613522816134fc565b92915050565b6000806040838503121561353f5761353e613220565b5b600061354d8582860161326e565b925050602061355e85828601613513565b9150509250929050565b6000806040838503121561357f5761357e613220565b5b600061358d8582860161326e565b925050602061359e8582860161326e565b9150509250929050565b6000819050919050565b60006135cd6135c86135c384613225565b6135a8565b613225565b9050919050565b60006135df826135b2565b9050919050565b60006135f1826135d4565b9050919050565b613601816135e6565b82525050565b600060208201905061361c60008301846135f8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061366957607f821691505b6020821081141561367d5761367c613622565b5b50919050565b7f43616e6e6f742065786365656420313030300000000000000000000000000000600082015250565b60006136b9601283613170565b91506136c482613683565b602082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061372982613283565b915061373483613283565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613769576137686136ef565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137d0602583613170565b91506137db82613774565b604082019050919050565b600060208201905081810360008301526137ff816137c3565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000613862603883613170565b915061386d82613806565b604082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b6000815190506138a78161328d565b92915050565b6000602082840312156138c3576138c2613220565b5b60006138d184828501613898565b91505092915050565b60006040820190506138ef60008301856133d9565b6138fc602083018461332f565b9392505050565b600081519050613912816134fc565b92915050565b60006020828403121561392e5761392d613220565b5b600061393c84828501613903565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506139b281613257565b92915050565b6000602082840312156139ce576139cd613220565b5b60006139dc848285016139a3565b91505092915050565b6000819050919050565b6000613a0a613a05613a00846139e5565b6135a8565b613283565b9050919050565b613a1a816139ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a5581613245565b82525050565b6000613a678383613a4c565b60208301905092915050565b6000602082019050919050565b6000613a8b82613a20565b613a958185613a2b565b9350613aa083613a3c565b8060005b83811015613ad1578151613ab88882613a5b565b9750613ac383613a73565b925050600181019050613aa4565b5085935050505092915050565b600060a082019050613af3600083018861332f565b613b006020830187613a11565b8181036040830152613b128186613a80565b9050613b2160608301856133d9565b613b2e608083018461332f565b9695505050505050565b6000613b4382613283565b9150613b4e83613283565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b8757613b866136ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bcc82613283565b9150613bd783613283565b925082613be757613be6613b92565b5b828204905092915050565b6000608082019050613c076000830187613a11565b8181036020830152613c198186613a80565b9050613c2860408301856133d9565b613c35606083018461332f565b95945050505050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c9a602383613170565b9150613ca582613c3e565b604082019050919050565b60006020820190508181036000830152613cc981613c8d565b9050919050565b6000604082019050613ce560008301856133d9565b613cf260208301846133d9565b9392505050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613d55602a83613170565b9150613d6082613cf9565b604082019050919050565b60006020820190508181036000830152613d8481613d48565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613de7602683613170565b9150613df282613d8b565b604082019050919050565b60006020820190508181036000830152613e1681613dda565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e79602483613170565b9150613e8482613e1d565b604082019050919050565b60006020820190508181036000830152613ea881613e6c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f0b602283613170565b9150613f1682613eaf565b604082019050919050565b60006020820190508181036000830152613f3a81613efe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f77602083613170565b9150613f8282613f41565b602082019050919050565b60006020820190508181036000830152613fa681613f6a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613fe3601d83613170565b9150613fee82613fad565b602082019050919050565b6000602082019050818103600083015261401281613fd6565b9050919050565b600061402482613283565b915061402f83613283565b925082821015614042576140416136ef565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140a9602583613170565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061413b602383613170565b9150614146826140df565b604082019050919050565b6000602082019050818103600083015261416a8161412e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141cd602683613170565b91506141d882614171565b604082019050919050565b600060208201905081810360008301526141fc816141c0565b905091905056fea26469706673582212202d6d831c978e19448f3a11beafdc8815dacea7e6d5e0689187046c200f2fd9d864736f6c634300080900330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000bc87795e74107d2023f29ff024036d17ee1a364500000000000000000000000049685d5c5163d58f344d825912c4789bce42496c00000000000000000000000000000000000000000000000000000000119530b000000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063881196de11610123578063b9413b51116100ab578063e799ffb11161006f578063e799ffb1146107f0578063f2fde38b14610807578063f6d7eade14610830578063faa0a2641461085b578063fce589d81461088657610225565b8063b9413b5114610721578063b98b677f14610738578063c024666814610761578063c35879801461078a578063dd62ed3e146107b357610225565b8063a457c2d7116100f2578063a457c2d714610618578063a7f7b36f14610655578063a9059cbb1461067e578063ac5cad56146106bb578063b62496f5146106e457610225565b8063881196de1461056e5780638da5cb5b1461059957806395d89b41146105c4578063a2186ab5146105ef57610225565b80634bf2c7c9116101a65780636827e764116101755780636827e7641461049957806370a08231146104c4578063715018a61461050157806375f0a87414610518578063869175241461054357610225565b80634bf2c7c9146103e15780634fbee1931461040a5780635d098b38146104475780636402511e1461047057610225565b806323b872dd116101ed57806323b872dd146102e657806326991cc814610323578063313ce5671461034e578063395093511461037957806342e6253b146103b657610225565b806306fdde031461022a578063095ea7b31461025557806318160ddd146102925780631c75b6b2146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b1565b60405161024c91906131fe565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906132b9565b610943565b6040516102899190613314565b60405180910390f35b34801561029e57600080fd5b506102a7610966565b6040516102b4919061333e565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613359565b610970565b005b3480156102f257600080fd5b5061030d60048036038101906103089190613386565b6109c7565b60405161031a9190613314565b60405180910390f35b34801561032f57600080fd5b506103386109f6565b60405161034591906133e8565b60405180910390f35b34801561035a57600080fd5b50610363610a1c565b604051610370919061341f565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906132b9565b610a25565b6040516103ad9190613314565b60405180910390f35b3480156103c257600080fd5b506103cb610a5c565b6040516103d8919061333e565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190613359565b610a62565b005b34801561041657600080fd5b50610431600480360381019061042c919061343a565b610ab9565b60405161043e9190613314565b60405180910390f35b34801561045357600080fd5b5061046e600480360381019061046991906134a5565b610b0f565b005b34801561047c57600080fd5b5061049760048036038101906104929190613359565b610cb3565b005b3480156104a557600080fd5b506104ae610cc5565b6040516104bb919061333e565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e6919061343a565b610ccb565b6040516104f8919061333e565b60405180910390f35b34801561050d57600080fd5b50610516610d14565b005b34801561052457600080fd5b5061052d610d28565b60405161053a91906134e1565b60405180910390f35b34801561054f57600080fd5b50610558610d4e565b604051610565919061333e565b60405180910390f35b34801561057a57600080fd5b50610583610d54565b60405161059091906134e1565b60405180910390f35b3480156105a557600080fd5b506105ae610d7a565b6040516105bb91906133e8565b60405180910390f35b3480156105d057600080fd5b506105d9610da3565b6040516105e691906131fe565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190613359565b610e35565b005b34801561062457600080fd5b5061063f600480360381019061063a91906132b9565b610e8c565b60405161064c9190613314565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190613528565b610f03565b005b34801561068a57600080fd5b506106a560048036038101906106a091906132b9565b61103f565b6040516106b29190613314565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd919061343a565b611062565b005b3480156106f057600080fd5b5061070b6004803603810190610706919061343a565b611183565b6040516107189190613314565b60405180910390f35b34801561072d57600080fd5b506107366111a3565b005b34801561074457600080fd5b5061075f600480360381019061075a919061343a565b61188a565b005b34801561076d57600080fd5b5061078860048036038101906107839190613528565b611e47565b005b34801561079657600080fd5b506107b160048036038101906107ac919061343a565b611f8b565b005b3480156107bf57600080fd5b506107da60048036038101906107d59190613568565b611fd7565b6040516107e7919061333e565b60405180910390f35b3480156107fc57600080fd5b5061080561205e565b005b34801561081357600080fd5b5061082e6004803603810190610829919061343a565b6120af565b005b34801561083c57600080fd5b50610845612133565b6040516108529190613607565b60405180910390f35b34801561086757600080fd5b50610870612159565b60405161087d91906133e8565b60405180910390f35b34801561089257600080fd5b5061089b61217f565b6040516108a8919061333e565b60405180910390f35b6060600480546108c090613651565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90613651565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b60008061094e612185565b905061095b81858561218d565b600191505092915050565b6000600354905090565b610978612358565b6103e88111156109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b4906136cf565b60405180910390fd5b8060078190555050565b6000806109d2612185565b90506109df8582856123d6565b6109ea858585612462565b60019150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600080610a30612185565b9050610a51818585610a428589611fd7565b610a4c919061371e565b61218d565b600191505092915050565b60095481565b610a6a612358565b6103e8811115610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa6906136cf565b60405180910390fd5b8060088190555050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b17612358565b600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610bc357610bc2600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611e47565b5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610cb057610caf600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611e47565b5b50565b610cbb612358565b80600b8190555050565b60075481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1c612358565b610d2660006126fe565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610db290613651565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde90613651565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b5050505050905090565b610e3d612358565b6103e8811115610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e79906136cf565b60405180910390fd5b8060098190555050565b600080610e97612185565b90506000610ea58286611fd7565b905083811015610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee1906137e6565b60405180910390fd5b610ef7828686840361218d565b60019250505092915050565b610f0b612358565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590613878565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008061104a612185565b9050611057818585612462565b600191505092915050565b61106a612358565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110c091906133e8565b60206040518083038186803b1580156110d857600080fd5b505afa1580156110ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111091906138ad565b6040518363ffffffff1660e01b815260040161112d9291906138da565b602060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190613918565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6111ab612358565b6000600267ffffffffffffffff8111156111c8576111c7613945565b5b6040519080825280602002602001820160405280156111f65781602001602082028036833780820191505090505b509050308160008151811061120e5761120d613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b057600080fd5b505afa1580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e891906139b8565b816001815181106112fc576112fb613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94761137d30610ccb565b60008430426040518663ffffffff1660e01b81526004016113a2959493929190613ade565b600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b5050505060006009546007546008546113e9919061371e565b6113f3919061371e565b600854476114019190613b38565b61140b9190613bc1565b90506000600267ffffffffffffffff81111561142a57611429613945565b5b6040519080825280602002602001820160405280156114585781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb91906139b8565b8160008151811061150f5761150e613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106115805761157f613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b815260040161161d9493929190613bf2565b6000604051808303818588803b15801561163657600080fd5b505af115801561164a573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116e891906133e8565b60206040518083038186803b15801561170057600080fd5b505afa158015611714573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173891906138ad565b6040518263ffffffff1660e01b8152600401611754919061333e565b600060405180830381600087803b15801561176e57600080fd5b505af1158015611782573d6000803e3d6000fd5b505050506000600954600754611798919061371e565b600954476117a69190613b38565b6117b09190613bc1565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561181a573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611883573d6000803e3d6000fd5b5050505050565b611892612358565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613cb0565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ce57600080fd5b505afa1580156119e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0691906139b8565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac291906139b8565b6040518363ffffffff1660e01b8152600401611adf929190613cd0565b60206040518083038186803b158015611af757600080fd5b505afa158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f91906139b8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d3457600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611bce57600080fd5b505afa158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0691906139b8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8a57600080fd5b505afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc291906139b8565b6040518363ffffffff1660e01b8152600401611cdf929190613cd0565b602060405180830381600087803b158015611cf957600080fd5b505af1158015611d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3191906139b8565b90505b60011515600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015611dc25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611dd357611dd2816001610f03565b5b611e0230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961218d565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611e4f612358565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed990613d6b565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f7f9190613314565b60405180910390a25050565b611f93612358565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612066612358565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156120ac573d6000803e3d6000fd5b50565b6120b7612358565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90613dfd565b60405180910390fd5b612130816126fe565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490613e8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613f21565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161234b919061333e565b60405180910390a3505050565b612360612185565b73ffffffffffffffffffffffffffffffffffffffff1661237e610d7a565b73ffffffffffffffffffffffffffffffffffffffff16146123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613f8d565b60405180910390fd5b565b60006123e28484611fd7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461245c578181101561244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590613ff9565b60405180910390fd5b61245b848484840361218d565b5b50505050565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125065750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ee57600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125ac5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ed5760008060075411806125c557506000600854115b806125d257506000600954115b1561263f57612710600954836125e89190613b38565b6125f29190613bc1565b612710600854846126039190613b38565b61260d9190613bc1565b6127106007548561261e9190613b38565b6126289190613bc1565b612632919061371e565b61263c919061371e565b90505b600b5461264b30610ccb565b1180156126655750601160009054906101000a900460ff16155b80156126ba5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126c8576126c76127c2565b5b60008111156126eb576126dc843083612ed7565b80826126e89190614019565b91505b505b5b6126f9838383612ed7565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601160006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156127fa576127f9613945565b5b6040519080825280602002602001820160405280156128285781602001602082028036833780820191505090505b50905030816000815181106128405761283f613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128e257600080fd5b505afa1580156128f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291a91906139b8565b8160018151811061292e5761292d613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476129af30610ccb565b60008430426040518663ffffffff1660e01b81526004016129d4959493929190613ade565b600060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506000600954600754600854612a1b919061371e565b612a25919061371e565b60085447612a339190613b38565b612a3d9190613bc1565b90506000600267ffffffffffffffff811115612a5c57612a5b613945565b5b604051908082528060200260200182016040528015612a8a5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612af557600080fd5b505afa158015612b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2d91906139b8565b81600081518110612b4157612b40613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612bb257612bb1613974565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401612c4f9493929190613bf2565b6000604051808303818588803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612d1a91906133e8565b60206040518083038186803b158015612d3257600080fd5b505afa158015612d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6a91906138ad565b6040518263ffffffff1660e01b8152600401612d86919061333e565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b505050506000600954600754612dca919061371e565b60095447612dd89190613b38565b612de29190613bc1565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e4c573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612eb5573d6000803e3d6000fd5b50505050506000601160006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e906140bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fae90614151565b60405180910390fd5b612fc283838361315b565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613049576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613040906141e3565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130de919061371e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613142919061333e565b60405180910390a3613155848484613160565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561319f578082015181840152602081019050613184565b838111156131ae576000848401525b50505050565b6000601f19601f8301169050919050565b60006131d082613165565b6131da8185613170565b93506131ea818560208601613181565b6131f3816131b4565b840191505092915050565b6000602082019050818103600083015261321881846131c5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061325082613225565b9050919050565b61326081613245565b811461326b57600080fd5b50565b60008135905061327d81613257565b92915050565b6000819050919050565b61329681613283565b81146132a157600080fd5b50565b6000813590506132b38161328d565b92915050565b600080604083850312156132d0576132cf613220565b5b60006132de8582860161326e565b92505060206132ef858286016132a4565b9150509250929050565b60008115159050919050565b61330e816132f9565b82525050565b60006020820190506133296000830184613305565b92915050565b61333881613283565b82525050565b6000602082019050613353600083018461332f565b92915050565b60006020828403121561336f5761336e613220565b5b600061337d848285016132a4565b91505092915050565b60008060006060848603121561339f5761339e613220565b5b60006133ad8682870161326e565b93505060206133be8682870161326e565b92505060406133cf868287016132a4565b9150509250925092565b6133e281613245565b82525050565b60006020820190506133fd60008301846133d9565b92915050565b600060ff82169050919050565b61341981613403565b82525050565b60006020820190506134346000830184613410565b92915050565b6000602082840312156134505761344f613220565b5b600061345e8482850161326e565b91505092915050565b600061347282613225565b9050919050565b61348281613467565b811461348d57600080fd5b50565b60008135905061349f81613479565b92915050565b6000602082840312156134bb576134ba613220565b5b60006134c984828501613490565b91505092915050565b6134db81613467565b82525050565b60006020820190506134f660008301846134d2565b92915050565b613505816132f9565b811461351057600080fd5b50565b600081359050613522816134fc565b92915050565b6000806040838503121561353f5761353e613220565b5b600061354d8582860161326e565b925050602061355e85828601613513565b9150509250929050565b6000806040838503121561357f5761357e613220565b5b600061358d8582860161326e565b925050602061359e8582860161326e565b9150509250929050565b6000819050919050565b60006135cd6135c86135c384613225565b6135a8565b613225565b9050919050565b60006135df826135b2565b9050919050565b60006135f1826135d4565b9050919050565b613601816135e6565b82525050565b600060208201905061361c60008301846135f8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061366957607f821691505b6020821081141561367d5761367c613622565b5b50919050565b7f43616e6e6f742065786365656420313030300000000000000000000000000000600082015250565b60006136b9601283613170565b91506136c482613683565b602082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061372982613283565b915061373483613283565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613769576137686136ef565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137d0602583613170565b91506137db82613774565b604082019050919050565b600060208201905081810360008301526137ff816137c3565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000613862603883613170565b915061386d82613806565b604082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b6000815190506138a78161328d565b92915050565b6000602082840312156138c3576138c2613220565b5b60006138d184828501613898565b91505092915050565b60006040820190506138ef60008301856133d9565b6138fc602083018461332f565b9392505050565b600081519050613912816134fc565b92915050565b60006020828403121561392e5761392d613220565b5b600061393c84828501613903565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506139b281613257565b92915050565b6000602082840312156139ce576139cd613220565b5b60006139dc848285016139a3565b91505092915050565b6000819050919050565b6000613a0a613a05613a00846139e5565b6135a8565b613283565b9050919050565b613a1a816139ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a5581613245565b82525050565b6000613a678383613a4c565b60208301905092915050565b6000602082019050919050565b6000613a8b82613a20565b613a958185613a2b565b9350613aa083613a3c565b8060005b83811015613ad1578151613ab88882613a5b565b9750613ac383613a73565b925050600181019050613aa4565b5085935050505092915050565b600060a082019050613af3600083018861332f565b613b006020830187613a11565b8181036040830152613b128186613a80565b9050613b2160608301856133d9565b613b2e608083018461332f565b9695505050505050565b6000613b4382613283565b9150613b4e83613283565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b8757613b866136ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bcc82613283565b9150613bd783613283565b925082613be757613be6613b92565b5b828204905092915050565b6000608082019050613c076000830187613a11565b8181036020830152613c198186613a80565b9050613c2860408301856133d9565b613c35606083018461332f565b95945050505050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c9a602383613170565b9150613ca582613c3e565b604082019050919050565b60006020820190508181036000830152613cc981613c8d565b9050919050565b6000604082019050613ce560008301856133d9565b613cf260208301846133d9565b9392505050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613d55602a83613170565b9150613d6082613cf9565b604082019050919050565b60006020820190508181036000830152613d8481613d48565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613de7602683613170565b9150613df282613d8b565b604082019050919050565b60006020820190508181036000830152613e1681613dda565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e79602483613170565b9150613e8482613e1d565b604082019050919050565b60006020820190508181036000830152613ea881613e6c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f0b602283613170565b9150613f1682613eaf565b604082019050919050565b60006020820190508181036000830152613f3a81613efe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f77602083613170565b9150613f8282613f41565b602082019050919050565b60006020820190508181036000830152613fa681613f6a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613fe3601d83613170565b9150613fee82613fad565b602082019050919050565b6000602082019050818103600083015261401281613fd6565b9050919050565b600061402482613283565b915061402f83613283565b925082821015614042576140416136ef565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140a9602583613170565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061413b602383613170565b9150614146826140df565b604082019050919050565b6000602082019050818103600083015261416a8161412e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141cd602683613170565b91506141d882614171565b604082019050919050565b600060208201905081810360008301526141fc816141c0565b905091905056fea26469706673582212202d6d831c978e19448f3a11beafdc8815dacea7e6d5e0689187046c200f2fd9d864736f6c63430008090033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000bc87795e74107d2023f29ff024036d17ee1a364500000000000000000000000049685d5c5163d58f344d825912c4789bce42496c00000000000000000000000000000000000000000000000000000000119530b000000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _MarketingWallet (address): 0xbc87795e74107D2023f29FF024036D17eE1A3645
Arg [2] : _NFTWallet (address): 0x49685d5C5163D58f344D825912c4789bCE42496C
Arg [3] : initialSupply (uint256): 294990000
Arg [4] : _burnToken (address): 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000bc87795e74107d2023f29ff024036d17ee1a3645
Arg [2] : 00000000000000000000000049685d5c5163d58f344d825912c4789bce42496c
Arg [3] : 00000000000000000000000000000000000000000000000000000000119530b0
Arg [4] : 00000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce


Deployed Bytecode Sourcemap

21051:7957:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6693:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9044:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7813:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22320:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9825:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21393:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7655:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10529:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21215:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22482:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24588:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22807:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24721:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21158:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7984:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19362:103;;;;;;;;;;;;;:::i;:::-;;21308:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21274:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21354:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18714:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6912:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22645:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11270:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23573:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8317:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28720:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21423:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27306:1270;;;;;;;;;;;;;:::i;:::-;;23899:677;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23271:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23151:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8573:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28588:120;;;;;;;;;;;;;:::i;:::-;;19620:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21124:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21243:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21186:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6693:100;6747:13;6780:5;6773:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6693:100;:::o;9044:201::-;9127:4;9144:13;9160:12;:10;:12::i;:::-;9144:28;;9183:32;9192:5;9199:7;9208:6;9183:8;:32::i;:::-;9233:4;9226:11;;;9044:201;;;;:::o;7813:108::-;7874:7;7901:12;;7894:19;;7813:108;:::o;22320:150::-;18600:13;:11;:13::i;:::-;22407:4:::1;22393:10;:18;;22385:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22452:10;22443:6;:19;;;;22320:150:::0;:::o;9825:295::-;9956:4;9973:15;9991:12;:10;:12::i;:::-;9973:30;;10014:38;10030:4;10036:7;10045:6;10014:15;:38::i;:::-;10063:27;10073:4;10079:2;10083:6;10063:9;:27::i;:::-;10108:4;10101:11;;;9825:295;;;;;:::o;21393:23::-;;;;;;;;;;;;;:::o;7655:93::-;7713:5;7738:2;7731:9;;7655:93;:::o;10529:238::-;10617:4;10634:13;10650:12;:10;:12::i;:::-;10634:28;;10673:64;10682:5;10689:7;10726:10;10698:25;10708:5;10715:7;10698:9;:25::i;:::-;:38;;;;:::i;:::-;10673:8;:64::i;:::-;10755:4;10748:11;;;10529:238;;;;:::o;21215:21::-;;;;:::o;22482:155::-;18600:13;:11;:13::i;:::-;22572:4:::1;22557:11;:19;;22549:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22618:11;22608:7;:21;;;;22482:155:::0;:::o;24588:125::-;24653:4;24677:19;:28;24697:7;24677:28;;;;;;;;;;;;;;;;;;;;;;;;;24670:35;;24588:125;;;:::o;22807:336::-;18600:13;:11;:13::i;:::-;22943:4:::1;22904:19;:36;22924:15;;;;;;;;;;;22904:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;22900:88;;;22949:39;22965:15;;;;;;;;;;;22982:5;22949:15;:39::i;:::-;22900:88;23017:18;22999:15;;:36;;;;;;;;;;;;;;;;;;23090:5;23051:19;:36;23071:15;;;;;;;;;;;23051:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;23047:88;;;23097:38;23113:15;;;;;;;;;;;23130:4;23097:15;:38::i;:::-;23047:88;22807:336:::0;:::o;24721:120::-;18600:13;:11;:13::i;:::-;24817:16:::1;24802:12;:31;;;;24721:120:::0;:::o;21158:21::-;;;;:::o;7984:127::-;8058:7;8085:9;:18;8095:7;8085:18;;;;;;;;;;;;;;;;8078:25;;7984:127;;;:::o;19362:103::-;18600:13;:11;:13::i;:::-;19427:30:::1;19454:1;19427:18;:30::i;:::-;19362:103::o:0;21308:39::-;;;;;;;;;;;;;:::o;21274:27::-;;;;:::o;21354:32::-;;;;;;;;;;;;;:::o;18714:87::-;18760:7;18787:6;;;;;;;;;;;18780:13;;18714:87;:::o;6912:104::-;6968:13;7001:7;6994:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6912:104;:::o;22645:150::-;18600:13;:11;:13::i;:::-;22732:4:::1;22718:10;:18;;22710:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22777:10;22768:6;:19;;;;22645:150:::0;:::o;11270:436::-;11363:4;11380:13;11396:12;:10;:12::i;:::-;11380:28;;11419:24;11446:25;11456:5;11463:7;11446:9;:25::i;:::-;11419:52;;11510:15;11490:16;:35;;11482:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:60;11612:5;11619:7;11647:15;11628:16;:34;11603:8;:60::i;:::-;11694:4;11687:11;;;;11270:436;;;;:::o;23573:315::-;18600:13;:11;:13::i;:::-;23708:5:::1;23673:40;;:25;:31;23699:4;23673:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;23665:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;23819:5;23785:25;:31;23811:4;23785:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23874:5;23840:40;;23868:4;23840:40;;;;;;;;;;;;23573:315:::0;;:::o;8317:193::-;8396:4;8413:13;8429:12;:10;:12::i;:::-;8413:28;;8452;8462:5;8469:2;8473:6;8452:9;:28::i;:::-;8498:4;8491:11;;;8317:193;;;;:::o;28720:181::-;18600:13;:11;:13::i;:::-;28807::::1;28801:29;;;28831:10;28849:13;28843:30;;;28882:4;28843:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28801:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28720:181:::0;:::o;21423:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;27306:1270::-;18600:13;:11;:13::i;:::-;27369:21:::1;27407:1;27393:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27369:40;;27442:4;27424;27429:1;27424:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27472:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27462:4;27467:1;27462:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27506:6;;;;;;;;;;;:57;;;27586:24;27604:4;27586:9;:24::i;:::-;27633:1;27657:4;27692;27720:15;27506:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27771:18;27846:6;;27837;;27827:7;;:16;;;;:::i;:::-;:25;;;;:::i;:::-;27816:7;;27792:21;:31;;;;:::i;:::-;:61;;;;:::i;:::-;27771:82;;27882:22;27921:1;27907:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27882:41;;27949:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27938:5;27944:1;27938:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;27988:9;;;;;;;;;;;27977:5;27983:1;27977:8;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;::::0;::::1;28018:6;;;;;;;;;;;:57;;;28083:10;28118:1;28142:5;28178:4;28206:15;28018:222;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;28291:9;;;;;;;;;;;28281:25;;;28313:9;;;;;;;;;;;28307:26;;;28342:4;28307:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28281:68;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28366:17;28430:6;;28421;;:15;;;;:::i;:::-;28410:6;;28386:21;:30;;;;:::i;:::-;:52;;;;:::i;:::-;28366:72;;28463:9;;;;;;;;;;;28455:27;;:38;28483:9;28455:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28516:15;;;;;;;;;;;28508:33;;:56;28542:21;28508:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27354:1222;;;;27306:1270::o:0;23899:677::-;18600:13;:11;:13::i;:::-;24003:6:::1;;;;;;;;;;;23981:29;;:10;:29;;;;23973:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;24078:10;24061:6;;:28;;;;;;;;;;;;;;;;;;24100:15;24127:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24118:48;;;24175:4;24182:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24118:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24100:96;;24229:1;24210:21;;:7;:21;;;24207:103;;;24252:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24243:37;;;24289:4;24296:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24243:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24233:77;;24207:103;24363:4;24325:42;;:25;:34;24351:7;24325:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;:67;;;;;24390:1;24371:21;;:7;:21;;;;24325:67;24321:143;;;24409:43;24438:7;24447:4;24409:28;:43::i;:::-;24321:143;24476:53;24493:4;24508:6;;;;;;;;;;;24526:1;24517:11;24476:8;:53::i;:::-;24561:7;24550:8;;:18;;;;;;;;;;;;;;;;;;23962:614;23899:677:::0;:::o;23271:290::-;18600:13;:11;:13::i;:::-;23396:8:::1;23364:40;;:19;:28;23384:7;23364:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;23356:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;23493:8;23462:19;:28;23482:7;23462:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23535:7;23519:34;;;23544:8;23519:34;;;;;;:::i;:::-;;;;;;;;23271:290:::0;;:::o;23151:108::-;18600:13;:11;:13::i;:::-;23238::::1;23226:9;;:25;;;;;;;;;;;;;;;;;;23151:108:::0;:::o;8573:151::-;8662:7;8689:11;:18;8701:5;8689:18;;;;;;;;;;;;;;;:27;8708:7;8689:27;;;;;;;;;;;;;;;;8682:34;;8573:151;;;;:::o;28588:120::-;18600:13;:11;:13::i;:::-;28653:10:::1;28645:28;;:51;28674:21;28645:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28588:120::o:0;19620:201::-;18600:13;:11;:13::i;:::-;19729:1:::1;19709:22;;:8;:22;;;;19701:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19785:28;19804:8;19785:18;:28::i;:::-;19620:201:::0;:::o;21124:21::-;;;;;;;;;;;;;:::o;21243:24::-;;;;;;;;;;;;;:::o;21186:22::-;;;;:::o;4333:98::-;4386:7;4413:10;4406:17;;4333:98;:::o;14895:380::-;15048:1;15031:19;;:5;:19;;;;15023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15129:1;15110:21;;:7;:21;;;;15102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15213:6;15183:11;:18;15195:5;15183:18;;;;;;;;;;;;;;;:27;15202:7;15183:27;;;;;;;;;;;;;;;:36;;;;15251:7;15235:32;;15244:5;15235:32;;;15260:6;15235:32;;;;;;:::i;:::-;;;;;;;;14895:380;;;:::o;18879:132::-;18954:12;:10;:12::i;:::-;18943:23;;:7;:5;:7::i;:::-;:23;;;18935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18879:132::o;15566:453::-;15701:24;15728:25;15738:5;15745:7;15728:9;:25::i;:::-;15701:52;;15788:17;15768:16;:37;15764:248;;15850:6;15830:16;:26;;15822:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15934:51;15943:5;15950:7;15978:6;15959:16;:25;15934:8;:51::i;:::-;15764:248;15690:329;15566:453;;;:::o;25007:992::-;25233:19;:25;25253:4;25233:25;;;;;;;;;;;;;;;;;;;;;;;;;25232:26;:54;;;;;25263:19;:23;25283:2;25263:23;;;;;;;;;;;;;;;;;;;;;;;;;25262:24;25232:54;25229:712;;;25308:25;:29;25334:2;25308:29;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;25341:25;:31;25367:4;25341:31;;;;;;;;;;;;;;;;;;;;;;;;;25308:64;25305:620;;;25393:16;25439:1;25431:6;;:9;:23;;;;25453:1;25444:7;;:10;25431:23;:36;;;;25466:1;25458:6;;:9;25431:36;25428:127;;;25550:5;25542:6;;25533;:15;;;;:::i;:::-;25532:23;;;;:::i;:::-;25524:5;25515:7;;25506:6;:16;;;;:::i;:::-;25505:24;;;;:::i;:::-;25497:5;25489:6;;25480;:15;;;;:::i;:::-;25479:23;;;;:::i;:::-;:50;;;;:::i;:::-;:76;;;;:::i;:::-;25469:86;;25428:127;25625:12;;25598:24;25616:4;25598:9;:24::i;:::-;:39;:60;;;;;25642:16;;;;;;;;;;;25641:17;25598:60;:93;;;;;25662:25;:29;25688:2;25662:29;;;;;;;;;;;;;;;;;;;;;;;;;25598:93;25594:109;;;25693:10;:8;:10::i;:::-;25594:109;25755:1;25744:8;:12;25740:152;;;25779:46;25795:4;25809;25816:8;25779:15;:46::i;:::-;25864:8;25855:6;:17;;;;:::i;:::-;25846:26;;25740:152;25374:551;25305:620;25229:712;25949:33;25965:4;25971:2;25975:6;25949:15;:33::i;:::-;25007:992;;;:::o;19981:191::-;20055:16;20074:6;;;;;;;;;;;20055:25;;20100:8;20091:6;;:17;;;;;;;;;;;;;;;;;;20155:8;20124:40;;20145:8;20124:40;;;;;;;;;;;;20044:128;19981:191;:::o;26007:1287::-;24936:4;24917:16;;:23;;;;;;;;;;;;;;;;;;26069:21:::1;26107:1;26093:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26069:40;;26142:4;26124;26129:1;26124:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;26172:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26162:4;26167:1;26162:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;26206:6;;;;;;;;;;;:57;;;26286:24;26304:4;26286:9;:24::i;:::-;26333:1;26357:4;26392;26420:15;26206:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26471:18;26546:6;;26537;;26527:7;;:16;;;;:::i;:::-;:25;;;;:::i;:::-;26516:7;;26492:21;:31;;;;:::i;:::-;:61;;;;:::i;:::-;26471:82;;26582:22;26621:1;26607:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26582:41;;26649:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26638:5;26644:1;26638:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;26688:9;;;;;;;;;;;26677:5;26683:1;26677:8;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;::::0;::::1;26718:6;;;;;;;;;;;:57;;;26783:10;26818:1;26842:5;26878:4;26906:15;26718:222;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;26991:9;;;;;;;;;;;26981:25;;;27013:9;;;;;;;;;;;27007:26;;;27042:4;27007:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26981:68;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27066:17;27130:6;;27121;;:15;;;;:::i;:::-;27110:6;;27086:21;:30;;;;:::i;:::-;:52;;;;:::i;:::-;27066:72;;27163:9;;;;;;;;;;;27155:27;;:38;27183:9;27155:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27216:15;;;;;;;;;;;27208:33;;:56;27242:21;27208:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26047:1247;;;;24982:5:::0;24963:16;;:24;;;;;;;;;;;;;;;;;;26007:1287::o;12176:671::-;12323:1;12307:18;;:4;:18;;;;12299:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12400:1;12386:16;;:2;:16;;;;12378:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12455:38;12476:4;12482:2;12486:6;12455:20;:38::i;:::-;12506:19;12528:9;:15;12538:4;12528:15;;;;;;;;;;;;;;;;12506:37;;12577:6;12562:11;:21;;12554:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12694:6;12680:11;:20;12662:9;:15;12672:4;12662:15;;;;;;;;;;;;;;;:38;;;;12739:6;12722:9;:13;12732:2;12722:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;12778:2;12763:26;;12772:4;12763:26;;;12782:6;12763:26;;;;;;:::i;:::-;;;;;;;;12802:37;12822:4;12828:2;12832:6;12802:19;:37::i;:::-;12288:559;12176:671;;;:::o;16619:125::-;;;;:::o;17348:124::-;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:118::-;4893:24;4911:5;4893:24;:::i;:::-;4888:3;4881:37;4806:118;;:::o;4930:222::-;5023:4;5061:2;5050:9;5046:18;5038:26;;5074:71;5142:1;5131:9;5127:17;5118:6;5074:71;:::i;:::-;4930:222;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:104::-;5968:7;5997:24;6015:5;5997:24;:::i;:::-;5986:35;;5923:104;;;:::o;6033:138::-;6114:32;6140:5;6114:32;:::i;:::-;6107:5;6104:43;6094:71;;6161:1;6158;6151:12;6094:71;6033:138;:::o;6177:155::-;6231:5;6269:6;6256:20;6247:29;;6285:41;6320:5;6285:41;:::i;:::-;6177:155;;;;:::o;6338:345::-;6405:6;6454:2;6442:9;6433:7;6429:23;6425:32;6422:119;;;6460:79;;:::i;:::-;6422:119;6580:1;6605:61;6658:7;6649:6;6638:9;6634:22;6605:61;:::i;:::-;6595:71;;6551:125;6338:345;;;;:::o;6689:142::-;6792:32;6818:5;6792:32;:::i;:::-;6787:3;6780:45;6689:142;;:::o;6837:254::-;6946:4;6984:2;6973:9;6969:18;6961:26;;6997:87;7081:1;7070:9;7066:17;7057:6;6997:87;:::i;:::-;6837:254;;;;:::o;7097:116::-;7167:21;7182:5;7167:21;:::i;:::-;7160:5;7157:32;7147:60;;7203:1;7200;7193:12;7147:60;7097:116;:::o;7219:133::-;7262:5;7300:6;7287:20;7278:29;;7316:30;7340:5;7316:30;:::i;:::-;7219:133;;;;:::o;7358:468::-;7423:6;7431;7480:2;7468:9;7459:7;7455:23;7451:32;7448:119;;;7486:79;;:::i;:::-;7448:119;7606:1;7631:53;7676:7;7667:6;7656:9;7652:22;7631:53;:::i;:::-;7621:63;;7577:117;7733:2;7759:50;7801:7;7792:6;7781:9;7777:22;7759:50;:::i;:::-;7749:60;;7704:115;7358:468;;;;;:::o;7832:474::-;7900:6;7908;7957:2;7945:9;7936:7;7932:23;7928:32;7925:119;;;7963:79;;:::i;:::-;7925:119;8083:1;8108:53;8153:7;8144:6;8133:9;8129:22;8108:53;:::i;:::-;8098:63;;8054:117;8210:2;8236:53;8281:7;8272:6;8261:9;8257:22;8236:53;:::i;:::-;8226:63;;8181:118;7832:474;;;;;:::o;8312:60::-;8340:3;8361:5;8354:12;;8312:60;;;:::o;8378:142::-;8428:9;8461:53;8479:34;8488:24;8506:5;8488:24;:::i;:::-;8479:34;:::i;:::-;8461:53;:::i;:::-;8448:66;;8378:142;;;:::o;8526:126::-;8576:9;8609:37;8640:5;8609:37;:::i;:::-;8596:50;;8526:126;;;:::o;8658:141::-;8723:9;8756:37;8787:5;8756:37;:::i;:::-;8743:50;;8658:141;;;:::o;8805:161::-;8907:52;8953:5;8907:52;:::i;:::-;8902:3;8895:65;8805:161;;:::o;8972:252::-;9080:4;9118:2;9107:9;9103:18;9095:26;;9131:86;9214:1;9203:9;9199:17;9190:6;9131:86;:::i;:::-;8972:252;;;;:::o;9230:180::-;9278:77;9275:1;9268:88;9375:4;9372:1;9365:15;9399:4;9396:1;9389:15;9416:320;9460:6;9497:1;9491:4;9487:12;9477:22;;9544:1;9538:4;9534:12;9565:18;9555:81;;9621:4;9613:6;9609:17;9599:27;;9555:81;9683:2;9675:6;9672:14;9652:18;9649:38;9646:84;;;9702:18;;:::i;:::-;9646:84;9467:269;9416:320;;;:::o;9742:168::-;9882:20;9878:1;9870:6;9866:14;9859:44;9742:168;:::o;9916:366::-;10058:3;10079:67;10143:2;10138:3;10079:67;:::i;:::-;10072:74;;10155:93;10244:3;10155:93;:::i;:::-;10273:2;10268:3;10264:12;10257:19;;9916:366;;;:::o;10288:419::-;10454:4;10492:2;10481:9;10477:18;10469:26;;10541:9;10535:4;10531:20;10527:1;10516:9;10512:17;10505:47;10569:131;10695:4;10569:131;:::i;:::-;10561:139;;10288:419;;;:::o;10713:180::-;10761:77;10758:1;10751:88;10858:4;10855:1;10848:15;10882:4;10879:1;10872:15;10899:305;10939:3;10958:20;10976:1;10958:20;:::i;:::-;10953:25;;10992:20;11010:1;10992:20;:::i;:::-;10987:25;;11146:1;11078:66;11074:74;11071:1;11068:81;11065:107;;;11152:18;;:::i;:::-;11065:107;11196:1;11193;11189:9;11182:16;;10899:305;;;;:::o;11210:224::-;11350:34;11346:1;11338:6;11334:14;11327:58;11419:7;11414:2;11406:6;11402:15;11395:32;11210:224;:::o;11440:366::-;11582:3;11603:67;11667:2;11662:3;11603:67;:::i;:::-;11596:74;;11679:93;11768:3;11679:93;:::i;:::-;11797:2;11792:3;11788:12;11781:19;;11440:366;;;:::o;11812:419::-;11978:4;12016:2;12005:9;12001:18;11993:26;;12065:9;12059:4;12055:20;12051:1;12040:9;12036:17;12029:47;12093:131;12219:4;12093:131;:::i;:::-;12085:139;;11812:419;;;:::o;12237:243::-;12377:34;12373:1;12365:6;12361:14;12354:58;12446:26;12441:2;12433:6;12429:15;12422:51;12237:243;:::o;12486:366::-;12628:3;12649:67;12713:2;12708:3;12649:67;:::i;:::-;12642:74;;12725:93;12814:3;12725:93;:::i;:::-;12843:2;12838:3;12834:12;12827:19;;12486:366;;;:::o;12858:419::-;13024:4;13062:2;13051:9;13047:18;13039:26;;13111:9;13105:4;13101:20;13097:1;13086:9;13082:17;13075:47;13139:131;13265:4;13139:131;:::i;:::-;13131:139;;12858:419;;;:::o;13283:143::-;13340:5;13371:6;13365:13;13356:22;;13387:33;13414:5;13387:33;:::i;:::-;13283:143;;;;:::o;13432:351::-;13502:6;13551:2;13539:9;13530:7;13526:23;13522:32;13519:119;;;13557:79;;:::i;:::-;13519:119;13677:1;13702:64;13758:7;13749:6;13738:9;13734:22;13702:64;:::i;:::-;13692:74;;13648:128;13432:351;;;;:::o;13789:332::-;13910:4;13948:2;13937:9;13933:18;13925:26;;13961:71;14029:1;14018:9;14014:17;14005:6;13961:71;:::i;:::-;14042:72;14110:2;14099:9;14095:18;14086:6;14042:72;:::i;:::-;13789:332;;;;;:::o;14127:137::-;14181:5;14212:6;14206:13;14197:22;;14228:30;14252:5;14228:30;:::i;:::-;14127:137;;;;:::o;14270:345::-;14337:6;14386:2;14374:9;14365:7;14361:23;14357:32;14354:119;;;14392:79;;:::i;:::-;14354:119;14512:1;14537:61;14590:7;14581:6;14570:9;14566:22;14537:61;:::i;:::-;14527:71;;14483:125;14270:345;;;;:::o;14621:180::-;14669:77;14666:1;14659:88;14766:4;14763:1;14756:15;14790:4;14787:1;14780:15;14807:180;14855:77;14852:1;14845:88;14952:4;14949:1;14942:15;14976:4;14973:1;14966:15;14993:143;15050:5;15081:6;15075:13;15066:22;;15097:33;15124:5;15097:33;:::i;:::-;14993:143;;;;:::o;15142:351::-;15212:6;15261:2;15249:9;15240:7;15236:23;15232:32;15229:119;;;15267:79;;:::i;:::-;15229:119;15387:1;15412:64;15468:7;15459:6;15448:9;15444:22;15412:64;:::i;:::-;15402:74;;15358:128;15142:351;;;;:::o;15499:85::-;15544:7;15573:5;15562:16;;15499:85;;;:::o;15590:158::-;15648:9;15681:61;15699:42;15708:32;15734:5;15708:32;:::i;:::-;15699:42;:::i;:::-;15681:61;:::i;:::-;15668:74;;15590:158;;;:::o;15754:147::-;15849:45;15888:5;15849:45;:::i;:::-;15844:3;15837:58;15754:147;;:::o;15907:114::-;15974:6;16008:5;16002:12;15992:22;;15907:114;;;:::o;16027:184::-;16126:11;16160:6;16155:3;16148:19;16200:4;16195:3;16191:14;16176:29;;16027:184;;;;:::o;16217:132::-;16284:4;16307:3;16299:11;;16337:4;16332:3;16328:14;16320:22;;16217:132;;;:::o;16355:108::-;16432:24;16450:5;16432:24;:::i;:::-;16427:3;16420:37;16355:108;;:::o;16469:179::-;16538:10;16559:46;16601:3;16593:6;16559:46;:::i;:::-;16637:4;16632:3;16628:14;16614:28;;16469:179;;;;:::o;16654:113::-;16724:4;16756;16751:3;16747:14;16739:22;;16654:113;;;:::o;16803:732::-;16922:3;16951:54;16999:5;16951:54;:::i;:::-;17021:86;17100:6;17095:3;17021:86;:::i;:::-;17014:93;;17131:56;17181:5;17131:56;:::i;:::-;17210:7;17241:1;17226:284;17251:6;17248:1;17245:13;17226:284;;;17327:6;17321:13;17354:63;17413:3;17398:13;17354:63;:::i;:::-;17347:70;;17440:60;17493:6;17440:60;:::i;:::-;17430:70;;17286:224;17273:1;17270;17266:9;17261:14;;17226:284;;;17230:14;17526:3;17519:10;;16927:608;;;16803:732;;;;:::o;17541:831::-;17804:4;17842:3;17831:9;17827:19;17819:27;;17856:71;17924:1;17913:9;17909:17;17900:6;17856:71;:::i;:::-;17937:80;18013:2;18002:9;17998:18;17989:6;17937:80;:::i;:::-;18064:9;18058:4;18054:20;18049:2;18038:9;18034:18;18027:48;18092:108;18195:4;18186:6;18092:108;:::i;:::-;18084:116;;18210:72;18278:2;18267:9;18263:18;18254:6;18210:72;:::i;:::-;18292:73;18360:3;18349:9;18345:19;18336:6;18292:73;:::i;:::-;17541:831;;;;;;;;:::o;18378:348::-;18418:7;18441:20;18459:1;18441:20;:::i;:::-;18436:25;;18475:20;18493:1;18475:20;:::i;:::-;18470:25;;18663:1;18595:66;18591:74;18588:1;18585:81;18580:1;18573:9;18566:17;18562:105;18559:131;;;18670:18;;:::i;:::-;18559:131;18718:1;18715;18711:9;18700:20;;18378:348;;;;:::o;18732:180::-;18780:77;18777:1;18770:88;18877:4;18874:1;18867:15;18901:4;18898:1;18891:15;18918:185;18958:1;18975:20;18993:1;18975:20;:::i;:::-;18970:25;;19009:20;19027:1;19009:20;:::i;:::-;19004:25;;19048:1;19038:35;;19053:18;;:::i;:::-;19038:35;19095:1;19092;19088:9;19083:14;;18918:185;;;;:::o;19109:720::-;19344:4;19382:3;19371:9;19367:19;19359:27;;19396:79;19472:1;19461:9;19457:17;19448:6;19396:79;:::i;:::-;19522:9;19516:4;19512:20;19507:2;19496:9;19492:18;19485:48;19550:108;19653:4;19644:6;19550:108;:::i;:::-;19542:116;;19668:72;19736:2;19725:9;19721:18;19712:6;19668:72;:::i;:::-;19750;19818:2;19807:9;19803:18;19794:6;19750:72;:::i;:::-;19109:720;;;;;;;:::o;19835:222::-;19975:34;19971:1;19963:6;19959:14;19952:58;20044:5;20039:2;20031:6;20027:15;20020:30;19835:222;:::o;20063:366::-;20205:3;20226:67;20290:2;20285:3;20226:67;:::i;:::-;20219:74;;20302:93;20391:3;20302:93;:::i;:::-;20420:2;20415:3;20411:12;20404:19;;20063:366;;;:::o;20435:419::-;20601:4;20639:2;20628:9;20624:18;20616:26;;20688:9;20682:4;20678:20;20674:1;20663:9;20659:17;20652:47;20716:131;20842:4;20716:131;:::i;:::-;20708:139;;20435:419;;;:::o;20860:332::-;20981:4;21019:2;21008:9;21004:18;20996:26;;21032:71;21100:1;21089:9;21085:17;21076:6;21032:71;:::i;:::-;21113:72;21181:2;21170:9;21166:18;21157:6;21113:72;:::i;:::-;20860:332;;;;;:::o;21198:229::-;21338:34;21334:1;21326:6;21322:14;21315:58;21407:12;21402:2;21394:6;21390:15;21383:37;21198:229;:::o;21433:366::-;21575:3;21596:67;21660:2;21655:3;21596:67;:::i;:::-;21589:74;;21672:93;21761:3;21672:93;:::i;:::-;21790:2;21785:3;21781:12;21774:19;;21433:366;;;:::o;21805:419::-;21971:4;22009:2;21998:9;21994:18;21986:26;;22058:9;22052:4;22048:20;22044:1;22033:9;22029:17;22022:47;22086:131;22212:4;22086:131;:::i;:::-;22078:139;;21805:419;;;:::o;22230:225::-;22370:34;22366:1;22358:6;22354:14;22347:58;22439:8;22434:2;22426:6;22422:15;22415:33;22230:225;:::o;22461:366::-;22603:3;22624:67;22688:2;22683:3;22624:67;:::i;:::-;22617:74;;22700:93;22789:3;22700:93;:::i;:::-;22818:2;22813:3;22809:12;22802:19;;22461:366;;;:::o;22833:419::-;22999:4;23037:2;23026:9;23022:18;23014:26;;23086:9;23080:4;23076:20;23072:1;23061:9;23057:17;23050:47;23114:131;23240:4;23114:131;:::i;:::-;23106:139;;22833:419;;;:::o;23258:223::-;23398:34;23394:1;23386:6;23382:14;23375:58;23467:6;23462:2;23454:6;23450:15;23443:31;23258:223;:::o;23487:366::-;23629:3;23650:67;23714:2;23709:3;23650:67;:::i;:::-;23643:74;;23726:93;23815:3;23726:93;:::i;:::-;23844:2;23839:3;23835:12;23828:19;;23487:366;;;:::o;23859:419::-;24025:4;24063:2;24052:9;24048:18;24040:26;;24112:9;24106:4;24102:20;24098:1;24087:9;24083:17;24076:47;24140:131;24266:4;24140:131;:::i;:::-;24132:139;;23859:419;;;:::o;24284:221::-;24424:34;24420:1;24412:6;24408:14;24401:58;24493:4;24488:2;24480:6;24476:15;24469:29;24284:221;:::o;24511:366::-;24653:3;24674:67;24738:2;24733:3;24674:67;:::i;:::-;24667:74;;24750:93;24839:3;24750:93;:::i;:::-;24868:2;24863:3;24859:12;24852:19;;24511:366;;;:::o;24883:419::-;25049:4;25087:2;25076:9;25072:18;25064:26;;25136:9;25130:4;25126:20;25122:1;25111:9;25107:17;25100:47;25164:131;25290:4;25164:131;:::i;:::-;25156:139;;24883:419;;;:::o;25308:182::-;25448:34;25444:1;25436:6;25432:14;25425:58;25308:182;:::o;25496:366::-;25638:3;25659:67;25723:2;25718:3;25659:67;:::i;:::-;25652:74;;25735:93;25824:3;25735:93;:::i;:::-;25853:2;25848:3;25844:12;25837:19;;25496:366;;;:::o;25868:419::-;26034:4;26072:2;26061:9;26057:18;26049:26;;26121:9;26115:4;26111:20;26107:1;26096:9;26092:17;26085:47;26149:131;26275:4;26149:131;:::i;:::-;26141:139;;25868:419;;;:::o;26293:179::-;26433:31;26429:1;26421:6;26417:14;26410:55;26293:179;:::o;26478:366::-;26620:3;26641:67;26705:2;26700:3;26641:67;:::i;:::-;26634:74;;26717:93;26806:3;26717:93;:::i;:::-;26835:2;26830:3;26826:12;26819:19;;26478:366;;;:::o;26850:419::-;27016:4;27054:2;27043:9;27039:18;27031:26;;27103:9;27097:4;27093:20;27089:1;27078:9;27074:17;27067:47;27131:131;27257:4;27131:131;:::i;:::-;27123:139;;26850:419;;;:::o;27275:191::-;27315:4;27335:20;27353:1;27335:20;:::i;:::-;27330:25;;27369:20;27387:1;27369:20;:::i;:::-;27364:25;;27408:1;27405;27402:8;27399:34;;;27413:18;;:::i;:::-;27399:34;27458:1;27455;27451:9;27443:17;;27275:191;;;;:::o;27472:224::-;27612:34;27608:1;27600:6;27596:14;27589:58;27681:7;27676:2;27668:6;27664:15;27657:32;27472:224;:::o;27702:366::-;27844:3;27865:67;27929:2;27924:3;27865:67;:::i;:::-;27858:74;;27941:93;28030:3;27941:93;:::i;:::-;28059:2;28054:3;28050:12;28043:19;;27702:366;;;:::o;28074:419::-;28240:4;28278:2;28267:9;28263:18;28255:26;;28327:9;28321:4;28317:20;28313:1;28302:9;28298:17;28291:47;28355:131;28481:4;28355:131;:::i;:::-;28347:139;;28074:419;;;:::o;28499:222::-;28639:34;28635:1;28627:6;28623:14;28616:58;28708:5;28703:2;28695:6;28691:15;28684:30;28499:222;:::o;28727:366::-;28869:3;28890:67;28954:2;28949:3;28890:67;:::i;:::-;28883:74;;28966:93;29055:3;28966:93;:::i;:::-;29084:2;29079:3;29075:12;29068:19;;28727:366;;;:::o;29099:419::-;29265:4;29303:2;29292:9;29288:18;29280:26;;29352:9;29346:4;29342:20;29338:1;29327:9;29323:17;29316:47;29380:131;29506:4;29380:131;:::i;:::-;29372:139;;29099:419;;;:::o;29524:225::-;29664:34;29660:1;29652:6;29648:14;29641:58;29733:8;29728:2;29720:6;29716:15;29709:33;29524:225;:::o;29755:366::-;29897:3;29918:67;29982:2;29977:3;29918:67;:::i;:::-;29911:74;;29994:93;30083:3;29994:93;:::i;:::-;30112:2;30107:3;30103:12;30096:19;;29755:366;;;:::o;30127:419::-;30293:4;30331:2;30320:9;30316:18;30308:26;;30380:9;30374:4;30370:20;30366:1;30355:9;30351:17;30344:47;30408:131;30534:4;30408:131;:::i;:::-;30400:139;;30127:419;;;:::o

Swarm Source

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