ETH Price: $3,965.97 (+1.90%)

Token

ERC-20: WRAPPED Protocol (WRAP)
 

Overview

Max Total Supply

100,000,000 WRAP

Holders

654

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 WRAP

Value
$0.00
0x5fb85f81fd51e94ed642115299210f2539c39459
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Wrapped

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-14
*/

// SPDX-License-Identifier: MIT
/**
* $WRAP is a WRAP Protocol DAO Token which aims to non-evm assets on evm with 1;1 backing.
* 
**/
pragma solidity >=0.8.7;

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

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

abstract contract Ownable is Context {
    address private _owner;
    address private creator;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _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 IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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;

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract Wrapped is ERC20, Ownable {
    event SwapBackSuccess(
        uint256 tokenAmount,
        uint256 ethAmountReceived,
        bool success
    );
    bool private swapping;

    address public teamWallet=0x608d712Efb5e463f7b6637a98262f18325C0f967;//ADD Team Wallet FWD

    uint256 _totalSupply = 100_000_000 * 1e18; // 100M totalsupply
    uint256 _lp = (_totalSupply* 800)/1000; // lp 80%

    uint256 public maxTransactionAmount = (_totalSupply * 10) / 1000; // 1% from total supply maxTransactionAmountTxn;
    uint256 public swapTokensAtAmount = (_totalSupply * 5) / 100000; // 0.005% swap tokens at this amount. (10_000_000 * 10) / 10000 = 0.1%(10000 tokens) of the total supply
    uint256 public maxWallet = (_totalSupply * 10) / 1000; // 1% from total supply maxWallet

    bool public limitsInEffect = false;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyFees = 400; //init 40% buy tax
    uint256 public sellFees = 990; //init 99% sell tax
    uint256 public launchBlock;

    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    //blacklist bots
    mapping(address => bool) private blacklists;

    constructor() ERC20("WRAPPED Protocol", "WRAP") {
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, true);
        excludeFromFees(address(teamWallet), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(teamWallet), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, true);
        
        _mint(address(this), _lp);
        _mint(owner(),(_totalSupply-_lp));

    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchBlock = block.number;
    }

    // remove limits after token is stable (sets sell fees to 5%)
    function removeLimits(uint256 s,uint256 b) external onlyOwner returns (bool) {
        limitsInEffect = false;
        sellFees = s;
        buyFees = b;
        return true;
    }

    function excludeFromMaxTransaction(
        address addressToExclude,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[addressToExclude] = isExcluded;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }

    function addLiquidity() external payable onlyOwner {
        // approve token transfer to cover all possible scenarios
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        _approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
        // add the liquidity
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this), //token address
            balanceOf(address(this)), // liquidity amount
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(), // LP tokens are sent to the owner
            block.timestamp
        );
        limitsInEffect=true;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }

    function updateFeeWallet(
        address devWallet_
    ) public onlyOwner {
        teamWallet = devWallet_;

    }

    function updateMaxTransaction(uint amount) external onlyOwner{
        maxTransactionAmount = amount;
    }

    function updateSwapTokenTreshold(uint amount) external onlyOwner{
        swapTokensAtAmount = amount;
    }

    function updateMaxWallet(uint amount) external onlyOwner{
        maxWallet = amount;
    }

    function updateLimits(bool value) external onlyOwner{
        limitsInEffect = value;
    }


    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not enabled yet."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                    
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );

                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;


        if (canSwap &&
            swapEnabled && //if this is true
            !swapping && //if this is false
            !automatedMarketMakerPairs[from] && //if this is false
            !_isExcludedFromFees[from] && //if this is false
            !_isExcludedFromFees[to] //if this is false
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFees > 0) {
                fees = amount.mul(sellFees).div(1000);
            }
            // on buy
                      
            else if (automatedMarketMakerPairs[from] && buyFees > 0) {
                // DEAD BLOCKS
                if (block.number - launchBlock == 0){
                    fees = amount.mul(900).div(1000);
                } else if (block.number - launchBlock <= 3) {
                    fees = amount.mul(690).div(1000);
                } else {
                    fees = amount.mul(buyFees).div(1000);
                }
            }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        /** */
        
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
    
        if (contractBalance == 0) {
            return;
        }
        if (contractBalance >= swapTokensAtAmount) {
            uint256 amountToSwapForETH = swapTokensAtAmount;
            swapTokensForEth(amountToSwapForETH);
            uint256 amountEthToSend = address(this).balance;

            
            if(amountEthToSend>0){
                (bool success, ) = address(teamWallet).call{value: amountEthToSend}("");
                require(success,"unable to trf" );
            }
            
            emit SwapBackSuccess(amountToSwapForETH, amountEthToSend, true);
        }

    

    }

    function blacklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
        blacklists[_address[i]] = true;
        }
    }
    function unblacklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
        blacklists[_address[i]] = false;
        }
    }


    function manualSwap() external onlyOwner {
        
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0) {
            
           (bool success, ) = address(teamWallet).call{value: ethBalance}("");
            require(success,"unable to trf" );
        }
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountReceived","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SwapBackSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToExclude","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","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":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"devWallet_","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokenTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273608d712efb5e463f7b6637a98262f18325c0f96760075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a52b7d2dcc80cd2e40000006008556103e86103206008546200007c919062000813565b6200008891906200088a565b6009556103e8600a6008546200009f919062000813565b620000ab91906200088a565b600a55620186a06005600854620000c3919062000813565b620000cf91906200088a565b600b556103e8600a600854620000e6919062000813565b620000f291906200088a565b600c555f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055505f600d60026101000a81548160ff021916908315150217905550610190600e556103de600f553480156200015a575f80fd5b506040518060400160405280601081526020017f575241505045442050726f746f636f6c000000000000000000000000000000008152506040518060400160405280600481526020017f57524150000000000000000000000000000000000000000000000000000000008152508160039081620001d8919062000b1c565b508060049081620001ea919062000b1c565b5050506200020d62000201620003a360201b60201c565b620003aa60201b60201c565b6200022f620002216200046d60201b60201c565b60016200049560201b60201c565b62000256737a250d5630b4cf539739df2c5dacb4c659f2488d60016200049560201b60201c565b6200028a60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200049560201b60201c565b6200029d3060016200049560201b60201c565b620002b261dead60016200049560201b60201c565b620002d4620002c66200046d60201b60201c565b60016200057c60201b60201c565b6200030860075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200057c60201b60201c565b6200031b3060016200057c60201b60201c565b6200033061dead60016200057c60201b60201c565b62000357737a250d5630b4cf539739df2c5dacb4c659f2488d60016200057c60201b60201c565b6200036b306009546200066360201b60201c565b6200039d6200037f6200046d60201b60201c565b60095460085462000391919062000c00565b6200066360201b60201c565b62000d8c565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004a5620003a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004cb6200046d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051b9062000c98565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6200058c620003a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005b26200046d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200060b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006029062000c98565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cb9062000d06565b60405180910390fd5b620006e75f8383620007d360201b60201c565b8060025f828254620006fa919062000d26565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200074e919062000d26565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007b4919062000d71565b60405180910390a3620007cf5f8383620007d860201b60201c565b5050565b505050565b505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200081f82620007dd565b91506200082c83620007dd565b92508282026200083c81620007dd565b91508282048414831517620008565762000855620007e6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200089682620007dd565b9150620008a383620007dd565b925082620008b657620008b56200085d565b5b828204905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200093d57607f821691505b602082108103620009535762000952620008f8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200097a565b620009c386836200097a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000a04620009fe620009f884620007dd565b620009db565b620007dd565b9050919050565b5f819050919050565b62000a1f83620009e4565b62000a3762000a2e8262000a0b565b84845462000986565b825550505050565b5f90565b62000a4d62000a3f565b62000a5a81848462000a14565b505050565b5b8181101562000a815762000a755f8262000a43565b60018101905062000a60565b5050565b601f82111562000ad05762000a9a8162000959565b62000aa5846200096b565b8101602085101562000ab5578190505b62000acd62000ac4856200096b565b83018262000a5f565b50505b505050565b5f82821c905092915050565b5f62000af25f198460080262000ad5565b1980831691505092915050565b5f62000b0c838362000ae1565b9150826002028217905092915050565b62000b2782620008c1565b67ffffffffffffffff81111562000b435762000b42620008cb565b5b62000b4f825462000925565b62000b5c82828562000a85565b5f60209050601f83116001811462000b92575f841562000b7d578287015190505b62000b89858262000aff565b86555062000bf8565b601f19841662000ba28662000959565b5f5b8281101562000bcb5784890151825560018201915060208501945060208101905062000ba4565b8683101562000beb578489015162000be7601f89168262000ae1565b8355505b6001600288020188555050505b505050505050565b5f62000c0c82620007dd565b915062000c1983620007dd565b925082820390508181111562000c345762000c33620007e6565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000c8060208362000c3a565b915062000c8d8262000c4a565b602082019050919050565b5f6020820190508181035f83015262000cb18162000c72565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000cee601f8362000c3a565b915062000cfb8262000cb8565b602082019050919050565b5f6020820190508181035f83015262000d1f8162000ce0565b9050919050565b5f62000d3282620007dd565b915062000d3f83620007dd565b925082820190508082111562000d5a5762000d59620007e6565b5b92915050565b62000d6b81620007dd565b82525050565b5f60208201905062000d865f83018462000d60565b92915050565b6147eb8062000d9a5f395ff3fe608060405260043610610275575f3560e01c806374326f531161014e578063bbc0c742116100c0578063e0f3ccf511610079578063e0f3ccf51461095a578063e2f4560514610984578063e4748b9e146109ae578063e8078d94146109d8578063f2fde38b146109e2578063f8b45b0514610a0a5761027c565b8063bbc0c74214610850578063bfab65351461087a578063c0246668146108a2578063c8c8ebe4146108ca578063d00efb2f146108f4578063dd62ed3e1461091e5761027c565b806395d89b411161011257806395d89b41146107225780639a7a23d61461074c5780639bed058914610774578063a457c2d71461079c578063a9059cbb146107d8578063b62496f5146108145761027c565b806374326f531461066a5780637571336a146106925780638a8c523c146106ba5780638da5cb5b146106d0578063924de9b7146106fa5761027c565b806339509351116101e757806359927044116101ab578063599270441461056057806359bd962a1461058a57806366718524146105c65780636ddd1713146105ee57806370a0823114610618578063715018a6146106545761027c565b8063395093511461047e57806349bd5a5e146104ba5780634a62bb65146104e45780634fbee1931461050e57806351bc3c851461054a5761027c565b80631694505e116102395780631694505e1461037257806318160ddd1461039c5780631c499ab0146103c657806323b872dd146103ee57806327c8f8351461042a578063313ce567146104545761027c565b8063041f173f146102805780630517d13d146102a857806306fdde03146102d0578063095ea7b3146102fa57806310d5de53146103365761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b506102a660048036038101906102a19190613697565b610a34565b005b3480156102b3575f80fd5b506102ce60048036038101906102c99190613711565b610b47565b005b3480156102db575f80fd5b506102e4610bcd565b6040516102f191906137b6565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b91906137d6565b610c5d565b60405161032d919061382e565b60405180910390f35b348015610341575f80fd5b5061035c60048036038101906103579190613847565b610c7a565b604051610369919061382e565b60405180910390f35b34801561037d575f80fd5b50610386610c97565b60405161039391906138cd565b60405180910390f35b3480156103a7575f80fd5b506103b0610cbc565b6040516103bd91906138f5565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190613711565b610cc5565b005b3480156103f9575f80fd5b50610414600480360381019061040f919061390e565b610d4b565b604051610421919061382e565b60405180910390f35b348015610435575f80fd5b5061043e610e3d565b60405161044b919061396d565b60405180910390f35b34801561045f575f80fd5b50610468610e43565b60405161047591906139a1565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f91906137d6565b610e4b565b6040516104b1919061382e565b60405180910390f35b3480156104c5575f80fd5b506104ce610ef2565b6040516104db919061396d565b60405180910390f35b3480156104ef575f80fd5b506104f8610f17565b604051610505919061382e565b60405180910390f35b348015610519575f80fd5b50610534600480360381019061052f9190613847565b610f29565b604051610541919061382e565b60405180910390f35b348015610555575f80fd5b5061055e610f7b565b005b34801561056b575f80fd5b506105746110f0565b604051610581919061396d565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab91906139ba565b611115565b6040516105bd919061382e565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e79190613847565b6111c3565b005b3480156105f9575f80fd5b50610602611282565b60405161060f919061382e565b60405180910390f35b348015610623575f80fd5b5061063e60048036038101906106399190613847565b611295565b60405161064b91906138f5565b60405180910390f35b34801561065f575f80fd5b506106686112da565b005b348015610675575f80fd5b50610690600480360381019061068b9190613a22565b611361565b005b34801561069d575f80fd5b506106b860048036038101906106b39190613a4d565b6113f9565b005b3480156106c5575f80fd5b506106ce6114cd565b005b3480156106db575f80fd5b506106e4611588565b6040516106f1919061396d565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190613a22565b6115b0565b005b34801561072d575f80fd5b50610736611649565b60405161074391906137b6565b60405180910390f35b348015610757575f80fd5b50610772600480360381019061076d9190613a4d565b6116d9565b005b34801561077f575f80fd5b5061079a60048036038101906107959190613711565b6117f2565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906137d6565b611878565b6040516107cf919061382e565b60405180910390f35b3480156107e3575f80fd5b506107fe60048036038101906107f991906137d6565b61195e565b60405161080b919061382e565b60405180910390f35b34801561081f575f80fd5b5061083a60048036038101906108359190613847565b61197b565b604051610847919061382e565b60405180910390f35b34801561085b575f80fd5b50610864611998565b604051610871919061382e565b60405180910390f35b348015610885575f80fd5b506108a0600480360381019061089b9190613697565b6119ab565b005b3480156108ad575f80fd5b506108c860048036038101906108c39190613a4d565b611abd565b005b3480156108d5575f80fd5b506108de611b91565b6040516108eb91906138f5565b60405180910390f35b3480156108ff575f80fd5b50610908611b97565b60405161091591906138f5565b60405180910390f35b348015610929575f80fd5b50610944600480360381019061093f9190613a8b565b611b9d565b60405161095191906138f5565b60405180910390f35b348015610965575f80fd5b5061096e611c1f565b60405161097b91906138f5565b60405180910390f35b34801561098f575f80fd5b50610998611c25565b6040516109a591906138f5565b60405180910390f35b3480156109b9575f80fd5b506109c2611c2b565b6040516109cf91906138f5565b60405180910390f35b6109e0611c31565b005b3480156109ed575f80fd5b50610a086004803603810190610a039190613847565b612003565b005b348015610a15575f80fd5b50610a1e6120f9565b604051610a2b91906138f5565b60405180910390f35b610a3c6120ff565b73ffffffffffffffffffffffffffffffffffffffff16610a5a611588565b73ffffffffffffffffffffffffffffffffffffffff1614610ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa790613b13565b60405180910390fd5b5f5b81518160ff161015610b4357600160165f848460ff1681518110610ad957610ad8613b31565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610b3b90613b8b565b915050610ab2565b5050565b610b4f6120ff565b73ffffffffffffffffffffffffffffffffffffffff16610b6d611588565b73ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90613b13565b60405180910390fd5b80600a8190555050565b606060038054610bdc90613be0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0890613be0565b8015610c535780601f10610c2a57610100808354040283529160200191610c53565b820191905f5260205f20905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b5f610c70610c696120ff565b8484612106565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610ccd6120ff565b73ffffffffffffffffffffffffffffffffffffffff16610ceb611588565b73ffffffffffffffffffffffffffffffffffffffff1614610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3890613b13565b60405180910390fd5b80600c8190555050565b5f610d578484846122c9565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d9e6120ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1490613c80565b60405180910390fd5b610e3185610e296120ff565b858403612106565b60019150509392505050565b61dead81565b5f6012905090565b5f610ee8610e576120ff565b848460015f610e646120ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ee39190613c9e565b612106565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b5f60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610f836120ff565b73ffffffffffffffffffffffffffffffffffffffff16610fa1611588565b73ffffffffffffffffffffffffffffffffffffffff1614610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee90613b13565b60405180910390fd5b5f61100130611295565b90505f8111156110155761101481612d97565b5b5f4790505f8111156110ec575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161106790613cfe565b5f6040518083038185875af1925050503d805f81146110a1576040519150601f19603f3d011682016040523d82523d5f602084013e6110a6565b606091505b50509050806110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190613d5c565b60405180910390fd5b505b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61111e6120ff565b73ffffffffffffffffffffffffffffffffffffffff1661113c611588565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990613b13565b60405180910390fd5b5f600d5f6101000a81548160ff02191690831515021790555082600f8190555081600e819055506001905092915050565b6111cb6120ff565b73ffffffffffffffffffffffffffffffffffffffff166111e9611588565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613b13565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112e26120ff565b73ffffffffffffffffffffffffffffffffffffffff16611300611588565b73ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90613b13565b60405180910390fd5b61135f5f612fcd565b565b6113696120ff565b73ffffffffffffffffffffffffffffffffffffffff16611387611588565b73ffffffffffffffffffffffffffffffffffffffff16146113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490613b13565b60405180910390fd5b80600d5f6101000a81548160ff02191690831515021790555050565b6114016120ff565b73ffffffffffffffffffffffffffffffffffffffff1661141f611588565b73ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613b13565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6114d56120ff565b73ffffffffffffffffffffffffffffffffffffffff166114f3611588565b73ffffffffffffffffffffffffffffffffffffffff1614611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090613b13565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601081905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b86120ff565b73ffffffffffffffffffffffffffffffffffffffff166115d6611588565b73ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390613b13565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60606004805461165890613be0565b80601f016020809104026020016040519081016040528092919081815260200182805461168490613be0565b80156116cf5780601f106116a6576101008083540402835291602001916116cf565b820191905f5260205f20905b8154815290600101906020018083116116b257829003601f168201915b5050505050905090565b6116e16120ff565b73ffffffffffffffffffffffffffffffffffffffff166116ff611588565b73ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613b13565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613dea565b60405180910390fd5b6117ee8282613090565b5050565b6117fa6120ff565b73ffffffffffffffffffffffffffffffffffffffff16611818611588565b73ffffffffffffffffffffffffffffffffffffffff161461186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613b13565b60405180910390fd5b80600b8190555050565b5f8060015f6118856120ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613e78565b60405180910390fd5b61195361194a6120ff565b85858403612106565b600191505092915050565b5f61197161196a6120ff565b84846122c9565b6001905092915050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119b36120ff565b73ffffffffffffffffffffffffffffffffffffffff166119d1611588565b73ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e90613b13565b60405180910390fd5b5f5b81518160ff161015611ab9575f60165f848460ff1681518110611a4f57611a4e613b31565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611ab190613b8b565b915050611a29565b5050565b611ac56120ff565b73ffffffffffffffffffffffffffffffffffffffff16611ae3611588565b73ffffffffffffffffffffffffffffffffffffffff1614611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613b13565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600a5481565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600f5481565b600b5481565b600e5481565b611c396120ff565b73ffffffffffffffffffffffffffffffffffffffff16611c57611588565b73ffffffffffffffffffffffffffffffffffffffff1614611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490613b13565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d108160016113f9565b611d443060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d3f30611295565b612106565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db19190613eaa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3a9190613eaa565b6040518363ffffffff1660e01b8152600401611e57929190613ed5565b6020604051808303815f875af1158015611e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e979190613eaa565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f0260125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016113f9565b611f2e60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613090565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611f7630611295565b5f80611f80611588565b426040518863ffffffff1660e01b8152600401611fa296959493929190613f35565b60606040518083038185885af1158015611fbe573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fe39190613fa8565b5050506001600d5f6101000a81548160ff02191690831515021790555050565b61200b6120ff565b73ffffffffffffffffffffffffffffffffffffffff16612029611588565b73ffffffffffffffffffffffffffffffffffffffff161461207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690613b13565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490614068565b60405180910390fd5b6120f681612fcd565b50565b600c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b906140f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614184565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122bc91906138f5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e90614212565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c906142a0565b60405180910390fd5b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612443575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614308565b60405180910390fd5b5f81036124995761249483835f6130e8565b612d92565b600d5f9054906101000a900460ff161561297d576124b5611588565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252357506124f3611588565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561255b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612595575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125ae5750600660149054906101000a900460ff16155b1561297c57600d60019054906101000a900460ff166126a25760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612662575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269890614370565b60405180910390fd5b5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273f575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127e657600a54811115612789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612780906143fe565b60405180910390fd5b600c5461279583611295565b826127a09190613c9e565b11156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614466565b60405180910390fd5b61297b565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612883575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128d257600a548111156128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c4906144f4565b60405180910390fd5b61297a565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661297957600c5461292c83611295565b826129379190613c9e565b1115612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614466565b60405180910390fd5b5b5b5b5b5b5f61298730611295565b90505f600b5482101590508080156129ab5750600d60029054906101000a900460ff165b80156129c45750600660149054906101000a900460ff16155b8015612a17575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a6a575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612abd575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b00576001600660146101000a81548160ff021916908315150217905550612ae561335d565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612baf575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612bb8575f90505b5f8115612d825760155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c1657505f600f54115b15612c4b57612c446103e8612c36600f54886134a890919063ffffffff16565b6134bd90919063ffffffff16565b9050612d5f565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ca257505f600e54115b15612d5e575f60105443612cb69190614512565b03612ceb57612ce46103e8612cd6610384886134a890919063ffffffff16565b6134bd90919063ffffffff16565b9050612d5d565b600360105443612cfb9190614512565b11612d3057612d296103e8612d1b6102b2886134a890919063ffffffff16565b6134bd90919063ffffffff16565b9050612d5c565b612d596103e8612d4b600e54886134a890919063ffffffff16565b6134bd90919063ffffffff16565b90505b5b5b5b5f811115612d7357612d728730836130e8565b5b8085612d7f9190614512565b94505b612d8d8787876130e8565b505050505b505050565b5f600267ffffffffffffffff811115612db357612db2613501565b5b604051908082528060200260200182016040528015612de15781602001602082028036833780820191505090505b50905030815f81518110612df857612df7613b31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec09190613eaa565b81600181518110612ed457612ed3613b31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f3a3060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612106565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f9c9594939291906145fc565b5f604051808303815f87803b158015612fb3575f80fd5b505af1158015612fc5573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d90614212565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb906142a0565b60405180910390fd5b6131cf8383836134d2565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613252576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613249906146c4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132e09190613c9e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161334491906138f5565b60405180910390a36133578484846134d7565b50505050565b5f61336730611295565b90505f810361337657506134a6565b600b5481106134a4575f600b54905061338e81612d97565b5f4790505f811115613465575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516133e090613cfe565b5f6040518083038185875af1925050503d805f811461341a576040519150601f19603f3d011682016040523d82523d5f602084013e61341f565b606091505b5050905080613463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345a90613d5c565b60405180910390fd5b505b7fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff82826001604051613499939291906146e2565b60405180910390a150505b505b565b5f81836134b59190614717565b905092915050565b5f81836134ca9190614785565b905092915050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613537826134f1565b810181811067ffffffffffffffff8211171561355657613555613501565b5b80604052505050565b5f6135686134dc565b9050613574828261352e565b919050565b5f67ffffffffffffffff82111561359357613592613501565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135d1826135a8565b9050919050565b6135e1816135c7565b81146135eb575f80fd5b50565b5f813590506135fc816135d8565b92915050565b5f61361461360f84613579565b61355f565b90508083825260208201905060208402830185811115613637576136366135a4565b5b835b81811015613660578061364c88826135ee565b845260208401935050602081019050613639565b5050509392505050565b5f82601f83011261367e5761367d6134ed565b5b813561368e848260208601613602565b91505092915050565b5f602082840312156136ac576136ab6134e5565b5b5f82013567ffffffffffffffff8111156136c9576136c86134e9565b5b6136d58482850161366a565b91505092915050565b5f819050919050565b6136f0816136de565b81146136fa575f80fd5b50565b5f8135905061370b816136e7565b92915050565b5f60208284031215613726576137256134e5565b5b5f613733848285016136fd565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613773578082015181840152602081019050613758565b5f8484015250505050565b5f6137888261373c565b6137928185613746565b93506137a2818560208601613756565b6137ab816134f1565b840191505092915050565b5f6020820190508181035f8301526137ce818461377e565b905092915050565b5f80604083850312156137ec576137eb6134e5565b5b5f6137f9858286016135ee565b925050602061380a858286016136fd565b9150509250929050565b5f8115159050919050565b61382881613814565b82525050565b5f6020820190506138415f83018461381f565b92915050565b5f6020828403121561385c5761385b6134e5565b5b5f613869848285016135ee565b91505092915050565b5f819050919050565b5f61389561389061388b846135a8565b613872565b6135a8565b9050919050565b5f6138a68261387b565b9050919050565b5f6138b78261389c565b9050919050565b6138c7816138ad565b82525050565b5f6020820190506138e05f8301846138be565b92915050565b6138ef816136de565b82525050565b5f6020820190506139085f8301846138e6565b92915050565b5f805f60608486031215613925576139246134e5565b5b5f613932868287016135ee565b9350506020613943868287016135ee565b9250506040613954868287016136fd565b9150509250925092565b613967816135c7565b82525050565b5f6020820190506139805f83018461395e565b92915050565b5f60ff82169050919050565b61399b81613986565b82525050565b5f6020820190506139b45f830184613992565b92915050565b5f80604083850312156139d0576139cf6134e5565b5b5f6139dd858286016136fd565b92505060206139ee858286016136fd565b9150509250929050565b613a0181613814565b8114613a0b575f80fd5b50565b5f81359050613a1c816139f8565b92915050565b5f60208284031215613a3757613a366134e5565b5b5f613a4484828501613a0e565b91505092915050565b5f8060408385031215613a6357613a626134e5565b5b5f613a70858286016135ee565b9250506020613a8185828601613a0e565b9150509250929050565b5f8060408385031215613aa157613aa06134e5565b5b5f613aae858286016135ee565b9250506020613abf858286016135ee565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613afd602083613746565b9150613b0882613ac9565b602082019050919050565b5f6020820190508181035f830152613b2a81613af1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b9582613986565b915060ff8203613ba857613ba7613b5e565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613bf757607f821691505b602082108103613c0a57613c09613bb3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c6a602883613746565b9150613c7582613c10565b604082019050919050565b5f6020820190508181035f830152613c9781613c5e565b9050919050565b5f613ca8826136de565b9150613cb3836136de565b9250828201905080821115613ccb57613cca613b5e565b5b92915050565b5f81905092915050565b50565b5f613ce95f83613cd1565b9150613cf482613cdb565b5f82019050919050565b5f613d0882613cde565b9150819050919050565b7f756e61626c6520746f20747266000000000000000000000000000000000000005f82015250565b5f613d46600d83613746565b9150613d5182613d12565b602082019050919050565b5f6020820190508181035f830152613d7381613d3a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613dd4603983613746565b9150613ddf82613d7a565b604082019050919050565b5f6020820190508181035f830152613e0181613dc8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613e62602583613746565b9150613e6d82613e08565b604082019050919050565b5f6020820190508181035f830152613e8f81613e56565b9050919050565b5f81519050613ea4816135d8565b92915050565b5f60208284031215613ebf57613ebe6134e5565b5b5f613ecc84828501613e96565b91505092915050565b5f604082019050613ee85f83018561395e565b613ef5602083018461395e565b9392505050565b5f819050919050565b5f613f1f613f1a613f1584613efc565b613872565b6136de565b9050919050565b613f2f81613f05565b82525050565b5f60c082019050613f485f83018961395e565b613f5560208301886138e6565b613f626040830187613f26565b613f6f6060830186613f26565b613f7c608083018561395e565b613f8960a08301846138e6565b979650505050505050565b5f81519050613fa2816136e7565b92915050565b5f805f60608486031215613fbf57613fbe6134e5565b5b5f613fcc86828701613f94565b9350506020613fdd86828701613f94565b9250506040613fee86828701613f94565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614052602683613746565b915061405d82613ff8565b604082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6140e0602483613746565b91506140eb82614086565b604082019050919050565b5f6020820190508181035f83015261410d816140d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61416e602283613746565b915061417982614114565b604082019050919050565b5f6020820190508181035f83015261419b81614162565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141fc602583613746565b9150614207826141a2565b604082019050919050565b5f6020820190508181035f830152614229816141f0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61428a602383613746565b915061429582614230565b604082019050919050565b5f6020820190508181035f8301526142b78161427e565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f6142f2600b83613746565b91506142fd826142be565b602082019050919050565b5f6020820190508181035f83015261431f816142e6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965742e00000000005f82015250565b5f61435a601b83613746565b915061436582614326565b602082019050919050565b5f6020820190508181035f8301526143878161434e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6143e8603583613746565b91506143f38261438e565b604082019050919050565b5f6020820190508181035f830152614415816143dc565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614450601383613746565b915061445b8261441c565b602082019050919050565b5f6020820190508181035f83015261447d81614444565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6144de603683613746565b91506144e982614484565b604082019050919050565b5f6020820190508181035f83015261450b816144d2565b9050919050565b5f61451c826136de565b9150614527836136de565b925082820390508181111561453f5761453e613b5e565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614577816135c7565b82525050565b5f614588838361456e565b60208301905092915050565b5f602082019050919050565b5f6145aa82614545565b6145b4818561454f565b93506145bf8361455f565b805f5b838110156145ef5781516145d6888261457d565b97506145e183614594565b9250506001810190506145c2565b5085935050505092915050565b5f60a08201905061460f5f8301886138e6565b61461c6020830187613f26565b818103604083015261462e81866145a0565b905061463d606083018561395e565b61464a60808301846138e6565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6146ae602683613746565b91506146b982614654565b604082019050919050565b5f6020820190508181035f8301526146db816146a2565b9050919050565b5f6060820190506146f55f8301866138e6565b61470260208301856138e6565b61470f604083018461381f565b949350505050565b5f614721826136de565b915061472c836136de565b925082820261473a816136de565b9150828204841483151761475157614750613b5e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61478f826136de565b915061479a836136de565b9250826147aa576147a9614758565b5b82820490509291505056fea2646970667358221220dd740878ff449b61a0d0bb671c93c40c8e52be6f72f21cf973cf91c3a732a0f264736f6c63430008160033

Deployed Bytecode

0x608060405260043610610275575f3560e01c806374326f531161014e578063bbc0c742116100c0578063e0f3ccf511610079578063e0f3ccf51461095a578063e2f4560514610984578063e4748b9e146109ae578063e8078d94146109d8578063f2fde38b146109e2578063f8b45b0514610a0a5761027c565b8063bbc0c74214610850578063bfab65351461087a578063c0246668146108a2578063c8c8ebe4146108ca578063d00efb2f146108f4578063dd62ed3e1461091e5761027c565b806395d89b411161011257806395d89b41146107225780639a7a23d61461074c5780639bed058914610774578063a457c2d71461079c578063a9059cbb146107d8578063b62496f5146108145761027c565b806374326f531461066a5780637571336a146106925780638a8c523c146106ba5780638da5cb5b146106d0578063924de9b7146106fa5761027c565b806339509351116101e757806359927044116101ab578063599270441461056057806359bd962a1461058a57806366718524146105c65780636ddd1713146105ee57806370a0823114610618578063715018a6146106545761027c565b8063395093511461047e57806349bd5a5e146104ba5780634a62bb65146104e45780634fbee1931461050e57806351bc3c851461054a5761027c565b80631694505e116102395780631694505e1461037257806318160ddd1461039c5780631c499ab0146103c657806323b872dd146103ee57806327c8f8351461042a578063313ce567146104545761027c565b8063041f173f146102805780630517d13d146102a857806306fdde03146102d0578063095ea7b3146102fa57806310d5de53146103365761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b506102a660048036038101906102a19190613697565b610a34565b005b3480156102b3575f80fd5b506102ce60048036038101906102c99190613711565b610b47565b005b3480156102db575f80fd5b506102e4610bcd565b6040516102f191906137b6565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b91906137d6565b610c5d565b60405161032d919061382e565b60405180910390f35b348015610341575f80fd5b5061035c60048036038101906103579190613847565b610c7a565b604051610369919061382e565b60405180910390f35b34801561037d575f80fd5b50610386610c97565b60405161039391906138cd565b60405180910390f35b3480156103a7575f80fd5b506103b0610cbc565b6040516103bd91906138f5565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190613711565b610cc5565b005b3480156103f9575f80fd5b50610414600480360381019061040f919061390e565b610d4b565b604051610421919061382e565b60405180910390f35b348015610435575f80fd5b5061043e610e3d565b60405161044b919061396d565b60405180910390f35b34801561045f575f80fd5b50610468610e43565b60405161047591906139a1565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f91906137d6565b610e4b565b6040516104b1919061382e565b60405180910390f35b3480156104c5575f80fd5b506104ce610ef2565b6040516104db919061396d565b60405180910390f35b3480156104ef575f80fd5b506104f8610f17565b604051610505919061382e565b60405180910390f35b348015610519575f80fd5b50610534600480360381019061052f9190613847565b610f29565b604051610541919061382e565b60405180910390f35b348015610555575f80fd5b5061055e610f7b565b005b34801561056b575f80fd5b506105746110f0565b604051610581919061396d565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab91906139ba565b611115565b6040516105bd919061382e565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e79190613847565b6111c3565b005b3480156105f9575f80fd5b50610602611282565b60405161060f919061382e565b60405180910390f35b348015610623575f80fd5b5061063e60048036038101906106399190613847565b611295565b60405161064b91906138f5565b60405180910390f35b34801561065f575f80fd5b506106686112da565b005b348015610675575f80fd5b50610690600480360381019061068b9190613a22565b611361565b005b34801561069d575f80fd5b506106b860048036038101906106b39190613a4d565b6113f9565b005b3480156106c5575f80fd5b506106ce6114cd565b005b3480156106db575f80fd5b506106e4611588565b6040516106f1919061396d565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190613a22565b6115b0565b005b34801561072d575f80fd5b50610736611649565b60405161074391906137b6565b60405180910390f35b348015610757575f80fd5b50610772600480360381019061076d9190613a4d565b6116d9565b005b34801561077f575f80fd5b5061079a60048036038101906107959190613711565b6117f2565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906137d6565b611878565b6040516107cf919061382e565b60405180910390f35b3480156107e3575f80fd5b506107fe60048036038101906107f991906137d6565b61195e565b60405161080b919061382e565b60405180910390f35b34801561081f575f80fd5b5061083a60048036038101906108359190613847565b61197b565b604051610847919061382e565b60405180910390f35b34801561085b575f80fd5b50610864611998565b604051610871919061382e565b60405180910390f35b348015610885575f80fd5b506108a0600480360381019061089b9190613697565b6119ab565b005b3480156108ad575f80fd5b506108c860048036038101906108c39190613a4d565b611abd565b005b3480156108d5575f80fd5b506108de611b91565b6040516108eb91906138f5565b60405180910390f35b3480156108ff575f80fd5b50610908611b97565b60405161091591906138f5565b60405180910390f35b348015610929575f80fd5b50610944600480360381019061093f9190613a8b565b611b9d565b60405161095191906138f5565b60405180910390f35b348015610965575f80fd5b5061096e611c1f565b60405161097b91906138f5565b60405180910390f35b34801561098f575f80fd5b50610998611c25565b6040516109a591906138f5565b60405180910390f35b3480156109b9575f80fd5b506109c2611c2b565b6040516109cf91906138f5565b60405180910390f35b6109e0611c31565b005b3480156109ed575f80fd5b50610a086004803603810190610a039190613847565b612003565b005b348015610a15575f80fd5b50610a1e6120f9565b604051610a2b91906138f5565b60405180910390f35b610a3c6120ff565b73ffffffffffffffffffffffffffffffffffffffff16610a5a611588565b73ffffffffffffffffffffffffffffffffffffffff1614610ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa790613b13565b60405180910390fd5b5f5b81518160ff161015610b4357600160165f848460ff1681518110610ad957610ad8613b31565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610b3b90613b8b565b915050610ab2565b5050565b610b4f6120ff565b73ffffffffffffffffffffffffffffffffffffffff16610b6d611588565b73ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90613b13565b60405180910390fd5b80600a8190555050565b606060038054610bdc90613be0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0890613be0565b8015610c535780601f10610c2a57610100808354040283529160200191610c53565b820191905f5260205f20905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b5f610c70610c696120ff565b8484612106565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610ccd6120ff565b73ffffffffffffffffffffffffffffffffffffffff16610ceb611588565b73ffffffffffffffffffffffffffffffffffffffff1614610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3890613b13565b60405180910390fd5b80600c8190555050565b5f610d578484846122c9565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d9e6120ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1490613c80565b60405180910390fd5b610e3185610e296120ff565b858403612106565b60019150509392505050565b61dead81565b5f6012905090565b5f610ee8610e576120ff565b848460015f610e646120ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ee39190613c9e565b612106565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b5f60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610f836120ff565b73ffffffffffffffffffffffffffffffffffffffff16610fa1611588565b73ffffffffffffffffffffffffffffffffffffffff1614610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee90613b13565b60405180910390fd5b5f61100130611295565b90505f8111156110155761101481612d97565b5b5f4790505f8111156110ec575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161106790613cfe565b5f6040518083038185875af1925050503d805f81146110a1576040519150601f19603f3d011682016040523d82523d5f602084013e6110a6565b606091505b50509050806110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190613d5c565b60405180910390fd5b505b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61111e6120ff565b73ffffffffffffffffffffffffffffffffffffffff1661113c611588565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990613b13565b60405180910390fd5b5f600d5f6101000a81548160ff02191690831515021790555082600f8190555081600e819055506001905092915050565b6111cb6120ff565b73ffffffffffffffffffffffffffffffffffffffff166111e9611588565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613b13565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112e26120ff565b73ffffffffffffffffffffffffffffffffffffffff16611300611588565b73ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90613b13565b60405180910390fd5b61135f5f612fcd565b565b6113696120ff565b73ffffffffffffffffffffffffffffffffffffffff16611387611588565b73ffffffffffffffffffffffffffffffffffffffff16146113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490613b13565b60405180910390fd5b80600d5f6101000a81548160ff02191690831515021790555050565b6114016120ff565b73ffffffffffffffffffffffffffffffffffffffff1661141f611588565b73ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613b13565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6114d56120ff565b73ffffffffffffffffffffffffffffffffffffffff166114f3611588565b73ffffffffffffffffffffffffffffffffffffffff1614611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090613b13565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601081905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b86120ff565b73ffffffffffffffffffffffffffffffffffffffff166115d6611588565b73ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390613b13565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60606004805461165890613be0565b80601f016020809104026020016040519081016040528092919081815260200182805461168490613be0565b80156116cf5780601f106116a6576101008083540402835291602001916116cf565b820191905f5260205f20905b8154815290600101906020018083116116b257829003601f168201915b5050505050905090565b6116e16120ff565b73ffffffffffffffffffffffffffffffffffffffff166116ff611588565b73ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613b13565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613dea565b60405180910390fd5b6117ee8282613090565b5050565b6117fa6120ff565b73ffffffffffffffffffffffffffffffffffffffff16611818611588565b73ffffffffffffffffffffffffffffffffffffffff161461186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613b13565b60405180910390fd5b80600b8190555050565b5f8060015f6118856120ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613e78565b60405180910390fd5b61195361194a6120ff565b85858403612106565b600191505092915050565b5f61197161196a6120ff565b84846122c9565b6001905092915050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119b36120ff565b73ffffffffffffffffffffffffffffffffffffffff166119d1611588565b73ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e90613b13565b60405180910390fd5b5f5b81518160ff161015611ab9575f60165f848460ff1681518110611a4f57611a4e613b31565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611ab190613b8b565b915050611a29565b5050565b611ac56120ff565b73ffffffffffffffffffffffffffffffffffffffff16611ae3611588565b73ffffffffffffffffffffffffffffffffffffffff1614611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613b13565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600a5481565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600f5481565b600b5481565b600e5481565b611c396120ff565b73ffffffffffffffffffffffffffffffffffffffff16611c57611588565b73ffffffffffffffffffffffffffffffffffffffff1614611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490613b13565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d108160016113f9565b611d443060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d3f30611295565b612106565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db19190613eaa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3a9190613eaa565b6040518363ffffffff1660e01b8152600401611e57929190613ed5565b6020604051808303815f875af1158015611e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e979190613eaa565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f0260125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016113f9565b611f2e60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613090565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611f7630611295565b5f80611f80611588565b426040518863ffffffff1660e01b8152600401611fa296959493929190613f35565b60606040518083038185885af1158015611fbe573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fe39190613fa8565b5050506001600d5f6101000a81548160ff02191690831515021790555050565b61200b6120ff565b73ffffffffffffffffffffffffffffffffffffffff16612029611588565b73ffffffffffffffffffffffffffffffffffffffff161461207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690613b13565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490614068565b60405180910390fd5b6120f681612fcd565b50565b600c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b906140f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614184565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122bc91906138f5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e90614212565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c906142a0565b60405180910390fd5b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612443575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614308565b60405180910390fd5b5f81036124995761249483835f6130e8565b612d92565b600d5f9054906101000a900460ff161561297d576124b5611588565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252357506124f3611588565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561255b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612595575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125ae5750600660149054906101000a900460ff16155b1561297c57600d60019054906101000a900460ff166126a25760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612662575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269890614370565b60405180910390fd5b5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273f575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127e657600a54811115612789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612780906143fe565b60405180910390fd5b600c5461279583611295565b826127a09190613c9e565b11156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614466565b60405180910390fd5b61297b565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612883575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128d257600a548111156128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c4906144f4565b60405180910390fd5b61297a565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661297957600c5461292c83611295565b826129379190613c9e565b1115612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614466565b60405180910390fd5b5b5b5b5b5b5f61298730611295565b90505f600b5482101590508080156129ab5750600d60029054906101000a900460ff165b80156129c45750600660149054906101000a900460ff16155b8015612a17575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a6a575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612abd575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b00576001600660146101000a81548160ff021916908315150217905550612ae561335d565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612baf575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612bb8575f90505b5f8115612d825760155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c1657505f600f54115b15612c4b57612c446103e8612c36600f54886134a890919063ffffffff16565b6134bd90919063ffffffff16565b9050612d5f565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ca257505f600e54115b15612d5e575f60105443612cb69190614512565b03612ceb57612ce46103e8612cd6610384886134a890919063ffffffff16565b6134bd90919063ffffffff16565b9050612d5d565b600360105443612cfb9190614512565b11612d3057612d296103e8612d1b6102b2886134a890919063ffffffff16565b6134bd90919063ffffffff16565b9050612d5c565b612d596103e8612d4b600e54886134a890919063ffffffff16565b6134bd90919063ffffffff16565b90505b5b5b5b5f811115612d7357612d728730836130e8565b5b8085612d7f9190614512565b94505b612d8d8787876130e8565b505050505b505050565b5f600267ffffffffffffffff811115612db357612db2613501565b5b604051908082528060200260200182016040528015612de15781602001602082028036833780820191505090505b50905030815f81518110612df857612df7613b31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec09190613eaa565b81600181518110612ed457612ed3613b31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f3a3060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612106565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f9c9594939291906145fc565b5f604051808303815f87803b158015612fb3575f80fd5b505af1158015612fc5573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d90614212565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb906142a0565b60405180910390fd5b6131cf8383836134d2565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613252576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613249906146c4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132e09190613c9e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161334491906138f5565b60405180910390a36133578484846134d7565b50505050565b5f61336730611295565b90505f810361337657506134a6565b600b5481106134a4575f600b54905061338e81612d97565b5f4790505f811115613465575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516133e090613cfe565b5f6040518083038185875af1925050503d805f811461341a576040519150601f19603f3d011682016040523d82523d5f602084013e61341f565b606091505b5050905080613463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345a90613d5c565b60405180910390fd5b505b7fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff82826001604051613499939291906146e2565b60405180910390a150505b505b565b5f81836134b59190614717565b905092915050565b5f81836134ca9190614785565b905092915050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613537826134f1565b810181811067ffffffffffffffff8211171561355657613555613501565b5b80604052505050565b5f6135686134dc565b9050613574828261352e565b919050565b5f67ffffffffffffffff82111561359357613592613501565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135d1826135a8565b9050919050565b6135e1816135c7565b81146135eb575f80fd5b50565b5f813590506135fc816135d8565b92915050565b5f61361461360f84613579565b61355f565b90508083825260208201905060208402830185811115613637576136366135a4565b5b835b81811015613660578061364c88826135ee565b845260208401935050602081019050613639565b5050509392505050565b5f82601f83011261367e5761367d6134ed565b5b813561368e848260208601613602565b91505092915050565b5f602082840312156136ac576136ab6134e5565b5b5f82013567ffffffffffffffff8111156136c9576136c86134e9565b5b6136d58482850161366a565b91505092915050565b5f819050919050565b6136f0816136de565b81146136fa575f80fd5b50565b5f8135905061370b816136e7565b92915050565b5f60208284031215613726576137256134e5565b5b5f613733848285016136fd565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613773578082015181840152602081019050613758565b5f8484015250505050565b5f6137888261373c565b6137928185613746565b93506137a2818560208601613756565b6137ab816134f1565b840191505092915050565b5f6020820190508181035f8301526137ce818461377e565b905092915050565b5f80604083850312156137ec576137eb6134e5565b5b5f6137f9858286016135ee565b925050602061380a858286016136fd565b9150509250929050565b5f8115159050919050565b61382881613814565b82525050565b5f6020820190506138415f83018461381f565b92915050565b5f6020828403121561385c5761385b6134e5565b5b5f613869848285016135ee565b91505092915050565b5f819050919050565b5f61389561389061388b846135a8565b613872565b6135a8565b9050919050565b5f6138a68261387b565b9050919050565b5f6138b78261389c565b9050919050565b6138c7816138ad565b82525050565b5f6020820190506138e05f8301846138be565b92915050565b6138ef816136de565b82525050565b5f6020820190506139085f8301846138e6565b92915050565b5f805f60608486031215613925576139246134e5565b5b5f613932868287016135ee565b9350506020613943868287016135ee565b9250506040613954868287016136fd565b9150509250925092565b613967816135c7565b82525050565b5f6020820190506139805f83018461395e565b92915050565b5f60ff82169050919050565b61399b81613986565b82525050565b5f6020820190506139b45f830184613992565b92915050565b5f80604083850312156139d0576139cf6134e5565b5b5f6139dd858286016136fd565b92505060206139ee858286016136fd565b9150509250929050565b613a0181613814565b8114613a0b575f80fd5b50565b5f81359050613a1c816139f8565b92915050565b5f60208284031215613a3757613a366134e5565b5b5f613a4484828501613a0e565b91505092915050565b5f8060408385031215613a6357613a626134e5565b5b5f613a70858286016135ee565b9250506020613a8185828601613a0e565b9150509250929050565b5f8060408385031215613aa157613aa06134e5565b5b5f613aae858286016135ee565b9250506020613abf858286016135ee565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613afd602083613746565b9150613b0882613ac9565b602082019050919050565b5f6020820190508181035f830152613b2a81613af1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b9582613986565b915060ff8203613ba857613ba7613b5e565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613bf757607f821691505b602082108103613c0a57613c09613bb3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c6a602883613746565b9150613c7582613c10565b604082019050919050565b5f6020820190508181035f830152613c9781613c5e565b9050919050565b5f613ca8826136de565b9150613cb3836136de565b9250828201905080821115613ccb57613cca613b5e565b5b92915050565b5f81905092915050565b50565b5f613ce95f83613cd1565b9150613cf482613cdb565b5f82019050919050565b5f613d0882613cde565b9150819050919050565b7f756e61626c6520746f20747266000000000000000000000000000000000000005f82015250565b5f613d46600d83613746565b9150613d5182613d12565b602082019050919050565b5f6020820190508181035f830152613d7381613d3a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613dd4603983613746565b9150613ddf82613d7a565b604082019050919050565b5f6020820190508181035f830152613e0181613dc8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613e62602583613746565b9150613e6d82613e08565b604082019050919050565b5f6020820190508181035f830152613e8f81613e56565b9050919050565b5f81519050613ea4816135d8565b92915050565b5f60208284031215613ebf57613ebe6134e5565b5b5f613ecc84828501613e96565b91505092915050565b5f604082019050613ee85f83018561395e565b613ef5602083018461395e565b9392505050565b5f819050919050565b5f613f1f613f1a613f1584613efc565b613872565b6136de565b9050919050565b613f2f81613f05565b82525050565b5f60c082019050613f485f83018961395e565b613f5560208301886138e6565b613f626040830187613f26565b613f6f6060830186613f26565b613f7c608083018561395e565b613f8960a08301846138e6565b979650505050505050565b5f81519050613fa2816136e7565b92915050565b5f805f60608486031215613fbf57613fbe6134e5565b5b5f613fcc86828701613f94565b9350506020613fdd86828701613f94565b9250506040613fee86828701613f94565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614052602683613746565b915061405d82613ff8565b604082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6140e0602483613746565b91506140eb82614086565b604082019050919050565b5f6020820190508181035f83015261410d816140d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61416e602283613746565b915061417982614114565b604082019050919050565b5f6020820190508181035f83015261419b81614162565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141fc602583613746565b9150614207826141a2565b604082019050919050565b5f6020820190508181035f830152614229816141f0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61428a602383613746565b915061429582614230565b604082019050919050565b5f6020820190508181035f8301526142b78161427e565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f6142f2600b83613746565b91506142fd826142be565b602082019050919050565b5f6020820190508181035f83015261431f816142e6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965742e00000000005f82015250565b5f61435a601b83613746565b915061436582614326565b602082019050919050565b5f6020820190508181035f8301526143878161434e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6143e8603583613746565b91506143f38261438e565b604082019050919050565b5f6020820190508181035f830152614415816143dc565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614450601383613746565b915061445b8261441c565b602082019050919050565b5f6020820190508181035f83015261447d81614444565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6144de603683613746565b91506144e982614484565b604082019050919050565b5f6020820190508181035f83015261450b816144d2565b9050919050565b5f61451c826136de565b9150614527836136de565b925082820390508181111561453f5761453e613b5e565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614577816135c7565b82525050565b5f614588838361456e565b60208301905092915050565b5f602082019050919050565b5f6145aa82614545565b6145b4818561454f565b93506145bf8361455f565b805f5b838110156145ef5781516145d6888261457d565b97506145e183614594565b9250506001810190506145c2565b5085935050505092915050565b5f60a08201905061460f5f8301886138e6565b61461c6020830187613f26565b818103604083015261462e81866145a0565b905061463d606083018561395e565b61464a60808301846138e6565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6146ae602683613746565b91506146b982614654565b604082019050919050565b5f6020820190508181035f8301526146db816146a2565b9050919050565b5f6060820190506146f55f8301866138e6565b61470260208301856138e6565b61470f604083018461381f565b949350505050565b5f614721826136de565b915061472c836136de565b925082820261473a816136de565b9150828204841483151761475157614750613b5e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61478f826136de565b915061479a836136de565b9250826147aa576147a9614758565b5b82820490509291505056fea2646970667358221220dd740878ff449b61a0d0bb671c93c40c8e52be6f72f21cf973cf91c3a732a0f264736f6c63430008160033

Deployed Bytecode Sourcemap

18411:11854:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29454:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23574:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4782:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6384:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19779:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19522:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5271:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23809:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6586:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19605:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5113:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7123:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19570:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19221:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24013:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29817:441;;;;;;;;;;;;;:::i;:::-;;18607:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21104:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23444:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19302:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5442:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1530:103;;;;;;;;;;;;;:::i;:::-;;23910:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21297:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20880:149;;;;;;;;;;;;;:::i;:::-;;879:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21594:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5001:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21842:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23691:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7421:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5798:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19849:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19262:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29632:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21702:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18830:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19452:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6061:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19396:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18950:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19342:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22154:1144;;;:::i;:::-;;1788:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19125:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29454:172;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29534:7:::1;29530:89;29546:8;:15;29544:1;:17;;;29530:89;;;29603:4;29577:10;:23;29588:8;29597:1;29588:11;;;;;;;;;;:::i;:::-;;;;;;;;29577:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;29562:3;;;;;:::i;:::-;;;;29530:89;;;;29454:172:::0;:::o;23574:109::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23669:6:::1;23646:20;:29;;;;23574:109:::0;:::o;4782:100::-;4836:13;4869:5;4862:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4782:100;:::o;6384:194::-;6492:4;6509:39;6518:12;:10;:12::i;:::-;6532:7;6541:6;6509:8;:39::i;:::-;6566:4;6559:11;;6384:194;;;;:::o;19779:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;19522:41::-;;;;;;;;;;;;;:::o;5271:108::-;5332:7;5359:12;;5352:19;;5271:108;:::o;23809:93::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23888:6:::1;23876:9;:18;;;;23809:93:::0;:::o;6586:529::-;6726:4;6743:36;6753:6;6761:9;6772:6;6743:9;:36::i;:::-;6792:24;6819:11;:19;6831:6;6819:19;;;;;;;;;;;;;;;:33;6839:12;:10;:12::i;:::-;6819:33;;;;;;;;;;;;;;;;6792:60;;6905:6;6885:16;:26;;6863:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;7015:57;7024:6;7032:12;:10;:12::i;:::-;7065:6;7046:16;:25;7015:8;:57::i;:::-;7103:4;7096:11;;;6586:529;;;;;:::o;19605:53::-;19651:6;19605:53;:::o;5113:93::-;5171:5;5196:2;5189:9;;5113:93;:::o;7123:290::-;7236:4;7253:130;7276:12;:10;:12::i;:::-;7303:7;7362:10;7325:11;:25;7337:12;:10;:12::i;:::-;7325:25;;;;;;;;;;;;;;;:34;7351:7;7325:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7253:8;:130::i;:::-;7401:4;7394:11;;7123:290;;;;:::o;19570:28::-;;;;;;;;;;;;;:::o;19221:34::-;;;;;;;;;;;;;:::o;24013:126::-;24079:4;24103:19;:28;24123:7;24103:28;;;;;;;;;;;;;;;;;;;;;;;;;24096:35;;24013:126;;;:::o;29817:441::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29879:20:::1;29902:24;29920:4;29902:9;:24::i;:::-;29879:47;;29955:1;29940:12;:16;29937:78;;;29973:30;29990:12;29973:16;:30::i;:::-;29937:78;30025:18;30046:21;30025:42;;30094:1;30081:10;:14;30078:173;;;30126:12;30152:10;;;;;;;;;;;30144:24;;30176:10;30144:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30125:66;;;30214:7;30206:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;30097:154;30078:173;29858:400;;29817:441::o:0;18607:68::-;;;;;;;;;;;;;:::o;21104:185::-;21175:4;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21209:5:::1;21192:14;;:22;;;;;;;;;;;;;;;;;;21236:1;21225:8;:12;;;;21258:1;21248:7;:11;;;;21277:4;21270:11;;21104:185:::0;;;;:::o;23444:122::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23546:10:::1;23533;;:23;;;;;;;;;;;;;;;;;;23444:122:::0;:::o;19302:31::-;;;;;;;;;;;;;:::o;5442:143::-;5532:7;5559:9;:18;5569:7;5559:18;;;;;;;;;;;;;;;;5552:25;;5442:143;;;:::o;1530:103::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1595:30:::1;1622:1;1595:18;:30::i;:::-;1530:103::o:0;23910:93::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23990:5:::1;23973:14;;:22;;;;;;;;;;;;;;;;;;23910:93:::0;:::o;21297:201::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21480:10:::1;21428:31;:49;21460:16;21428:49;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;21297:201:::0;;:::o;20880:149::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20951:4:::1;20935:13;;:20;;;;;;;;;;;;;;;;;;20980:4;20966:11;;:18;;;;;;;;;;;;;;;;;;21009:12;20995:11;:26;;;;20880:149::o:0;879:87::-;925:7;952:6;;;;;;;;;;;945:13;;879:87;:::o;21594:100::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21679:7:::1;21665:11;;:21;;;;;;;;;;;;;;;;;;21594:100:::0;:::o;5001:104::-;5057:13;5090:7;5083:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5001:104;:::o;21842:304::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21988:13:::1;;;;;;;;;;;21980:21;;:4;:21;;::::0;21958:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22097:41;22126:4;22132:5;22097:28;:41::i;:::-;21842:304:::0;;:::o;23691:110::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23787:6:::1;23766:18;:27;;;;23691:110:::0;:::o;7421:475::-;7539:4;7556:24;7583:11;:25;7595:12;:10;:12::i;:::-;7583:25;;;;;;;;;;;;;;;:34;7609:7;7583:34;;;;;;;;;;;;;;;;7556:61;;7670:15;7650:16;:35;;7628:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7786:67;7795:12;:10;:12::i;:::-;7809:7;7837:15;7818:16;:34;7786:8;:67::i;:::-;7884:4;7877:11;;;7421:475;;;;:::o;5798:200::-;5909:4;5926:42;5936:12;:10;:12::i;:::-;5950:9;5961:6;5926:9;:42::i;:::-;5986:4;5979:11;;5798:200;;;;:::o;19849:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19262:33::-;;;;;;;;;;;;;:::o;29632:175::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29714:7:::1;29710:90;29726:8;:15;29724:1;:17;;;29710:90;;;29783:5;29757:10;:23;29768:8;29777:1;29768:11;;;;;;;;;;:::i;:::-;;;;;;;;29757:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29742:3;;;;;:::i;:::-;;;;29710:90;;;;29632:175:::0;:::o;21702:132::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21818:8:::1;21787:19;:28;21807:7;21787:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21702:132:::0;;:::o;18830:64::-;;;;:::o;19452:26::-;;;;:::o;6061:176::-;6175:7;6202:11;:18;6214:5;6202:18;;;;;;;;;;;;;;;:27;6221:7;6202:27;;;;;;;;;;;;;;;;6195:34;;6061:176;;;;:::o;19396:29::-;;;;:::o;18950:63::-;;;;:::o;19342:28::-;;;;:::o;22154:1144::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22283:35:::1;22354:42;22283:124;;22438:16;22420:15;;:34;;;;;;;;;;;;;;;;;;22465:58;22499:16;22518:4;22465:25;:58::i;:::-;22534:75;22551:4;22566:15;;;;;;;;;;;22584:24;22602:4;22584:9;:24::i;:::-;22534:8;:75::i;:::-;22684:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22666:70;;;22745:4;22752:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22666:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22650:13;;:126;;;;;;;;;;;;;;;;;;22787:55;22821:13;;;;;;;;;;;22837:4;22787:25;:55::i;:::-;22853:58;22890:13;;;;;;;;;;;22906:4;22853:28;:58::i;:::-;22924:15;;;;;;;;;;;:31;;;22963:9;22996:4;23032:24;23050:4;23032:9;:24::i;:::-;23091:1;23134::::0;23177:7:::1;:5;:7::i;:::-;23234:15;22924:336;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23286:4;23271:14;;:19;;;;;;;;;;;;;;;;;;22205:1093;22154:1144::o:0;1788:238::-;1110:12;:10;:12::i;:::-;1099:23;;:7;:5;:7::i;:::-;:23;;;1091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1911:1:::1;1891:22;;:8;:22;;::::0;1869:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1990:28;2009:8;1990:18;:28::i;:::-;1788:238:::0;:::o;19125:53::-;;;;:::o;200:98::-;253:7;280:10;273:17;;200:98;:::o;9688:380::-;9841:1;9824:19;;:5;:19;;;9816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9922:1;9903:21;;:7;:21;;;9895:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10006:6;9976:11;:18;9988:5;9976:18;;;;;;;;;;;;;;;:27;9995:7;9976:27;;;;;;;;;;;;;;;:36;;;;10044:7;10028:32;;10037:5;10028:32;;;10053:6;10028:32;;;;;;:::i;:::-;;;;;;;;9688:380;;;:::o;24147:3949::-;24295:1;24279:18;;:4;:18;;;24271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24372:1;24358:16;;:2;:16;;;24350:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24434:10;:14;24445:2;24434:14;;;;;;;;;;;;;;;;;;;;;;;;;24433:15;:36;;;;;24453:10;:16;24464:4;24453:16;;;;;;;;;;;;;;;;;;;;;;;;;24452:17;24433:36;24425:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24512:1;24502:6;:11;24498:93;;24530:28;24546:4;24552:2;24556:1;24530:15;:28::i;:::-;24573:7;;24498:93;24607:14;;;;;;;;;;;24603:1723;;;24668:7;:5;:7::i;:::-;24660:15;;:4;:15;;;;:49;;;;;24702:7;:5;:7::i;:::-;24696:13;;:2;:13;;;;24660:49;:86;;;;;24744:1;24730:16;;:2;:16;;;;24660:86;:128;;;;;24781:6;24767:21;;:2;:21;;;;24660:128;:158;;;;;24810:8;;;;;;;;;;;24809:9;24660:158;24638:1677;;;24858:13;;;;;;;;;;;24853:228;;24930:19;:25;24950:4;24930:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24959:19;:23;24979:2;24959:23;;;;;;;;;;;;;;;;;;;;;;;;;24930:52;24896:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;24853:228;25155:25;:31;25181:4;25155:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25212:31;:35;25244:2;25212:35;;;;;;;;;;;;;;;;;;;;;;;;;25211:36;25155:92;25129:1171;;;25334:20;;25324:6;:30;;25290:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;25542:9;;25525:13;25535:2;25525:9;:13::i;:::-;25516:6;:22;;;;:::i;:::-;:35;;25482:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25129:1171;;;25720:25;:29;25746:2;25720:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25775:31;:37;25807:4;25775:37;;;;;;;;;;;;;;;;;;;;;;;;;25774:38;25720:92;25694:606;;;25899:20;;25889:6;:30;;25855:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25694:606;;;26078:31;:35;26110:2;26078:35;;;;;;;;;;;;;;;;;;;;;;;;;26073:227;;26198:9;;26181:13;26191:2;26181:9;:13::i;:::-;26172:6;:22;;;;:::i;:::-;:35;;26138:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26073:227;25694:606;25129:1171;24638:1677;24603:1723;26336:28;26367:24;26385:4;26367:9;:24::i;:::-;26336:55;;26404:12;26443:18;;26419:20;:42;;26404:57;;26480:7;:35;;;;;26504:11;;;;;;;;;;;26480:35;:79;;;;;26551:8;;;;;;;;;;;26550:9;26480:79;:147;;;;;26596:25;:31;26622:4;26596:31;;;;;;;;;;;;;;;;;;;;;;;;;26595:32;26480:147;:209;;;;;26664:19;:25;26684:4;26664:25;;;;;;;;;;;;;;;;;;;;;;;;;26663:26;26480:209;:269;;;;;26726:19;:23;26746:2;26726:23;;;;;;;;;;;;;;;;;;;;;;;;;26725:24;26480:269;26476:402;;;26806:4;26795:8;;:15;;;;;;;;;;;;;;;;;;26825:10;:8;:10::i;:::-;26861:5;26850:8;;:16;;;;;;;;;;;;;;;;;;26476:402;26890:12;26906:8;;;;;;;;;;;26905:9;26890:24;;27016:19;:25;27036:4;27016:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27045:19;:23;27065:2;27045:23;;;;;;;;;;;;;;;;;;;;;;;;;27016:52;27012:100;;;27095:5;27085:15;;27012:100;27124:12;27229:7;27225:820;;;27281:25;:29;27307:2;27281:29;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;27325:1;27314:8;;:12;27281:45;27277:621;;;27354:30;27379:4;27354:20;27365:8;;27354:6;:10;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;27347:37;;27277:621;;;27470:25;:31;27496:4;27470:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27515:1;27505:7;;:11;27470:46;27466:432;;;27603:1;27588:11;;27573:12;:26;;;;:::i;:::-;:31;27569:314;;27635:25;27655:4;27635:15;27646:3;27635:6;:10;;:15;;;;:::i;:::-;:19;;:25;;;;:::i;:::-;27628:32;;27569:314;;;27720:1;27705:11;;27690:12;:26;;;;:::i;:::-;:31;27686:197;;27753:25;27773:4;27753:15;27764:3;27753:6;:10;;:15;;;;:::i;:::-;:19;;:25;;;;:::i;:::-;27746:32;;27686:197;;;27834:29;27858:4;27834:19;27845:7;;27834:6;:10;;:19;;;;:::i;:::-;:23;;:29;;;;:::i;:::-;27827:36;;27686:197;27569:314;27466:432;27277:621;27925:1;27918:4;:8;27914:91;;;27947:42;27963:4;27977;27984;27947:15;:42::i;:::-;27914:91;28029:4;28019:14;;;;;:::i;:::-;;;27225:820;28055:33;28071:4;28077:2;28081:6;28055:15;:33::i;:::-;24260:3836;;;;24147:3949;;;;:::o;28104:611::-;28230:21;28268:1;28254:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28230:40;;28299:4;28281;28286:1;28281:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28325:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28315:4;28320:1;28315:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28358:62;28375:4;28390:15;;;;;;;;;;;28408:11;28358:8;:62::i;:::-;28457:15;;;;;;;;;;;:66;;;28538:11;28564:1;28608:4;28635;28655:15;28457:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28159:556;28104:611;:::o;2186:191::-;2260:16;2279:6;;;;;;;;;;;2260:25;;2305:8;2296:6;;:17;;;;;;;;;;;;;;;;;;2360:8;2329:40;;2350:8;2329:40;;;;;;;;;;;;2249:128;2186:191;:::o;23306:130::-;23423:5;23389:25;:31;23415:4;23389:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23306:130;;:::o;7904:770::-;8062:1;8044:20;;:6;:20;;;8036:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8146:1;8125:23;;:9;:23;;;8117:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8201:47;8222:6;8230:9;8241:6;8201:20;:47::i;:::-;8261:21;8285:9;:17;8295:6;8285:17;;;;;;;;;;;;;;;;8261:41;;8352:6;8335:13;:23;;8313:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8496:6;8480:13;:22;8460:9;:17;8470:6;8460:17;;;;;;;;;;;;;;;:42;;;;8548:6;8524:9;:20;8534:9;8524:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8589:9;8572:35;;8581:6;8572:35;;;8600:6;8572:35;;;;;;:::i;:::-;;;;;;;;8620:46;8640:6;8648:9;8659:6;8620:19;:46::i;:::-;8025:649;7904:770;;;:::o;28723:723::-;28762:23;28788:24;28806:4;28788:9;:24::i;:::-;28762:50;;28852:1;28833:15;:20;28829:59;;28870:7;;;28829:59;28921:18;;28902:15;:37;28898:531;;28956:26;28985:18;;28956:47;;29018:36;29035:18;29018:16;:36::i;:::-;29069:23;29095:21;29069:47;;29166:1;29150:15;:17;29147:179;;;29188:12;29214:10;;;;;;;;;;;29206:24;;29238:15;29206:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29187:71;;;29285:7;29277:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;29168:158;29147:179;29359:58;29375:18;29395:15;29412:4;29359:58;;;;;;;;:::i;:::-;;;;;;;;28941:488;;28898:531;28751:695;28723:723;:::o;12050:98::-;12108:7;12139:1;12135;:5;;;;:::i;:::-;12128:12;;12050:98;;;;:::o;12156:::-;12214:7;12245:1;12241;:5;;;;:::i;:::-;12234:12;;12156:98;;;;:::o;10076:125::-;;;;:::o;10209:124::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:329::-;4206:6;4255:2;4243:9;4234:7;4230:23;4226:32;4223:119;;;4261:79;;:::i;:::-;4223:119;4381:1;4406:53;4451:7;4442:6;4431:9;4427:22;4406:53;:::i;:::-;4396:63;;4352:117;4147:329;;;;:::o;4482:99::-;4534:6;4568:5;4562:12;4552:22;;4482:99;;;:::o;4587:169::-;4671:11;4705:6;4700:3;4693:19;4745:4;4740:3;4736:14;4721:29;;4587:169;;;;:::o;4762:246::-;4843:1;4853:113;4867:6;4864:1;4861:13;4853:113;;;4952:1;4947:3;4943:11;4937:18;4933:1;4928:3;4924:11;4917:39;4889:2;4886:1;4882:10;4877:15;;4853:113;;;5000:1;4991:6;4986:3;4982:16;4975:27;4824:184;4762:246;;;:::o;5014:377::-;5102:3;5130:39;5163:5;5130:39;:::i;:::-;5185:71;5249:6;5244:3;5185:71;:::i;:::-;5178:78;;5265:65;5323:6;5318:3;5311:4;5304:5;5300:16;5265:65;:::i;:::-;5355:29;5377:6;5355:29;:::i;:::-;5350:3;5346:39;5339:46;;5106:285;5014:377;;;;:::o;5397:313::-;5510:4;5548:2;5537:9;5533:18;5525:26;;5597:9;5591:4;5587:20;5583:1;5572:9;5568:17;5561:47;5625:78;5698:4;5689:6;5625:78;:::i;:::-;5617:86;;5397:313;;;;:::o;5716:474::-;5784:6;5792;5841:2;5829:9;5820:7;5816:23;5812:32;5809:119;;;5847:79;;:::i;:::-;5809:119;5967:1;5992:53;6037:7;6028:6;6017:9;6013:22;5992:53;:::i;:::-;5982:63;;5938:117;6094:2;6120:53;6165:7;6156:6;6145:9;6141:22;6120:53;:::i;:::-;6110:63;;6065:118;5716:474;;;;;:::o;6196:90::-;6230:7;6273:5;6266:13;6259:21;6248:32;;6196:90;;;:::o;6292:109::-;6373:21;6388:5;6373:21;:::i;:::-;6368:3;6361:34;6292:109;;:::o;6407:210::-;6494:4;6532:2;6521:9;6517:18;6509:26;;6545:65;6607:1;6596:9;6592:17;6583:6;6545:65;:::i;:::-;6407:210;;;;:::o;6623:329::-;6682:6;6731:2;6719:9;6710:7;6706:23;6702:32;6699:119;;;6737:79;;:::i;:::-;6699:119;6857:1;6882:53;6927:7;6918:6;6907:9;6903:22;6882:53;:::i;:::-;6872:63;;6828:117;6623:329;;;;:::o;6958:60::-;6986:3;7007:5;7000:12;;6958:60;;;:::o;7024:142::-;7074:9;7107:53;7125:34;7134:24;7152:5;7134:24;:::i;:::-;7125:34;:::i;:::-;7107:53;:::i;:::-;7094:66;;7024:142;;;:::o;7172:126::-;7222:9;7255:37;7286:5;7255:37;:::i;:::-;7242:50;;7172:126;;;:::o;7304:153::-;7381:9;7414:37;7445:5;7414:37;:::i;:::-;7401:50;;7304:153;;;:::o;7463:185::-;7577:64;7635:5;7577:64;:::i;:::-;7572:3;7565:77;7463:185;;:::o;7654:276::-;7774:4;7812:2;7801:9;7797:18;7789:26;;7825:98;7920:1;7909:9;7905:17;7896:6;7825:98;:::i;:::-;7654:276;;;;:::o;7936:118::-;8023:24;8041:5;8023:24;:::i;:::-;8018:3;8011:37;7936:118;;:::o;8060:222::-;8153:4;8191:2;8180:9;8176:18;8168:26;;8204:71;8272:1;8261:9;8257:17;8248:6;8204:71;:::i;:::-;8060:222;;;;:::o;8288:619::-;8365:6;8373;8381;8430:2;8418:9;8409:7;8405:23;8401:32;8398:119;;;8436:79;;:::i;:::-;8398:119;8556:1;8581:53;8626:7;8617:6;8606:9;8602:22;8581:53;:::i;:::-;8571:63;;8527:117;8683:2;8709:53;8754:7;8745:6;8734:9;8730:22;8709:53;:::i;:::-;8699:63;;8654:118;8811:2;8837:53;8882:7;8873:6;8862:9;8858:22;8837:53;:::i;:::-;8827:63;;8782:118;8288:619;;;;;:::o;8913:118::-;9000:24;9018:5;9000:24;:::i;:::-;8995:3;8988:37;8913:118;;:::o;9037:222::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9181:71;9249:1;9238:9;9234:17;9225:6;9181:71;:::i;:::-;9037:222;;;;:::o;9265:86::-;9300:7;9340:4;9333:5;9329:16;9318:27;;9265:86;;;:::o;9357:112::-;9440:22;9456:5;9440:22;:::i;:::-;9435:3;9428:35;9357:112;;:::o;9475:214::-;9564:4;9602:2;9591:9;9587:18;9579:26;;9615:67;9679:1;9668:9;9664:17;9655:6;9615:67;:::i;:::-;9475:214;;;;:::o;9695:474::-;9763:6;9771;9820:2;9808:9;9799:7;9795:23;9791:32;9788:119;;;9826:79;;:::i;:::-;9788:119;9946:1;9971:53;10016:7;10007:6;9996:9;9992:22;9971:53;:::i;:::-;9961:63;;9917:117;10073:2;10099:53;10144:7;10135:6;10124:9;10120:22;10099:53;:::i;:::-;10089:63;;10044:118;9695:474;;;;;:::o;10175:116::-;10245:21;10260:5;10245:21;:::i;:::-;10238:5;10235:32;10225:60;;10281:1;10278;10271:12;10225:60;10175:116;:::o;10297:133::-;10340:5;10378:6;10365:20;10356:29;;10394:30;10418:5;10394:30;:::i;:::-;10297:133;;;;:::o;10436:323::-;10492:6;10541:2;10529:9;10520:7;10516:23;10512:32;10509:119;;;10547:79;;:::i;:::-;10509:119;10667:1;10692:50;10734:7;10725:6;10714:9;10710:22;10692:50;:::i;:::-;10682:60;;10638:114;10436:323;;;;:::o;10765:468::-;10830:6;10838;10887:2;10875:9;10866:7;10862:23;10858:32;10855:119;;;10893:79;;:::i;:::-;10855:119;11013:1;11038:53;11083:7;11074:6;11063:9;11059:22;11038:53;:::i;:::-;11028:63;;10984:117;11140:2;11166:50;11208:7;11199:6;11188:9;11184:22;11166:50;:::i;:::-;11156:60;;11111:115;10765:468;;;;;:::o;11239:474::-;11307:6;11315;11364:2;11352:9;11343:7;11339:23;11335:32;11332:119;;;11370:79;;:::i;:::-;11332:119;11490:1;11515:53;11560:7;11551:6;11540:9;11536:22;11515:53;:::i;:::-;11505:63;;11461:117;11617:2;11643:53;11688:7;11679:6;11668:9;11664:22;11643:53;:::i;:::-;11633:63;;11588:118;11239:474;;;;;:::o;11719:182::-;11859:34;11855:1;11847:6;11843:14;11836:58;11719:182;:::o;11907:366::-;12049:3;12070:67;12134:2;12129:3;12070:67;:::i;:::-;12063:74;;12146:93;12235:3;12146:93;:::i;:::-;12264:2;12259:3;12255:12;12248:19;;11907:366;;;:::o;12279:419::-;12445:4;12483:2;12472:9;12468:18;12460:26;;12532:9;12526:4;12522:20;12518:1;12507:9;12503:17;12496:47;12560:131;12686:4;12560:131;:::i;:::-;12552:139;;12279:419;;;:::o;12704:180::-;12752:77;12749:1;12742:88;12849:4;12846:1;12839:15;12873:4;12870:1;12863:15;12890:180;12938:77;12935:1;12928:88;13035:4;13032:1;13025:15;13059:4;13056:1;13049:15;13076:167;13113:3;13136:22;13152:5;13136:22;:::i;:::-;13127:31;;13180:4;13173:5;13170:15;13167:41;;13188:18;;:::i;:::-;13167:41;13235:1;13228:5;13224:13;13217:20;;13076:167;;;:::o;13249:180::-;13297:77;13294:1;13287:88;13394:4;13391:1;13384:15;13418:4;13415:1;13408:15;13435:320;13479:6;13516:1;13510:4;13506:12;13496:22;;13563:1;13557:4;13553:12;13584:18;13574:81;;13640:4;13632:6;13628:17;13618:27;;13574:81;13702:2;13694:6;13691:14;13671:18;13668:38;13665:84;;13721:18;;:::i;:::-;13665:84;13486:269;13435:320;;;:::o;13761:227::-;13901:34;13897:1;13889:6;13885:14;13878:58;13970:10;13965:2;13957:6;13953:15;13946:35;13761:227;:::o;13994:366::-;14136:3;14157:67;14221:2;14216:3;14157:67;:::i;:::-;14150:74;;14233:93;14322:3;14233:93;:::i;:::-;14351:2;14346:3;14342:12;14335:19;;13994:366;;;:::o;14366:419::-;14532:4;14570:2;14559:9;14555:18;14547:26;;14619:9;14613:4;14609:20;14605:1;14594:9;14590:17;14583:47;14647:131;14773:4;14647:131;:::i;:::-;14639:139;;14366:419;;;:::o;14791:191::-;14831:3;14850:20;14868:1;14850:20;:::i;:::-;14845:25;;14884:20;14902:1;14884:20;:::i;:::-;14879:25;;14927:1;14924;14920:9;14913:16;;14948:3;14945:1;14942:10;14939:36;;;14955:18;;:::i;:::-;14939:36;14791:191;;;;:::o;14988:147::-;15089:11;15126:3;15111:18;;14988:147;;;;:::o;15141:114::-;;:::o;15261:398::-;15420:3;15441:83;15522:1;15517:3;15441:83;:::i;:::-;15434:90;;15533:93;15622:3;15533:93;:::i;:::-;15651:1;15646:3;15642:11;15635:18;;15261:398;;;:::o;15665:379::-;15849:3;15871:147;16014:3;15871:147;:::i;:::-;15864:154;;16035:3;16028:10;;15665:379;;;:::o;16050:163::-;16190:15;16186:1;16178:6;16174:14;16167:39;16050:163;:::o;16219:366::-;16361:3;16382:67;16446:2;16441:3;16382:67;:::i;:::-;16375:74;;16458:93;16547:3;16458:93;:::i;:::-;16576:2;16571:3;16567:12;16560:19;;16219:366;;;:::o;16591:419::-;16757:4;16795:2;16784:9;16780:18;16772:26;;16844:9;16838:4;16834:20;16830:1;16819:9;16815:17;16808:47;16872:131;16998:4;16872:131;:::i;:::-;16864:139;;16591:419;;;:::o;17016:244::-;17156:34;17152:1;17144:6;17140:14;17133:58;17225:27;17220:2;17212:6;17208:15;17201:52;17016:244;:::o;17266:366::-;17408:3;17429:67;17493:2;17488:3;17429:67;:::i;:::-;17422:74;;17505:93;17594:3;17505:93;:::i;:::-;17623:2;17618:3;17614:12;17607:19;;17266:366;;;:::o;17638:419::-;17804:4;17842:2;17831:9;17827:18;17819:26;;17891:9;17885:4;17881:20;17877:1;17866:9;17862:17;17855:47;17919:131;18045:4;17919:131;:::i;:::-;17911:139;;17638:419;;;:::o;18063:224::-;18203:34;18199:1;18191:6;18187:14;18180:58;18272:7;18267:2;18259:6;18255:15;18248:32;18063:224;:::o;18293:366::-;18435:3;18456:67;18520:2;18515:3;18456:67;:::i;:::-;18449:74;;18532:93;18621:3;18532:93;:::i;:::-;18650:2;18645:3;18641:12;18634:19;;18293:366;;;:::o;18665:419::-;18831:4;18869:2;18858:9;18854:18;18846:26;;18918:9;18912:4;18908:20;18904:1;18893:9;18889:17;18882:47;18946:131;19072:4;18946:131;:::i;:::-;18938:139;;18665:419;;;:::o;19090:143::-;19147:5;19178:6;19172:13;19163:22;;19194:33;19221:5;19194:33;:::i;:::-;19090:143;;;;:::o;19239:351::-;19309:6;19358:2;19346:9;19337:7;19333:23;19329:32;19326:119;;;19364:79;;:::i;:::-;19326:119;19484:1;19509:64;19565:7;19556:6;19545:9;19541:22;19509:64;:::i;:::-;19499:74;;19455:128;19239:351;;;;:::o;19596:332::-;19717:4;19755:2;19744:9;19740:18;19732:26;;19768:71;19836:1;19825:9;19821:17;19812:6;19768:71;:::i;:::-;19849:72;19917:2;19906:9;19902:18;19893:6;19849:72;:::i;:::-;19596:332;;;;;:::o;19934:85::-;19979:7;20008:5;19997:16;;19934:85;;;:::o;20025:158::-;20083:9;20116:61;20134:42;20143:32;20169:5;20143:32;:::i;:::-;20134:42;:::i;:::-;20116:61;:::i;:::-;20103:74;;20025:158;;;:::o;20189:147::-;20284:45;20323:5;20284:45;:::i;:::-;20279:3;20272:58;20189:147;;:::o;20342:807::-;20591:4;20629:3;20618:9;20614:19;20606:27;;20643:71;20711:1;20700:9;20696:17;20687:6;20643:71;:::i;:::-;20724:72;20792:2;20781:9;20777:18;20768:6;20724:72;:::i;:::-;20806:80;20882:2;20871:9;20867:18;20858:6;20806:80;:::i;:::-;20896;20972:2;20961:9;20957:18;20948:6;20896:80;:::i;:::-;20986:73;21054:3;21043:9;21039:19;21030:6;20986:73;:::i;:::-;21069;21137:3;21126:9;21122:19;21113:6;21069:73;:::i;:::-;20342:807;;;;;;;;;:::o;21155:143::-;21212:5;21243:6;21237:13;21228:22;;21259:33;21286:5;21259:33;:::i;:::-;21155:143;;;;:::o;21304:663::-;21392:6;21400;21408;21457:2;21445:9;21436:7;21432:23;21428:32;21425:119;;;21463:79;;:::i;:::-;21425:119;21583:1;21608:64;21664:7;21655:6;21644:9;21640:22;21608:64;:::i;:::-;21598:74;;21554:128;21721:2;21747:64;21803:7;21794:6;21783:9;21779:22;21747:64;:::i;:::-;21737:74;;21692:129;21860:2;21886:64;21942:7;21933:6;21922:9;21918:22;21886:64;:::i;:::-;21876:74;;21831:129;21304:663;;;;;:::o;21973:225::-;22113:34;22109:1;22101:6;22097:14;22090:58;22182:8;22177:2;22169:6;22165:15;22158:33;21973:225;:::o;22204:366::-;22346:3;22367:67;22431:2;22426:3;22367:67;:::i;:::-;22360:74;;22443:93;22532:3;22443:93;:::i;:::-;22561:2;22556:3;22552:12;22545:19;;22204:366;;;:::o;22576:419::-;22742:4;22780:2;22769:9;22765:18;22757:26;;22829:9;22823:4;22819:20;22815:1;22804:9;22800:17;22793:47;22857:131;22983:4;22857:131;:::i;:::-;22849:139;;22576:419;;;:::o;23001:223::-;23141:34;23137:1;23129:6;23125:14;23118:58;23210:6;23205:2;23197:6;23193:15;23186:31;23001:223;:::o;23230:366::-;23372:3;23393:67;23457:2;23452:3;23393:67;:::i;:::-;23386:74;;23469:93;23558:3;23469:93;:::i;:::-;23587:2;23582:3;23578:12;23571:19;;23230:366;;;:::o;23602:419::-;23768:4;23806:2;23795:9;23791:18;23783:26;;23855:9;23849:4;23845:20;23841:1;23830:9;23826:17;23819:47;23883:131;24009:4;23883:131;:::i;:::-;23875:139;;23602:419;;;:::o;24027:221::-;24167:34;24163:1;24155:6;24151:14;24144:58;24236:4;24231:2;24223:6;24219:15;24212:29;24027:221;:::o;24254:366::-;24396:3;24417:67;24481:2;24476:3;24417:67;:::i;:::-;24410:74;;24493:93;24582:3;24493:93;:::i;:::-;24611:2;24606:3;24602:12;24595:19;;24254:366;;;:::o;24626:419::-;24792:4;24830:2;24819:9;24815:18;24807:26;;24879:9;24873:4;24869:20;24865:1;24854:9;24850:17;24843:47;24907:131;25033:4;24907:131;:::i;:::-;24899:139;;24626:419;;;:::o;25051:224::-;25191:34;25187:1;25179:6;25175:14;25168:58;25260:7;25255:2;25247:6;25243:15;25236:32;25051:224;:::o;25281:366::-;25423:3;25444:67;25508:2;25503:3;25444:67;:::i;:::-;25437:74;;25520:93;25609:3;25520:93;:::i;:::-;25638:2;25633:3;25629:12;25622:19;;25281:366;;;:::o;25653:419::-;25819:4;25857:2;25846:9;25842:18;25834:26;;25906:9;25900:4;25896:20;25892:1;25881:9;25877:17;25870:47;25934:131;26060:4;25934:131;:::i;:::-;25926:139;;25653:419;;;:::o;26078:222::-;26218:34;26214:1;26206:6;26202:14;26195:58;26287:5;26282:2;26274:6;26270:15;26263:30;26078:222;:::o;26306:366::-;26448:3;26469:67;26533:2;26528:3;26469:67;:::i;:::-;26462:74;;26545:93;26634:3;26545:93;:::i;:::-;26663:2;26658:3;26654:12;26647:19;;26306:366;;;:::o;26678:419::-;26844:4;26882:2;26871:9;26867:18;26859:26;;26931:9;26925:4;26921:20;26917:1;26906:9;26902:17;26895:47;26959:131;27085:4;26959:131;:::i;:::-;26951:139;;26678:419;;;:::o;27103:161::-;27243:13;27239:1;27231:6;27227:14;27220:37;27103:161;:::o;27270:366::-;27412:3;27433:67;27497:2;27492:3;27433:67;:::i;:::-;27426:74;;27509:93;27598:3;27509:93;:::i;:::-;27627:2;27622:3;27618:12;27611:19;;27270:366;;;:::o;27642:419::-;27808:4;27846:2;27835:9;27831:18;27823:26;;27895:9;27889:4;27885:20;27881:1;27870:9;27866:17;27859:47;27923:131;28049:4;27923:131;:::i;:::-;27915:139;;27642:419;;;:::o;28067:177::-;28207:29;28203:1;28195:6;28191:14;28184:53;28067:177;:::o;28250:366::-;28392:3;28413:67;28477:2;28472:3;28413:67;:::i;:::-;28406:74;;28489:93;28578:3;28489:93;:::i;:::-;28607:2;28602:3;28598:12;28591:19;;28250:366;;;:::o;28622:419::-;28788:4;28826:2;28815:9;28811:18;28803:26;;28875:9;28869:4;28865:20;28861:1;28850:9;28846:17;28839:47;28903:131;29029:4;28903:131;:::i;:::-;28895:139;;28622:419;;;:::o;29047:240::-;29187:34;29183:1;29175:6;29171:14;29164:58;29256:23;29251:2;29243:6;29239:15;29232:48;29047:240;:::o;29293:366::-;29435:3;29456:67;29520:2;29515:3;29456:67;:::i;:::-;29449:74;;29532:93;29621:3;29532:93;:::i;:::-;29650:2;29645:3;29641:12;29634:19;;29293:366;;;:::o;29665:419::-;29831:4;29869:2;29858:9;29854:18;29846:26;;29918:9;29912:4;29908:20;29904:1;29893:9;29889:17;29882:47;29946:131;30072:4;29946:131;:::i;:::-;29938:139;;29665:419;;;:::o;30090:169::-;30230:21;30226:1;30218:6;30214:14;30207:45;30090:169;:::o;30265:366::-;30407:3;30428:67;30492:2;30487:3;30428:67;:::i;:::-;30421:74;;30504:93;30593:3;30504:93;:::i;:::-;30622:2;30617:3;30613:12;30606:19;;30265:366;;;:::o;30637:419::-;30803:4;30841:2;30830:9;30826:18;30818:26;;30890:9;30884:4;30880:20;30876:1;30865:9;30861:17;30854:47;30918:131;31044:4;30918:131;:::i;:::-;30910:139;;30637:419;;;:::o;31062:241::-;31202:34;31198:1;31190:6;31186:14;31179:58;31271:24;31266:2;31258:6;31254:15;31247:49;31062:241;:::o;31309:366::-;31451:3;31472:67;31536:2;31531:3;31472:67;:::i;:::-;31465:74;;31548:93;31637:3;31548:93;:::i;:::-;31666:2;31661:3;31657:12;31650:19;;31309:366;;;:::o;31681:419::-;31847:4;31885:2;31874:9;31870:18;31862:26;;31934:9;31928:4;31924:20;31920:1;31909:9;31905:17;31898:47;31962:131;32088:4;31962:131;:::i;:::-;31954:139;;31681:419;;;:::o;32106:194::-;32146:4;32166:20;32184:1;32166:20;:::i;:::-;32161:25;;32200:20;32218:1;32200:20;:::i;:::-;32195:25;;32244:1;32241;32237:9;32229:17;;32268:1;32262:4;32259:11;32256:37;;;32273:18;;:::i;:::-;32256:37;32106:194;;;;:::o;32306:114::-;32373:6;32407:5;32401:12;32391:22;;32306:114;;;:::o;32426:184::-;32525:11;32559:6;32554:3;32547:19;32599:4;32594:3;32590:14;32575:29;;32426:184;;;;:::o;32616:132::-;32683:4;32706:3;32698:11;;32736:4;32731:3;32727:14;32719:22;;32616:132;;;:::o;32754:108::-;32831:24;32849:5;32831:24;:::i;:::-;32826:3;32819:37;32754:108;;:::o;32868:179::-;32937:10;32958:46;33000:3;32992:6;32958:46;:::i;:::-;33036:4;33031:3;33027:14;33013:28;;32868:179;;;;:::o;33053:113::-;33123:4;33155;33150:3;33146:14;33138:22;;33053:113;;;:::o;33202:732::-;33321:3;33350:54;33398:5;33350:54;:::i;:::-;33420:86;33499:6;33494:3;33420:86;:::i;:::-;33413:93;;33530:56;33580:5;33530:56;:::i;:::-;33609:7;33640:1;33625:284;33650:6;33647:1;33644:13;33625:284;;;33726:6;33720:13;33753:63;33812:3;33797:13;33753:63;:::i;:::-;33746:70;;33839:60;33892:6;33839:60;:::i;:::-;33829:70;;33685:224;33672:1;33669;33665:9;33660:14;;33625:284;;;33629:14;33925:3;33918:10;;33326:608;;;33202:732;;;;:::o;33940:831::-;34203:4;34241:3;34230:9;34226:19;34218:27;;34255:71;34323:1;34312:9;34308:17;34299:6;34255:71;:::i;:::-;34336:80;34412:2;34401:9;34397:18;34388:6;34336:80;:::i;:::-;34463:9;34457:4;34453:20;34448:2;34437:9;34433:18;34426:48;34491:108;34594:4;34585:6;34491:108;:::i;:::-;34483:116;;34609:72;34677:2;34666:9;34662:18;34653:6;34609:72;:::i;:::-;34691:73;34759:3;34748:9;34744:19;34735:6;34691:73;:::i;:::-;33940:831;;;;;;;;:::o;34777:225::-;34917:34;34913:1;34905:6;34901:14;34894:58;34986:8;34981:2;34973:6;34969:15;34962:33;34777:225;:::o;35008:366::-;35150:3;35171:67;35235:2;35230:3;35171:67;:::i;:::-;35164:74;;35247:93;35336:3;35247:93;:::i;:::-;35365:2;35360:3;35356:12;35349:19;;35008:366;;;:::o;35380:419::-;35546:4;35584:2;35573:9;35569:18;35561:26;;35633:9;35627:4;35623:20;35619:1;35608:9;35604:17;35597:47;35661:131;35787:4;35661:131;:::i;:::-;35653:139;;35380:419;;;:::o;35805:430::-;35948:4;35986:2;35975:9;35971:18;35963:26;;35999:71;36067:1;36056:9;36052:17;36043:6;35999:71;:::i;:::-;36080:72;36148:2;36137:9;36133:18;36124:6;36080:72;:::i;:::-;36162:66;36224:2;36213:9;36209:18;36200:6;36162:66;:::i;:::-;35805:430;;;;;;:::o;36241:410::-;36281:7;36304:20;36322:1;36304:20;:::i;:::-;36299:25;;36338:20;36356:1;36338:20;:::i;:::-;36333:25;;36393:1;36390;36386:9;36415:30;36433:11;36415:30;:::i;:::-;36404:41;;36594:1;36585:7;36581:15;36578:1;36575:22;36555:1;36548:9;36528:83;36505:139;;36624:18;;:::i;:::-;36505:139;36289:362;36241:410;;;;:::o;36657:180::-;36705:77;36702:1;36695:88;36802:4;36799:1;36792:15;36826:4;36823:1;36816:15;36843:185;36883:1;36900:20;36918:1;36900:20;:::i;:::-;36895:25;;36934:20;36952:1;36934:20;:::i;:::-;36929:25;;36973:1;36963:35;;36978:18;;:::i;:::-;36963:35;37020:1;37017;37013:9;37008:14;;36843:185;;;;:::o

Swarm Source

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