ETH Price: $2,356.75 (+0.35%)

Token

TrumpGoku ($TGK)
 

Overview

Max Total Supply

420,690,000,000 $TGK

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
310,930,430.045649477086083056 $TGK

Value
$0.00
0x20dA95E3AF780f75700dE262D34EB0d2E1033400
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:
TrumpGoku

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-27
*/

pragma solidity 0.8.21;

// SPDX-License-Identifier: MIT

/*  TELEGRAM: https://t.me/TrumpGoku
    WEBSITE: https://Trumpgoku.com
    TWITTER: https://x.com/trumpgoku
*/


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

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

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

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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    function contractEthBalance() external view returns (uint256) {
        return address(this).balance;
    }


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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}

interface IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

contract TrumpGoku is ERC20, Ownable {

    mapping (address => bool) public exemptFromFees;
    mapping (address => bool) public exemptFromLimits;
    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public isWhitelisted;


    bool public tradingActive;

    mapping (address => bool) public isAMMPair;

    uint256 public maxTransaction;
    uint256 public maxWallet;

    address public operationsAddress;
    address public taxAddress;

    uint256 public cloggingPercent = 10; // 5% of the total supply
    uint256 public lastUncloggedBlock;
    uint256 public unclogInterval = 600; // Unclog every 600 blocks (~2 hours)

    uint256 public buyTax;
    uint256 public sellTax;
    uint256 public startBlock;
    uint256 public taxDecreaseInterval = 3; // number of blocks after which to reduce the tax
    uint256 public taxReductionStep = 5; // percentage points to reduce the tax by

    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    bool public limitsInEffect = true;

    bool private swapping;
    uint256 public swapTokensAtAmt;

    address public lpPair;
    IDexRouter public dexRouter;

    uint256 public constant FEE_DIVISOR = 10000;

    // events

    event UpdatedMaxTransaction(uint256 newMax);
    event UpdatedMaxWallet(uint256 newMax);
    event SetExemptFromFees(address _address, bool _isExempt);
    event SetExemptFromLimits(address _address, bool _isExempt);
    event RemovedLimits();
    event UpdatedBuyTax(uint256 newAmt);
    event UpdatedSellTax(uint256 newAmt);
    event TokensClogged(uint256 amount);
    event TokensUnclogged(uint256 tokenAmount, uint256 ethReceived);


    // constructor

    constructor(string memory _name, string memory _symbol)
        ERC20(_name, _symbol)
    {   
        address newOwner = 0x42Cdd100a377Cd6c1D7003B3f94Bb0a25C30cB0C;
        _mint(newOwner, 420_690_000_000 * 1e18);
        uint256 _totalSupply = totalSupply();

        address _v2Router;

        // @dev assumes WETH pair
        if(block.chainid == 1){
            _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if(block.chainid == 5){
            _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_v2Router);

        maxTransaction = _totalSupply * 15 / 1000;
        maxWallet = _totalSupply * 15 / 1000;
        swapTokensAtAmt = _totalSupply * 25 / 100000;

        operationsAddress = 0x118547D4c6A3160C1Eec427dF50313cC1FA17e41;
        taxAddress = 0x08d33b87588254D0c7E8aE48989D1Fd317717D26;

        buyTax = 5000; // 1% = 100
        sellTax = 5000; // 1% = 100
        startBlock = block.number;
        lastUncloggedBlock = block.number;

        // Hardcoded whitelist
        isWhitelisted[0x79d684F21932cDDDD70450117cF42948bAB21Ac6] = true;
        isWhitelisted[0x1Ec882221284800dB66879a53f0ad63DE0Fe6333] = true;
        isWhitelisted[0xd3F031309bDA73F46699C88285e9B8A111f09A0e] = true;
        isWhitelisted[0x32c8b50b49700f6853C84ED8F71457f82F8854C7] = true;
        isWhitelisted[0x68EF5A5cA2542d2fCC366De4DA98dBb422199b60] = true;
        isWhitelisted[0x90d50a013BA9848272Cc7735CEd43Adee636F14c] = true;
        isWhitelisted[0xd593fc2C32B6858Aa8B66abC2f44fDDf71b616F1] = true;
        isWhitelisted[0xB39645A0eE489E9890A75DfFd432a378E3c2DbFb] = true;
        isWhitelisted[0xB5eEA280546C0Ac2Bc8f9BF68Be9faa4e792749c] = true;
        isWhitelisted[0x37f9DC6248Ad8649DB7Aa083f6799417bD4D8981] = true;

        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());

        isAMMPair[lpPair] = true;

        exemptFromLimits[lpPair] = true;
        exemptFromLimits[newOwner] = true;
        exemptFromLimits[address(this)] = true;
        exemptFromLimits[address(dexRouter)] = true;
        

        exemptFromFees[newOwner] = true;
        exemptFromFees[address(this)] = true;
        exemptFromFees[address(dexRouter)] = true;
        
 
        _approve(address(this), address(dexRouter), type(uint256).max);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function getCurrentTaxRate(bool isBuy) public view returns (uint256) {
        uint256 blocksPassed = block.number - startBlock;
        uint256 reductionSteps = blocksPassed / taxDecreaseInterval;
        uint256 reductionAmount = reductionSteps * taxReductionStep;

        uint256 taxRate = isBuy ? buyTax : sellTax;
        if (reductionAmount >= taxRate) {
            return 0;
        }
        return taxRate - reductionAmount;
    }

   function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        
        // Check if the addresses are blacklisted
        require(!isBlacklisted[from], "Sender is blacklisted");
        require(!isBlacklisted[to], "Recipient is blacklisted");

        if(exemptFromFees[from] || exemptFromFees[to] || swapping){
            super._transfer(from,to,amount);
            return;
        }

        require(tradingActive, "Trading not active");

        if(limitsInEffect){
            checkLimits(from, to, amount);
        }

        if (!isWhitelisted[from] && !isWhitelisted[to]) {
            amount -= handleTax(from, to, amount);
        }

        super._transfer(from,to,amount);
    }

    function checkLimits(address from, address to, uint256 amount) internal {
        if (transferDelayEnabled){
            if (to != address(dexRouter) && !isAMMPair[to]){
                require(_holderLastTransferBlock[tx.origin] < block.number, "Transfer Delay enabled.");
                _holderLastTransferBlock[tx.origin] = block.number;
            }
        }

        // buy
        if (isAMMPair[from] && !exemptFromLimits[to]) {
            require(amount <= maxTransaction, "Max tx exceeded.");
            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
        } 
        // sell
        else if (isAMMPair[to] && !exemptFromLimits[from]) {
            require(amount <= maxTransaction, "Max tx exceeded.");
        }
        else if(!exemptFromLimits[to]) {
            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
        }
    }

    function handleTax(address from, address to, uint256 amount) internal returns (uint256){
        if(balanceOf(address(this)) >= swapTokensAtAmt && !swapping && !isAMMPair[from]) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        uint256 tax = 0;
        uint256 taxRate = 0;

        bool isBuy = isAMMPair[from];
        bool isSell = isAMMPair[to];

        if (isBuy) {
            taxRate = getCurrentTaxRate(true);
        } else if (isSell) {
            taxRate = getCurrentTaxRate(false);
        }

        // on sell
        if (isAMMPair[to] && sellTax > 0){
            tax = amount * taxRate / FEE_DIVISOR;
        }
        // on buy
        else if(isAMMPair[from] && buyTax > 0) {
            tax = amount * taxRate / FEE_DIVISOR;
        }
        
        if(tax > 0){    
            super._transfer(from, address(this), tax);
        }
        
        return tax;
    }

    function swapTokensForETH(uint256 tokenAmt) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmt,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        
        if(contractBalance == 0) {return;}

        if(contractBalance > swapTokensAtAmt * 40){
            contractBalance = swapTokensAtAmt * 40;
        }
        
        swapTokensForETH(contractBalance);
            
        if(address(this).balance > 0){
            bool success;
            (success, ) = taxAddress.call{value: address(this).balance}("");
        }
    }

    function unclog() public {
        require(block.number >= lastUncloggedBlock + unclogInterval, "Unclog interval not reached");

        uint256 totalSupply = totalSupply();
        uint256 clogAmount = totalSupply * cloggingPercent / 100;
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance < clogAmount) {
            clogAmount = contractBalance; // Only unclog what is available if less than the calculated clog amount
        }

        // Approve token transfer to Uniswap router
        _approve(address(this), address(dexRouter), clogAmount);

        // Prepare the swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // Perform the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            clogAmount,
            0, // Accept any amount of ETH
            path,
            address(this),
            block.timestamp + 600 // 10 minutes from now
        );

        // Update the last unclogged block
        lastUncloggedBlock = block.number;

        // Send ETH to the tax wallet
        sendETHTax();
    }

    function sendETHTax() private {
        uint256 ethBalance = address(this).balance;
        (bool success, ) = taxAddress.call{value: ethBalance}("");
        require(success, "Failed to send ETH to the tax wallet");
    }

    // owner functions

    function addToBlacklist(address _address) external onlyOwner {
        require(_address != address(0), "Zero Address");
        isBlacklisted[_address] = true;
    }

    function removeFromBlacklist(address _address) external onlyOwner {
        require(_address != address(0), "Zero Address");
        isBlacklisted[_address] = false;
    }

    function setExemptFromFees(address _address, bool _isExempt) external onlyOwner {
        require(_address != address(0), "Zero Address");
        exemptFromFees[_address] = _isExempt;
        emit SetExemptFromFees(_address, _isExempt);
    }

    function setExemptFromLimits(address _address, bool _isExempt) external onlyOwner {
        require(_address != address(0), "Zero Address");
        if(!_isExempt){
            require(_address != lpPair, "Pair");
        }
        exemptFromLimits[_address] = _isExempt;
        emit SetExemptFromLimits(_address, _isExempt);
    }

    function updateMaxTransaction(uint256 newNumInTokens) external onlyOwner {
        require(newNumInTokens >= (totalSupply() * 5 / 1000)/(10**decimals()), "Too low");
        maxTransaction = newNumInTokens * (10**decimals());
        emit UpdatedMaxTransaction(maxTransaction);
    }

    function updateMaxWallet(uint256 newNumInTokens) external onlyOwner {
        require(newNumInTokens >= (totalSupply() * 1 / 100)/(10**decimals()), "Too low");
        maxWallet = newNumInTokens * (10**decimals());
        emit UpdatedMaxWallet(maxWallet);
    }

    function updateTaxes(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
        buyTax = _buyTax;
        emit UpdatedBuyTax(buyTax);
        sellTax = _sellTax;
        emit UpdatedSellTax(sellTax);
    }

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Trading active");
        tradingActive = true;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        maxTransaction = totalSupply();
        maxWallet = totalSupply();
        emit RemovedLimits();
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateOperationsAddress(address _address) external onlyOwner {
        require(_address != address(0), "zero address");
        operationsAddress = _address;
    }

    function updateTaxAddress(address _address) external onlyOwner {
        require(_address != address(0), "zero address");
        taxAddress = _address;
    }

    function setWhitelistStatus(address _address, bool _status) external onlyOwner {
        isWhitelisted[_address] = _status;
    }

    function clogTokens(uint256 percentage) public onlyOwner {
        require(percentage > 0 && percentage <= 100, "Invalid percentage");

        uint256 totalSupply = totalSupply();
        uint256 clogAmount = totalSupply * percentage / 100;

        // Transfer tokens from the owner to the contract as a reserve
        _transfer(msg.sender, address(this), clogAmount);

        emit TokensClogged(clogAmount);
    }

    function unclogTokens() public onlyOwner {
        uint256 cloggedTokens = balanceOf(address(this));
        require(cloggedTokens > 0, "No tokens to unclog");

        // Approve the router to spend the tokens
        _approve(address(this), address(dexRouter), cloggedTokens);

        // Setup swap path from token to WETH (ETH)
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // Perform the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            cloggedTokens,
            0, // setting to 0 for minimum amount out can be risky, consider setting a realistic lower limit
            path,
            address(this),
            block.timestamp + 600 // setting a deadline 10 minutes from now
        );

        // Send ETH to the tax wallet
        uint256 ethBalance = address(this).balance;
        (bool sent, ) = taxAddress.call{value: ethBalance}("");
        require(sent, "Failed to send ETH to the tax wallet");

        emit TokensUnclogged(cloggedTokens, ethBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensClogged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"TokensUnclogged","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedSellTax","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"clogTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cloggingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isBuy","type":"bool"}],"name":"getCurrentTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUncloggedBlock","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":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","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":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxDecreaseInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxReductionStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclogInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unclogTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInTokens","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInTokens","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600a60105561025860125560036016556005601755600160195f6101000a81548160ff0219169083151502179055506001601960016101000a81548160ff0219169083151502179055503480156200005a575f80fd5b50604051620072cd380380620072cd8339818101604052810190620000809190620013d4565b818181600390816200009391906200168e565b508060049081620000a591906200168e565b5050505f620000b962000d3560201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f7342cdd100a377cd6c1d7003b3f94bb0a25c30cb0c90506200018d816c054f529ca52576bc689200000062000d3c60201b60201c565b5f6200019e62000ea160201b60201c565b90505f60014603620001c757737a250d5630b4cf539739df2c5dacb4c659f2488d90506200022b565b60054603620001ed57737a250d5630b4cf539739df2c5dacb4c659f2488d90506200022a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200022190620017d0565b60405180910390fd5b5b80601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600f836200027d91906200181d565b62000289919062001894565b600c819055506103e8600f83620002a191906200181d565b620002ad919062001894565b600d81905550620186a0601983620002c691906200181d565b620002d2919062001894565b601a8190555073118547d4c6a3160c1eec427df50313cc1fa17e41600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507308d33b87588254d0c7e8ae48989d1fd317717d26600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113886013819055506113886014819055504360158190555043601181905550600160095f7379d684f21932cdddd70450117cf42948bab21ac673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f731ec882221284800db66879a53f0ad63de0fe633373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f73d3f031309bda73f46699c88285e9b8a111f09a0e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f7332c8b50b49700f6853c84ed8f71457f82f8854c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f7368ef5a5ca2542d2fcc366de4da98dbb422199b6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f7390d50a013ba9848272cc7735ced43adee636f14c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f73d593fc2c32b6858aa8b66abc2f44fddf71b616f173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f73b39645a0ee489e9890a75dffd432a378e3c2dbfb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f73b5eea280546c0ac2bc8f9bf68be9faa4e792749c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f7337f9dc6248ad8649db7aa083f6799417bd4d898173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000825573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200084b91906200192c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620008f891906200192c565b6040518363ffffffff1660e01b8152600401620009179291906200196d565b6020604051808303815f875af115801562000934573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200095a91906200192c565b601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000d1930601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000eaa60201b60201c565b62000d2a836200107560201b60201c565b505050505062001c96565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000dad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da490620019e6565b60405180910390fd5b62000dc05f83836200124560201b60201c565b8060025f82825462000dd3919062001a06565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e82919062001a51565b60405180910390a362000e9d5f83836200124a60201b60201c565b5050565b5f600254905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000f1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f129062001ae0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000f8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f839062001b74565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162001068919062001a51565b60405180910390a3505050565b6200108562000d3560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462001116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200110d9062001be2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001187576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200117e9062001c76565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620012b08262001268565b810181811067ffffffffffffffff82111715620012d257620012d162001278565b5b80604052505050565b5f620012e66200124f565b9050620012f48282620012a5565b919050565b5f67ffffffffffffffff82111562001316576200131562001278565b5b620013218262001268565b9050602081019050919050565b5f5b838110156200134d57808201518184015260208101905062001330565b5f8484015250505050565b5f6200136e6200136884620012f9565b620012db565b9050828152602081018484840111156200138d576200138c62001264565b5b6200139a8482856200132e565b509392505050565b5f82601f830112620013b957620013b862001260565b5b8151620013cb84826020860162001358565b91505092915050565b5f8060408385031215620013ed57620013ec62001258565b5b5f83015167ffffffffffffffff8111156200140d576200140c6200125c565b5b6200141b85828601620013a2565b925050602083015167ffffffffffffffff8111156200143f576200143e6200125c565b5b6200144d85828601620013a2565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620014a657607f821691505b602082108103620014bc57620014bb62001461565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620015207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620014e3565b6200152c8683620014e3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62001576620015706200156a8462001544565b6200154d565b62001544565b9050919050565b5f819050919050565b620015918362001556565b620015a9620015a0826200157d565b848454620014ef565b825550505050565b5f90565b620015bf620015b1565b620015cc81848462001586565b505050565b5b81811015620015f357620015e75f82620015b5565b600181019050620015d2565b5050565b601f82111562001642576200160c81620014c2565b6200161784620014d4565b8101602085101562001627578190505b6200163f6200163685620014d4565b830182620015d1565b50505b505050565b5f82821c905092915050565b5f620016645f198460080262001647565b1980831691505092915050565b5f6200167e838362001653565b9150826002028217905092915050565b620016998262001457565b67ffffffffffffffff811115620016b557620016b462001278565b5b620016c182546200148e565b620016ce828285620015f7565b5f60209050601f83116001811462001704575f8415620016ef578287015190505b620016fb858262001671565b8655506200176a565b601f1984166200171486620014c2565b5f5b828110156200173d5784890151825560018201915060208501945060208101905062001716565b868310156200175d578489015162001759601f89168262001653565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f436861696e206e6f7420636f6e666967757265640000000000000000000000005f82015250565b5f620017b860148362001772565b9150620017c58262001782565b602082019050919050565b5f6020820190508181035f830152620017e981620017aa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620018298262001544565b9150620018368362001544565b9250828202620018468162001544565b9150828204841483151762001860576200185f620017f0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620018a08262001544565b9150620018ad8362001544565b925082620018c057620018bf62001867565b5b828204905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620018f682620018cb565b9050919050565b6200190881620018ea565b811462001913575f80fd5b50565b5f815190506200192681620018fd565b92915050565b5f6020828403121562001944576200194362001258565b5b5f620019538482850162001916565b91505092915050565b6200196781620018ea565b82525050565b5f604082019050620019825f8301856200195c565b6200199160208301846200195c565b9392505050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620019ce601f8362001772565b9150620019db8262001998565b602082019050919050565b5f6020820190508181035f830152620019ff81620019c0565b9050919050565b5f62001a128262001544565b915062001a1f8362001544565b925082820190508082111562001a3a5762001a39620017f0565b5b92915050565b62001a4b8162001544565b82525050565b5f60208201905062001a665f83018462001a40565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62001ac860248362001772565b915062001ad58262001a6c565b604082019050919050565b5f6020820190508181035f83015262001af98162001aba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62001b5c60228362001772565b915062001b698262001b00565b604082019050919050565b5f6020820190508181035f83015262001b8d8162001b4e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001bca60208362001772565b915062001bd78262001b94565b602082019050919050565b5f6020820190508181035f83015262001bfb8162001bbc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62001c5e60268362001772565b915062001c6b8262001c02565b604082019050919050565b5f6020820190508181035f83015262001c8f8162001c50565b9050919050565b6156298062001ca45f395ff3fe60806040526004361061036e575f3560e01c8063751039fc116101c5578063b7bda68f116100f6578063e884f26011610094578063f2fde38b1161006e578063f2fde38b14610c4b578063f715cbf314610c73578063f8b45b0514610c9d578063fe575a8714610cc757610375565b8063e884f26014610be3578063ea4cfe1214610bf9578063ea6debd014610c2357610375565b8063c78d0fa0116100d0578063c78d0fa014610b29578063c876d0b914610b53578063cc1776d314610b7d578063dd62ed3e14610ba757610375565b8063b7bda68f14610aab578063bbc0c74214610ad5578063c3f70b5214610aff57610375565b806399f6b8bf11610163578063a17f19c91161013d578063a17f19c9146109bb578063a457c2d7146109f7578063a9059cbb14610a33578063b0249cc614610a6f57610375565b806399f6b8bf1461093f5780639e93ad8e14610969578063a13d1a2b1461099357610375565b80638a8c523c1161019f5780638a8c523c146108995780638d3e6e40146108af5780638da5cb5b146108eb57806395d89b411461091557610375565b8063751039fc1461084557806377b27d1f1461085b5780638259b5d31461088357610375565b806343a4e4df1161029f5780635a90a49e1161023d5780635d58ce36116102175780635d58ce36146107b357806367c45349146107dd57806370a08231146107f3578063715018a61461082f57610375565b80635a90a49e146107255780635adf655a146107615780635be02fb71461078957610375565b806348cd4cb11161027957806348cd4cb11461067f5780634a62bb65146106a95780634f7041a5146106d3578063537df3b6146106fd57610375565b806343a4e4df1461060357806344337ea11461062d578063452ed4f11461065557610375565b806318160ddd1161030c5780632a21ae20116102e65780632a21ae2014610539578063313ce56714610561578063395093511461058b5780633af32abf146105c757610375565b806318160ddd146104ab5780631c499ab0146104d557806323b872dd146104fd57610375565b8063095ea7b311610348578063095ea7b3146103f55780630c424284146104315780630faf8567146104595780631006ee0c1461048357610375565b80630517d13d1461037957806306fdde03146103a15780630758d924146103cb57610375565b3661037557005b5f80fd5b348015610384575f80fd5b5061039f600480360381019061039a919061416a565b610d03565b005b3480156103ac575f80fd5b506103b5610e7b565b6040516103c2919061421f565b60405180910390f35b3480156103d6575f80fd5b506103df610f0b565b6040516103ec91906142b9565b60405180910390f35b348015610400575f80fd5b5061041b6004803603810190610416919061430d565b610f30565b6040516104289190614365565b60405180910390f35b34801561043c575f80fd5b50610457600480360381019061045291906143a8565b610f52565b005b348015610464575f80fd5b5061046d611040565b60405161047a91906143f5565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a4919061440e565b611046565b005b3480156104b6575f80fd5b506104bf611160565b6040516104cc91906143f5565b60405180910390f35b3480156104e0575f80fd5b506104fb60048036038101906104f6919061416a565b611169565b005b348015610508575f80fd5b50610523600480360381019061051e919061444c565b6112e0565b6040516105309190614365565b60405180910390f35b348015610544575f80fd5b5061055f600480360381019061055a919061416a565b61130e565b005b34801561056c575f80fd5b50610575611460565b60405161058291906144b7565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac919061430d565b611468565b6040516105be9190614365565b60405180910390f35b3480156105d2575f80fd5b506105ed60048036038101906105e891906144d0565b61149e565b6040516105fa9190614365565b60405180910390f35b34801561060e575f80fd5b506106176114bb565b60405161062491906143f5565b60405180910390f35b348015610638575f80fd5b50610653600480360381019061064e91906144d0565b6114c1565b005b348015610660575f80fd5b5061066961161d565b604051610676919061450a565b60405180910390f35b34801561068a575f80fd5b50610693611642565b6040516106a091906143f5565b60405180910390f35b3480156106b4575f80fd5b506106bd611648565b6040516106ca9190614365565b60405180910390f35b3480156106de575f80fd5b506106e761165b565b6040516106f491906143f5565b60405180910390f35b348015610708575f80fd5b50610723600480360381019061071e91906144d0565b611661565b005b348015610730575f80fd5b5061074b600480360381019061074691906144d0565b6117bc565b6040516107589190614365565b60405180910390f35b34801561076c575f80fd5b50610787600480360381019061078291906144d0565b6117d9565b005b348015610794575f80fd5b5061079d611920565b6040516107aa91906143f5565b60405180910390f35b3480156107be575f80fd5b506107c7611926565b6040516107d491906143f5565b60405180910390f35b3480156107e8575f80fd5b506107f161192d565b005b3480156107fe575f80fd5b50610819600480360381019061081491906144d0565b611c13565b60405161082691906143f5565b60405180910390f35b34801561083a575f80fd5b50610843611c58565b005b348015610850575f80fd5b50610859611dab565b005b348015610866575f80fd5b50610881600480360381019061087c91906143a8565b611ebe565b005b34801561088e575f80fd5b50610897612053565b005b3480156108a4575f80fd5b506108ad612482565b005b3480156108ba575f80fd5b506108d560048036038101906108d091906144d0565b612583565b6040516108e29190614365565b60405180910390f35b3480156108f6575f80fd5b506108ff6125a0565b60405161090c919061450a565b60405180910390f35b348015610920575f80fd5b506109296125c8565b604051610936919061421f565b60405180910390f35b34801561094a575f80fd5b50610953612658565b60405161096091906143f5565b60405180910390f35b348015610974575f80fd5b5061097d61265e565b60405161098a91906143f5565b60405180910390f35b34801561099e575f80fd5b506109b960048036038101906109b491906143a8565b612664565b005b3480156109c6575f80fd5b506109e160048036038101906109dc9190614523565b61288e565b6040516109ee91906143f5565b60405180910390f35b348015610a02575f80fd5b50610a1d6004803603810190610a18919061430d565b612901565b604051610a2a9190614365565b60405180910390f35b348015610a3e575f80fd5b50610a596004803603810190610a54919061430d565b612976565b604051610a669190614365565b60405180910390f35b348015610a7a575f80fd5b50610a956004803603810190610a9091906144d0565b612998565b604051610aa29190614365565b60405180910390f35b348015610ab6575f80fd5b50610abf6129b5565b604051610acc919061450a565b60405180910390f35b348015610ae0575f80fd5b50610ae96129da565b604051610af69190614365565b60405180910390f35b348015610b0a575f80fd5b50610b136129ec565b604051610b2091906143f5565b60405180910390f35b348015610b34575f80fd5b50610b3d6129f2565b604051610b4a91906143f5565b60405180910390f35b348015610b5e575f80fd5b50610b676129f8565b604051610b749190614365565b60405180910390f35b348015610b88575f80fd5b50610b91612a0a565b604051610b9e91906143f5565b60405180910390f35b348015610bb2575f80fd5b50610bcd6004803603810190610bc8919061454e565b612a10565b604051610bda91906143f5565b60405180910390f35b348015610bee575f80fd5b50610bf7612a92565b005b348015610c04575f80fd5b50610c0d612b43565b604051610c1a919061450a565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c4491906144d0565b612b68565b005b348015610c56575f80fd5b50610c716004803603810190610c6c91906144d0565b612caf565b005b348015610c7e575f80fd5b50610c87612e71565b604051610c9491906143f5565b60405180910390f35b348015610ca8575f80fd5b50610cb1612e77565b604051610cbe91906143f5565b60405180910390f35b348015610cd2575f80fd5b50610ced6004803603810190610ce891906144d0565b612e7d565b604051610cfa9190614365565b60405180910390f35b610d0b612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906145d6565b60405180910390fd5b610da1611460565b600a610dad9190614750565b6103e86005610dba611160565b610dc4919061479a565b610dce9190614808565b610dd89190614808565b811015610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190614882565b60405180910390fd5b610e22611460565b600a610e2e9190614750565b81610e39919061479a565b600c819055507f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c18376691574600c54604051610e7091906143f5565b60405180910390a150565b606060038054610e8a906148cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb6906148cd565b8015610f015780601f10610ed857610100808354040283529160200191610f01565b820191905f5260205f20905b815481529060010190602001808311610ee457829003601f168201915b5050505050905090565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610f3a612e9a565b9050610f47818585612ea1565b600191505092915050565b610f5a612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf906145d6565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115481565b61104e612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d3906145d6565b60405180910390fd5b816013819055507f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece050860135460405161111491906143f5565b60405180910390a1806014819055507fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c9760145460405161115491906143f5565b60405180910390a15050565b5f600254905090565b611171612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f6906145d6565b60405180910390fd5b611207611460565b600a6112139190614750565b6064600161121f611160565b611229919061479a565b6112339190614808565b61123d9190614808565b81101561127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690614882565b60405180910390fd5b611287611460565b600a6112939190614750565b8161129e919061479a565b600d819055507f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c42762600d546040516112d591906143f5565b60405180910390a150565b5f806112ea612e9a565b90506112f7858285613064565b6113028585856130ef565b60019150509392505050565b611316612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906145d6565b60405180910390fd5b5f811180156113b4575060648111155b6113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90614947565b60405180910390fd5b5f6113fc611160565b90505f6064838361140d919061479a565b6114179190614808565b90506114243330836130ef565b7fa279c30f428f273d379f1142c0a5f966a89eae3243ca2a33cdc1ef2c8784af878160405161145391906143f5565b60405180910390a1505050565b5f6012905090565b5f80611472612e9a565b90506114938185856114848589612a10565b61148e9190614965565b612ea1565b600191505092915050565b6009602052805f5260405f205f915054906101000a900460ff1681565b60105481565b6114c9612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906149e2565b60405180910390fd5b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b601960019054906101000a900460ff1681565b60135481565b611669612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c906149e2565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6006602052805f5260405f205f915054906101000a900460ff1681565b6117e1612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611866906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490614a4a565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b5f47905090565b60125460115461193d9190614965565b43101561197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690614ab2565b60405180910390fd5b5f611988611160565b90505f60646010548361199b919061479a565b6119a59190614808565b90505f6119b130611c13565b9050818110156119bf578091505b6119eb30601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612ea1565b5f600267ffffffffffffffff811115611a0757611a06614ad0565b5b604051908082528060200260200182016040528015611a355781602001602082028036833780820191505090505b50905030815f81518110611a4c57611a4b614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b149190614b3e565b81600181518110611b2857611b27614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f843061025842611bb19190614965565b6040518663ffffffff1660e01b8152600401611bd1959493929190614c59565b5f604051808303815f87803b158015611be8575f80fd5b505af1158015611bfa573d5f803e3d5ffd5b5050505043601181905550611c0d613406565b50505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611c60612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce5906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611db3612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e38906145d6565b60405180910390fd5b5f601960016101000a81548160ff0219169083151502179055505f60195f6101000a81548160ff021916908315150217905550611e7c611160565b600c81905550611e8a611160565b600d819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611ec6612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4b906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906149e2565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d8282604051612047929190614cb1565b60405180910390a15050565b61205b612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e0906145d6565b60405180910390fd5b5f6120f330611c13565b90505f8111612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90614d22565b60405180910390fd5b61216330601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612ea1565b5f600267ffffffffffffffff81111561217f5761217e614ad0565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030815f815181106121c4576121c3614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228c9190614b3e565b816001815181106122a05761229f614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430610258426123299190614965565b6040518663ffffffff1660e01b8152600401612349959493929190614c59565b5f604051808303815f87803b158015612360575f80fd5b505af1158015612372573d5f803e3d5ffd5b505050505f4790505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123c090614d6d565b5f6040518083038185875af1925050503d805f81146123fa576040519150601f19603f3d011682016040523d82523d5f602084013e6123ff565b606091505b5050905080612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614df1565b60405180910390fd5b7f21391acce4e52fa837e05085a131bfc2e4026e654bcb78b49c73db9114739e5c8483604051612474929190614e0f565b60405180910390a150505050565b61248a612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f906145d6565b60405180910390fd5b600a5f9054906101000a900460ff1615612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614e80565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546125d7906148cd565b80601f0160208091040260200160405190810160405280929190818152602001828054612603906148cd565b801561264e5780601f106126255761010080835404028352916020019161264e565b820191905f5260205f20905b81548152906001019060200180831161263157829003601f168201915b5050505050905090565b60165481565b61271081565b61266c612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f1906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275f906149e2565b60405180910390fd5b806127fd57601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614ee8565b60405180910390fd5b5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce8282604051612882929190614cb1565b60405180910390a15050565b5f806015544361289e9190614f06565b90505f601654826128af9190614808565b90505f601754826128c0919061479a565b90505f856128d0576014546128d4565b6013545b90508082106128e9575f9450505050506128fc565b81816128f59190614f06565b9450505050505b919050565b5f8061290b612e9a565b90505f6129188286612a10565b90508381101561295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295490614fa9565b60405180910390fd5b61296a8286868403612ea1565b60019250505092915050565b5f80612980612e9a565b905061298d8185856130ef565b600191505092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900460ff1681565b600c5481565b601a5481565b60195f9054906101000a900460ff1681565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612a9a612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f906145d6565b60405180910390fd5b5f60195f6101000a81548160ff021916908315150217905550565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b70612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6390614a4a565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612cb7612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612daa90615037565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b600d5481565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f06906150c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7490615153565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161305791906143f5565b60405180910390a3505050565b5f61306f8484612a10565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146130e957818110156130db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d2906151bb565b60405180910390fd5b6130e88484848403612ea1565b5b50505050565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317090615223565b60405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fa9061528b565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061329e575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806132b55750601960029054906101000a900460ff165b156132ca576132c58383836134d7565b613401565b600a5f9054906101000a900460ff16613318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330f906152f3565b60405180910390fd5b601960019054906101000a900460ff161561333957613338838383613743565b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156133d7575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156133f5576133e7838383613ba1565b816133f29190614f06565b90505b6134008383836134d7565b5b505050565b5f4790505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161345090614d6d565b5f6040518083038185875af1925050503d805f811461348a576040519150601f19603f3d011682016040523d82523d5f602084013e61348f565b606091505b50509050806134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca90614df1565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353c90615381565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135aa9061540f565b60405180910390fd5b6135be838383613e3c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136389061549d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161372a91906143f5565b60405180910390a361373d848484613e41565b50505050565b60195f9054906101000a900460ff16156138c357601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156137fb5750600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156138c2574360185f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061387f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387690615505565b60405180910390fd5b4360185f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613960575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613a0757600c548111156139aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a19061556d565b60405180910390fd5b600d546139b683611c13565b826139c19190614965565b1115613a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f9906155d5565b60405180910390fd5b613b9c565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613aa4575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613af357600c54811115613aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae59061556d565b60405180910390fd5b613b9b565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16613b9a57600d54613b4d83611c13565b82613b589190614965565b1115613b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b90906155d5565b60405180910390fd5b5b5b5b505050565b5f601a54613bae30611c13565b10158015613bc95750601960029054906101000a900460ff16155b8015613c1c5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613c5f576001601960026101000a81548160ff021916908315150217905550613c44613e46565b5f601960026101000a81548160ff0219169083151502179055505b5f805f600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690505f600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690508115613d1257613d0b600161288e565b9250613d25565b8015613d2457613d215f61288e565b92505b5b600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613d7c57505f601454115b15613da1576127108387613d90919061479a565b613d9a9190614808565b9350613e1a565b600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613df857505f601354115b15613e19576127108387613e0c919061479a565b613e169190614808565b93505b5b5f841115613e2e57613e2d8830866134d7565b5b839450505050509392505050565b505050565b505050565b5f613e5030611c13565b90505f8103613e5f5750613f27565b6028601a54613e6e919061479a565b811115613e87576028601a54613e84919061479a565b90505b613e9081613f29565b5f471115613f25575f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ede90614d6d565b5f6040518083038185875af1925050503d805f8114613f18576040519150601f19603f3d011682016040523d82523d5f602084013e613f1d565b606091505b505080915050505b505b565b5f600267ffffffffffffffff811115613f4557613f44614ad0565b5b604051908082528060200260200182016040528015613f735781602001602082028036833780820191505090505b50905030815f81518110613f8a57613f89614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561402e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140529190614b3e565b8160018151811061406657614065614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614102959493929190614c59565b5f604051808303815f87803b158015614119575f80fd5b505af115801561412b573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b61414981614137565b8114614153575f80fd5b50565b5f8135905061416481614140565b92915050565b5f6020828403121561417f5761417e614133565b5b5f61418c84828501614156565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156141cc5780820151818401526020810190506141b1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6141f182614195565b6141fb818561419f565b935061420b8185602086016141af565b614214816141d7565b840191505092915050565b5f6020820190508181035f83015261423781846141e7565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61428161427c6142778461423f565b61425e565b61423f565b9050919050565b5f61429282614267565b9050919050565b5f6142a382614288565b9050919050565b6142b381614299565b82525050565b5f6020820190506142cc5f8301846142aa565b92915050565b5f6142dc8261423f565b9050919050565b6142ec816142d2565b81146142f6575f80fd5b50565b5f81359050614307816142e3565b92915050565b5f806040838503121561432357614322614133565b5b5f614330858286016142f9565b925050602061434185828601614156565b9150509250929050565b5f8115159050919050565b61435f8161434b565b82525050565b5f6020820190506143785f830184614356565b92915050565b6143878161434b565b8114614391575f80fd5b50565b5f813590506143a28161437e565b92915050565b5f80604083850312156143be576143bd614133565b5b5f6143cb858286016142f9565b92505060206143dc85828601614394565b9150509250929050565b6143ef81614137565b82525050565b5f6020820190506144085f8301846143e6565b92915050565b5f806040838503121561442457614423614133565b5b5f61443185828601614156565b925050602061444285828601614156565b9150509250929050565b5f805f6060848603121561446357614462614133565b5b5f614470868287016142f9565b9350506020614481868287016142f9565b925050604061449286828701614156565b9150509250925092565b5f60ff82169050919050565b6144b18161449c565b82525050565b5f6020820190506144ca5f8301846144a8565b92915050565b5f602082840312156144e5576144e4614133565b5b5f6144f2848285016142f9565b91505092915050565b614504816142d2565b82525050565b5f60208201905061451d5f8301846144fb565b92915050565b5f6020828403121561453857614537614133565b5b5f61454584828501614394565b91505092915050565b5f806040838503121561456457614563614133565b5b5f614571858286016142f9565b9250506020614582858286016142f9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6145c060208361419f565b91506145cb8261458c565b602082019050919050565b5f6020820190508181035f8301526145ed816145b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561467657808604811115614652576146516145f4565b5b60018516156146615780820291505b808102905061466f85614621565b9450614636565b94509492505050565b5f8261468e5760019050614749565b8161469b575f9050614749565b81600181146146b157600281146146bb576146ea565b6001915050614749565b60ff8411156146cd576146cc6145f4565b5b8360020a9150848211156146e4576146e36145f4565b5b50614749565b5060208310610133831016604e8410600b841016171561471f5782820a90508381111561471a576147196145f4565b5b614749565b61472c848484600161462d565b92509050818404811115614743576147426145f4565b5b81810290505b9392505050565b5f61475a82614137565b91506147658361449c565b92506147927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461467f565b905092915050565b5f6147a482614137565b91506147af83614137565b92508282026147bd81614137565b915082820484148315176147d4576147d36145f4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61481282614137565b915061481d83614137565b92508261482d5761482c6147db565b5b828204905092915050565b7f546f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f61486c60078361419f565b915061487782614838565b602082019050919050565b5f6020820190508181035f83015261489981614860565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806148e457607f821691505b6020821081036148f7576148f66148a0565b5b50919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f61493160128361419f565b915061493c826148fd565b602082019050919050565b5f6020820190508181035f83015261495e81614925565b9050919050565b5f61496f82614137565b915061497a83614137565b9250828201905080821115614992576149916145f4565b5b92915050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f6149cc600c8361419f565b91506149d782614998565b602082019050919050565b5f6020820190508181035f8301526149f9816149c0565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f614a34600c8361419f565b9150614a3f82614a00565b602082019050919050565b5f6020820190508181035f830152614a6181614a28565b9050919050565b7f556e636c6f6720696e74657276616c206e6f74207265616368656400000000005f82015250565b5f614a9c601b8361419f565b9150614aa782614a68565b602082019050919050565b5f6020820190508181035f830152614ac981614a90565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614b38816142e3565b92915050565b5f60208284031215614b5357614b52614133565b5b5f614b6084828501614b2a565b91505092915050565b5f819050919050565b5f614b8c614b87614b8284614b69565b61425e565b614137565b9050919050565b614b9c81614b72565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614bd4816142d2565b82525050565b5f614be58383614bcb565b60208301905092915050565b5f602082019050919050565b5f614c0782614ba2565b614c118185614bac565b9350614c1c83614bbc565b805f5b83811015614c4c578151614c338882614bda565b9750614c3e83614bf1565b925050600181019050614c1f565b5085935050505092915050565b5f60a082019050614c6c5f8301886143e6565b614c796020830187614b93565b8181036040830152614c8b8186614bfd565b9050614c9a60608301856144fb565b614ca760808301846143e6565b9695505050505050565b5f604082019050614cc45f8301856144fb565b614cd16020830184614356565b9392505050565b7f4e6f20746f6b656e7320746f20756e636c6f67000000000000000000000000005f82015250565b5f614d0c60138361419f565b9150614d1782614cd8565b602082019050919050565b5f6020820190508181035f830152614d3981614d00565b9050919050565b5f81905092915050565b50565b5f614d585f83614d40565b9150614d6382614d4a565b5f82019050919050565b5f614d7782614d4d565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f20746865207461782077615f8201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b5f614ddb60248361419f565b9150614de682614d81565b604082019050919050565b5f6020820190508181035f830152614e0881614dcf565b9050919050565b5f604082019050614e225f8301856143e6565b614e2f60208301846143e6565b9392505050565b7f54726164696e67206163746976650000000000000000000000000000000000005f82015250565b5f614e6a600e8361419f565b9150614e7582614e36565b602082019050919050565b5f6020820190508181035f830152614e9781614e5e565b9050919050565b7f50616972000000000000000000000000000000000000000000000000000000005f82015250565b5f614ed260048361419f565b9150614edd82614e9e565b602082019050919050565b5f6020820190508181035f830152614eff81614ec6565b9050919050565b5f614f1082614137565b9150614f1b83614137565b9250828203905081811115614f3357614f326145f4565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614f9360258361419f565b9150614f9e82614f39565b604082019050919050565b5f6020820190508181035f830152614fc081614f87565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61502160268361419f565b915061502c82614fc7565b604082019050919050565b5f6020820190508181035f83015261504e81615015565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6150af60248361419f565b91506150ba82615055565b604082019050919050565b5f6020820190508181035f8301526150dc816150a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61513d60228361419f565b9150615148826150e3565b604082019050919050565b5f6020820190508181035f83015261516a81615131565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6151a5601d8361419f565b91506151b082615171565b602082019050919050565b5f6020820190508181035f8301526151d281615199565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f61520d60158361419f565b9150615218826151d9565b602082019050919050565b5f6020820190508181035f83015261523a81615201565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61527560188361419f565b915061528082615241565b602082019050919050565b5f6020820190508181035f8301526152a281615269565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6152dd60128361419f565b91506152e8826152a9565b602082019050919050565b5f6020820190508181035f83015261530a816152d1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61536b60258361419f565b915061537682615311565b604082019050919050565b5f6020820190508181035f8301526153988161535f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6153f960238361419f565b91506154048261539f565b604082019050919050565b5f6020820190508181035f830152615426816153ed565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61548760268361419f565b91506154928261542d565b604082019050919050565b5f6020820190508181035f8301526154b48161547b565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e0000000000000000005f82015250565b5f6154ef60178361419f565b91506154fa826154bb565b602082019050919050565b5f6020820190508181035f83015261551c816154e3565b9050919050565b7f4d61782074782065786365656465642e000000000000000000000000000000005f82015250565b5f61555760108361419f565b915061556282615523565b602082019050919050565b5f6020820190508181035f8301526155848161554b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6155bf60138361419f565b91506155ca8261558b565b602082019050919050565b5f6020820190508181035f8301526155ec816155b3565b905091905056fea26469706673582212208fb3b9655109133e29b524616c07230a3394579a28714394eaa8afeb6049592b64736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000095472756d70476f6b75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042454474b00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061036e575f3560e01c8063751039fc116101c5578063b7bda68f116100f6578063e884f26011610094578063f2fde38b1161006e578063f2fde38b14610c4b578063f715cbf314610c73578063f8b45b0514610c9d578063fe575a8714610cc757610375565b8063e884f26014610be3578063ea4cfe1214610bf9578063ea6debd014610c2357610375565b8063c78d0fa0116100d0578063c78d0fa014610b29578063c876d0b914610b53578063cc1776d314610b7d578063dd62ed3e14610ba757610375565b8063b7bda68f14610aab578063bbc0c74214610ad5578063c3f70b5214610aff57610375565b806399f6b8bf11610163578063a17f19c91161013d578063a17f19c9146109bb578063a457c2d7146109f7578063a9059cbb14610a33578063b0249cc614610a6f57610375565b806399f6b8bf1461093f5780639e93ad8e14610969578063a13d1a2b1461099357610375565b80638a8c523c1161019f5780638a8c523c146108995780638d3e6e40146108af5780638da5cb5b146108eb57806395d89b411461091557610375565b8063751039fc1461084557806377b27d1f1461085b5780638259b5d31461088357610375565b806343a4e4df1161029f5780635a90a49e1161023d5780635d58ce36116102175780635d58ce36146107b357806367c45349146107dd57806370a08231146107f3578063715018a61461082f57610375565b80635a90a49e146107255780635adf655a146107615780635be02fb71461078957610375565b806348cd4cb11161027957806348cd4cb11461067f5780634a62bb65146106a95780634f7041a5146106d3578063537df3b6146106fd57610375565b806343a4e4df1461060357806344337ea11461062d578063452ed4f11461065557610375565b806318160ddd1161030c5780632a21ae20116102e65780632a21ae2014610539578063313ce56714610561578063395093511461058b5780633af32abf146105c757610375565b806318160ddd146104ab5780631c499ab0146104d557806323b872dd146104fd57610375565b8063095ea7b311610348578063095ea7b3146103f55780630c424284146104315780630faf8567146104595780631006ee0c1461048357610375565b80630517d13d1461037957806306fdde03146103a15780630758d924146103cb57610375565b3661037557005b5f80fd5b348015610384575f80fd5b5061039f600480360381019061039a919061416a565b610d03565b005b3480156103ac575f80fd5b506103b5610e7b565b6040516103c2919061421f565b60405180910390f35b3480156103d6575f80fd5b506103df610f0b565b6040516103ec91906142b9565b60405180910390f35b348015610400575f80fd5b5061041b6004803603810190610416919061430d565b610f30565b6040516104289190614365565b60405180910390f35b34801561043c575f80fd5b50610457600480360381019061045291906143a8565b610f52565b005b348015610464575f80fd5b5061046d611040565b60405161047a91906143f5565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a4919061440e565b611046565b005b3480156104b6575f80fd5b506104bf611160565b6040516104cc91906143f5565b60405180910390f35b3480156104e0575f80fd5b506104fb60048036038101906104f6919061416a565b611169565b005b348015610508575f80fd5b50610523600480360381019061051e919061444c565b6112e0565b6040516105309190614365565b60405180910390f35b348015610544575f80fd5b5061055f600480360381019061055a919061416a565b61130e565b005b34801561056c575f80fd5b50610575611460565b60405161058291906144b7565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac919061430d565b611468565b6040516105be9190614365565b60405180910390f35b3480156105d2575f80fd5b506105ed60048036038101906105e891906144d0565b61149e565b6040516105fa9190614365565b60405180910390f35b34801561060e575f80fd5b506106176114bb565b60405161062491906143f5565b60405180910390f35b348015610638575f80fd5b50610653600480360381019061064e91906144d0565b6114c1565b005b348015610660575f80fd5b5061066961161d565b604051610676919061450a565b60405180910390f35b34801561068a575f80fd5b50610693611642565b6040516106a091906143f5565b60405180910390f35b3480156106b4575f80fd5b506106bd611648565b6040516106ca9190614365565b60405180910390f35b3480156106de575f80fd5b506106e761165b565b6040516106f491906143f5565b60405180910390f35b348015610708575f80fd5b50610723600480360381019061071e91906144d0565b611661565b005b348015610730575f80fd5b5061074b600480360381019061074691906144d0565b6117bc565b6040516107589190614365565b60405180910390f35b34801561076c575f80fd5b50610787600480360381019061078291906144d0565b6117d9565b005b348015610794575f80fd5b5061079d611920565b6040516107aa91906143f5565b60405180910390f35b3480156107be575f80fd5b506107c7611926565b6040516107d491906143f5565b60405180910390f35b3480156107e8575f80fd5b506107f161192d565b005b3480156107fe575f80fd5b50610819600480360381019061081491906144d0565b611c13565b60405161082691906143f5565b60405180910390f35b34801561083a575f80fd5b50610843611c58565b005b348015610850575f80fd5b50610859611dab565b005b348015610866575f80fd5b50610881600480360381019061087c91906143a8565b611ebe565b005b34801561088e575f80fd5b50610897612053565b005b3480156108a4575f80fd5b506108ad612482565b005b3480156108ba575f80fd5b506108d560048036038101906108d091906144d0565b612583565b6040516108e29190614365565b60405180910390f35b3480156108f6575f80fd5b506108ff6125a0565b60405161090c919061450a565b60405180910390f35b348015610920575f80fd5b506109296125c8565b604051610936919061421f565b60405180910390f35b34801561094a575f80fd5b50610953612658565b60405161096091906143f5565b60405180910390f35b348015610974575f80fd5b5061097d61265e565b60405161098a91906143f5565b60405180910390f35b34801561099e575f80fd5b506109b960048036038101906109b491906143a8565b612664565b005b3480156109c6575f80fd5b506109e160048036038101906109dc9190614523565b61288e565b6040516109ee91906143f5565b60405180910390f35b348015610a02575f80fd5b50610a1d6004803603810190610a18919061430d565b612901565b604051610a2a9190614365565b60405180910390f35b348015610a3e575f80fd5b50610a596004803603810190610a54919061430d565b612976565b604051610a669190614365565b60405180910390f35b348015610a7a575f80fd5b50610a956004803603810190610a9091906144d0565b612998565b604051610aa29190614365565b60405180910390f35b348015610ab6575f80fd5b50610abf6129b5565b604051610acc919061450a565b60405180910390f35b348015610ae0575f80fd5b50610ae96129da565b604051610af69190614365565b60405180910390f35b348015610b0a575f80fd5b50610b136129ec565b604051610b2091906143f5565b60405180910390f35b348015610b34575f80fd5b50610b3d6129f2565b604051610b4a91906143f5565b60405180910390f35b348015610b5e575f80fd5b50610b676129f8565b604051610b749190614365565b60405180910390f35b348015610b88575f80fd5b50610b91612a0a565b604051610b9e91906143f5565b60405180910390f35b348015610bb2575f80fd5b50610bcd6004803603810190610bc8919061454e565b612a10565b604051610bda91906143f5565b60405180910390f35b348015610bee575f80fd5b50610bf7612a92565b005b348015610c04575f80fd5b50610c0d612b43565b604051610c1a919061450a565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c4491906144d0565b612b68565b005b348015610c56575f80fd5b50610c716004803603810190610c6c91906144d0565b612caf565b005b348015610c7e575f80fd5b50610c87612e71565b604051610c9491906143f5565b60405180910390f35b348015610ca8575f80fd5b50610cb1612e77565b604051610cbe91906143f5565b60405180910390f35b348015610cd2575f80fd5b50610ced6004803603810190610ce891906144d0565b612e7d565b604051610cfa9190614365565b60405180910390f35b610d0b612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906145d6565b60405180910390fd5b610da1611460565b600a610dad9190614750565b6103e86005610dba611160565b610dc4919061479a565b610dce9190614808565b610dd89190614808565b811015610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190614882565b60405180910390fd5b610e22611460565b600a610e2e9190614750565b81610e39919061479a565b600c819055507f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c18376691574600c54604051610e7091906143f5565b60405180910390a150565b606060038054610e8a906148cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb6906148cd565b8015610f015780601f10610ed857610100808354040283529160200191610f01565b820191905f5260205f20905b815481529060010190602001808311610ee457829003601f168201915b5050505050905090565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610f3a612e9a565b9050610f47818585612ea1565b600191505092915050565b610f5a612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf906145d6565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115481565b61104e612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d3906145d6565b60405180910390fd5b816013819055507f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece050860135460405161111491906143f5565b60405180910390a1806014819055507fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c9760145460405161115491906143f5565b60405180910390a15050565b5f600254905090565b611171612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f6906145d6565b60405180910390fd5b611207611460565b600a6112139190614750565b6064600161121f611160565b611229919061479a565b6112339190614808565b61123d9190614808565b81101561127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690614882565b60405180910390fd5b611287611460565b600a6112939190614750565b8161129e919061479a565b600d819055507f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c42762600d546040516112d591906143f5565b60405180910390a150565b5f806112ea612e9a565b90506112f7858285613064565b6113028585856130ef565b60019150509392505050565b611316612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906145d6565b60405180910390fd5b5f811180156113b4575060648111155b6113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90614947565b60405180910390fd5b5f6113fc611160565b90505f6064838361140d919061479a565b6114179190614808565b90506114243330836130ef565b7fa279c30f428f273d379f1142c0a5f966a89eae3243ca2a33cdc1ef2c8784af878160405161145391906143f5565b60405180910390a1505050565b5f6012905090565b5f80611472612e9a565b90506114938185856114848589612a10565b61148e9190614965565b612ea1565b600191505092915050565b6009602052805f5260405f205f915054906101000a900460ff1681565b60105481565b6114c9612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906149e2565b60405180910390fd5b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b601960019054906101000a900460ff1681565b60135481565b611669612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c906149e2565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6006602052805f5260405f205f915054906101000a900460ff1681565b6117e1612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611866906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490614a4a565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b5f47905090565b60125460115461193d9190614965565b43101561197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690614ab2565b60405180910390fd5b5f611988611160565b90505f60646010548361199b919061479a565b6119a59190614808565b90505f6119b130611c13565b9050818110156119bf578091505b6119eb30601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612ea1565b5f600267ffffffffffffffff811115611a0757611a06614ad0565b5b604051908082528060200260200182016040528015611a355781602001602082028036833780820191505090505b50905030815f81518110611a4c57611a4b614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b149190614b3e565b81600181518110611b2857611b27614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f843061025842611bb19190614965565b6040518663ffffffff1660e01b8152600401611bd1959493929190614c59565b5f604051808303815f87803b158015611be8575f80fd5b505af1158015611bfa573d5f803e3d5ffd5b5050505043601181905550611c0d613406565b50505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611c60612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce5906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611db3612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e38906145d6565b60405180910390fd5b5f601960016101000a81548160ff0219169083151502179055505f60195f6101000a81548160ff021916908315150217905550611e7c611160565b600c81905550611e8a611160565b600d819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611ec6612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4b906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906149e2565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d8282604051612047929190614cb1565b60405180910390a15050565b61205b612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e0906145d6565b60405180910390fd5b5f6120f330611c13565b90505f8111612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90614d22565b60405180910390fd5b61216330601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612ea1565b5f600267ffffffffffffffff81111561217f5761217e614ad0565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030815f815181106121c4576121c3614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228c9190614b3e565b816001815181106122a05761229f614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430610258426123299190614965565b6040518663ffffffff1660e01b8152600401612349959493929190614c59565b5f604051808303815f87803b158015612360575f80fd5b505af1158015612372573d5f803e3d5ffd5b505050505f4790505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123c090614d6d565b5f6040518083038185875af1925050503d805f81146123fa576040519150601f19603f3d011682016040523d82523d5f602084013e6123ff565b606091505b5050905080612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614df1565b60405180910390fd5b7f21391acce4e52fa837e05085a131bfc2e4026e654bcb78b49c73db9114739e5c8483604051612474929190614e0f565b60405180910390a150505050565b61248a612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f906145d6565b60405180910390fd5b600a5f9054906101000a900460ff1615612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614e80565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546125d7906148cd565b80601f0160208091040260200160405190810160405280929190818152602001828054612603906148cd565b801561264e5780601f106126255761010080835404028352916020019161264e565b820191905f5260205f20905b81548152906001019060200180831161263157829003601f168201915b5050505050905090565b60165481565b61271081565b61266c612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f1906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275f906149e2565b60405180910390fd5b806127fd57601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614ee8565b60405180910390fd5b5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce8282604051612882929190614cb1565b60405180910390a15050565b5f806015544361289e9190614f06565b90505f601654826128af9190614808565b90505f601754826128c0919061479a565b90505f856128d0576014546128d4565b6013545b90508082106128e9575f9450505050506128fc565b81816128f59190614f06565b9450505050505b919050565b5f8061290b612e9a565b90505f6129188286612a10565b90508381101561295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295490614fa9565b60405180910390fd5b61296a8286868403612ea1565b60019250505092915050565b5f80612980612e9a565b905061298d8185856130ef565b600191505092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900460ff1681565b600c5481565b601a5481565b60195f9054906101000a900460ff1681565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612a9a612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f906145d6565b60405180910390fd5b5f60195f6101000a81548160ff021916908315150217905550565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b70612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6390614a4a565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612cb7612e9a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c906145d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612daa90615037565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b600d5481565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f06906150c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7490615153565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161305791906143f5565b60405180910390a3505050565b5f61306f8484612a10565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146130e957818110156130db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d2906151bb565b60405180910390fd5b6130e88484848403612ea1565b5b50505050565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317090615223565b60405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fa9061528b565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061329e575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806132b55750601960029054906101000a900460ff165b156132ca576132c58383836134d7565b613401565b600a5f9054906101000a900460ff16613318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330f906152f3565b60405180910390fd5b601960019054906101000a900460ff161561333957613338838383613743565b5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156133d7575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156133f5576133e7838383613ba1565b816133f29190614f06565b90505b6134008383836134d7565b5b505050565b5f4790505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161345090614d6d565b5f6040518083038185875af1925050503d805f811461348a576040519150601f19603f3d011682016040523d82523d5f602084013e61348f565b606091505b50509050806134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca90614df1565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353c90615381565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135aa9061540f565b60405180910390fd5b6135be838383613e3c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136389061549d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161372a91906143f5565b60405180910390a361373d848484613e41565b50505050565b60195f9054906101000a900460ff16156138c357601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156137fb5750600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156138c2574360185f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061387f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387690615505565b60405180910390fd5b4360185f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613960575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613a0757600c548111156139aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a19061556d565b60405180910390fd5b600d546139b683611c13565b826139c19190614965565b1115613a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f9906155d5565b60405180910390fd5b613b9c565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613aa4575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613af357600c54811115613aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae59061556d565b60405180910390fd5b613b9b565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16613b9a57600d54613b4d83611c13565b82613b589190614965565b1115613b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b90906155d5565b60405180910390fd5b5b5b5b505050565b5f601a54613bae30611c13565b10158015613bc95750601960029054906101000a900460ff16155b8015613c1c5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613c5f576001601960026101000a81548160ff021916908315150217905550613c44613e46565b5f601960026101000a81548160ff0219169083151502179055505b5f805f600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690505f600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690508115613d1257613d0b600161288e565b9250613d25565b8015613d2457613d215f61288e565b92505b5b600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613d7c57505f601454115b15613da1576127108387613d90919061479a565b613d9a9190614808565b9350613e1a565b600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613df857505f601354115b15613e19576127108387613e0c919061479a565b613e169190614808565b93505b5b5f841115613e2e57613e2d8830866134d7565b5b839450505050509392505050565b505050565b505050565b5f613e5030611c13565b90505f8103613e5f5750613f27565b6028601a54613e6e919061479a565b811115613e87576028601a54613e84919061479a565b90505b613e9081613f29565b5f471115613f25575f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ede90614d6d565b5f6040518083038185875af1925050503d805f8114613f18576040519150601f19603f3d011682016040523d82523d5f602084013e613f1d565b606091505b505080915050505b505b565b5f600267ffffffffffffffff811115613f4557613f44614ad0565b5b604051908082528060200260200182016040528015613f735781602001602082028036833780820191505090505b50905030815f81518110613f8a57613f89614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561402e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140529190614b3e565b8160018151811061406657614065614afd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614102959493929190614c59565b5f604051808303815f87803b158015614119575f80fd5b505af115801561412b573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b61414981614137565b8114614153575f80fd5b50565b5f8135905061416481614140565b92915050565b5f6020828403121561417f5761417e614133565b5b5f61418c84828501614156565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156141cc5780820151818401526020810190506141b1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6141f182614195565b6141fb818561419f565b935061420b8185602086016141af565b614214816141d7565b840191505092915050565b5f6020820190508181035f83015261423781846141e7565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61428161427c6142778461423f565b61425e565b61423f565b9050919050565b5f61429282614267565b9050919050565b5f6142a382614288565b9050919050565b6142b381614299565b82525050565b5f6020820190506142cc5f8301846142aa565b92915050565b5f6142dc8261423f565b9050919050565b6142ec816142d2565b81146142f6575f80fd5b50565b5f81359050614307816142e3565b92915050565b5f806040838503121561432357614322614133565b5b5f614330858286016142f9565b925050602061434185828601614156565b9150509250929050565b5f8115159050919050565b61435f8161434b565b82525050565b5f6020820190506143785f830184614356565b92915050565b6143878161434b565b8114614391575f80fd5b50565b5f813590506143a28161437e565b92915050565b5f80604083850312156143be576143bd614133565b5b5f6143cb858286016142f9565b92505060206143dc85828601614394565b9150509250929050565b6143ef81614137565b82525050565b5f6020820190506144085f8301846143e6565b92915050565b5f806040838503121561442457614423614133565b5b5f61443185828601614156565b925050602061444285828601614156565b9150509250929050565b5f805f6060848603121561446357614462614133565b5b5f614470868287016142f9565b9350506020614481868287016142f9565b925050604061449286828701614156565b9150509250925092565b5f60ff82169050919050565b6144b18161449c565b82525050565b5f6020820190506144ca5f8301846144a8565b92915050565b5f602082840312156144e5576144e4614133565b5b5f6144f2848285016142f9565b91505092915050565b614504816142d2565b82525050565b5f60208201905061451d5f8301846144fb565b92915050565b5f6020828403121561453857614537614133565b5b5f61454584828501614394565b91505092915050565b5f806040838503121561456457614563614133565b5b5f614571858286016142f9565b9250506020614582858286016142f9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6145c060208361419f565b91506145cb8261458c565b602082019050919050565b5f6020820190508181035f8301526145ed816145b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561467657808604811115614652576146516145f4565b5b60018516156146615780820291505b808102905061466f85614621565b9450614636565b94509492505050565b5f8261468e5760019050614749565b8161469b575f9050614749565b81600181146146b157600281146146bb576146ea565b6001915050614749565b60ff8411156146cd576146cc6145f4565b5b8360020a9150848211156146e4576146e36145f4565b5b50614749565b5060208310610133831016604e8410600b841016171561471f5782820a90508381111561471a576147196145f4565b5b614749565b61472c848484600161462d565b92509050818404811115614743576147426145f4565b5b81810290505b9392505050565b5f61475a82614137565b91506147658361449c565b92506147927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461467f565b905092915050565b5f6147a482614137565b91506147af83614137565b92508282026147bd81614137565b915082820484148315176147d4576147d36145f4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61481282614137565b915061481d83614137565b92508261482d5761482c6147db565b5b828204905092915050565b7f546f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f61486c60078361419f565b915061487782614838565b602082019050919050565b5f6020820190508181035f83015261489981614860565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806148e457607f821691505b6020821081036148f7576148f66148a0565b5b50919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f61493160128361419f565b915061493c826148fd565b602082019050919050565b5f6020820190508181035f83015261495e81614925565b9050919050565b5f61496f82614137565b915061497a83614137565b9250828201905080821115614992576149916145f4565b5b92915050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f6149cc600c8361419f565b91506149d782614998565b602082019050919050565b5f6020820190508181035f8301526149f9816149c0565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f614a34600c8361419f565b9150614a3f82614a00565b602082019050919050565b5f6020820190508181035f830152614a6181614a28565b9050919050565b7f556e636c6f6720696e74657276616c206e6f74207265616368656400000000005f82015250565b5f614a9c601b8361419f565b9150614aa782614a68565b602082019050919050565b5f6020820190508181035f830152614ac981614a90565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614b38816142e3565b92915050565b5f60208284031215614b5357614b52614133565b5b5f614b6084828501614b2a565b91505092915050565b5f819050919050565b5f614b8c614b87614b8284614b69565b61425e565b614137565b9050919050565b614b9c81614b72565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614bd4816142d2565b82525050565b5f614be58383614bcb565b60208301905092915050565b5f602082019050919050565b5f614c0782614ba2565b614c118185614bac565b9350614c1c83614bbc565b805f5b83811015614c4c578151614c338882614bda565b9750614c3e83614bf1565b925050600181019050614c1f565b5085935050505092915050565b5f60a082019050614c6c5f8301886143e6565b614c796020830187614b93565b8181036040830152614c8b8186614bfd565b9050614c9a60608301856144fb565b614ca760808301846143e6565b9695505050505050565b5f604082019050614cc45f8301856144fb565b614cd16020830184614356565b9392505050565b7f4e6f20746f6b656e7320746f20756e636c6f67000000000000000000000000005f82015250565b5f614d0c60138361419f565b9150614d1782614cd8565b602082019050919050565b5f6020820190508181035f830152614d3981614d00565b9050919050565b5f81905092915050565b50565b5f614d585f83614d40565b9150614d6382614d4a565b5f82019050919050565b5f614d7782614d4d565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f20746865207461782077615f8201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b5f614ddb60248361419f565b9150614de682614d81565b604082019050919050565b5f6020820190508181035f830152614e0881614dcf565b9050919050565b5f604082019050614e225f8301856143e6565b614e2f60208301846143e6565b9392505050565b7f54726164696e67206163746976650000000000000000000000000000000000005f82015250565b5f614e6a600e8361419f565b9150614e7582614e36565b602082019050919050565b5f6020820190508181035f830152614e9781614e5e565b9050919050565b7f50616972000000000000000000000000000000000000000000000000000000005f82015250565b5f614ed260048361419f565b9150614edd82614e9e565b602082019050919050565b5f6020820190508181035f830152614eff81614ec6565b9050919050565b5f614f1082614137565b9150614f1b83614137565b9250828203905081811115614f3357614f326145f4565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614f9360258361419f565b9150614f9e82614f39565b604082019050919050565b5f6020820190508181035f830152614fc081614f87565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61502160268361419f565b915061502c82614fc7565b604082019050919050565b5f6020820190508181035f83015261504e81615015565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6150af60248361419f565b91506150ba82615055565b604082019050919050565b5f6020820190508181035f8301526150dc816150a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61513d60228361419f565b9150615148826150e3565b604082019050919050565b5f6020820190508181035f83015261516a81615131565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6151a5601d8361419f565b91506151b082615171565b602082019050919050565b5f6020820190508181035f8301526151d281615199565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f61520d60158361419f565b9150615218826151d9565b602082019050919050565b5f6020820190508181035f83015261523a81615201565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61527560188361419f565b915061528082615241565b602082019050919050565b5f6020820190508181035f8301526152a281615269565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6152dd60128361419f565b91506152e8826152a9565b602082019050919050565b5f6020820190508181035f83015261530a816152d1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61536b60258361419f565b915061537682615311565b604082019050919050565b5f6020820190508181035f8301526153988161535f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6153f960238361419f565b91506154048261539f565b604082019050919050565b5f6020820190508181035f830152615426816153ed565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61548760268361419f565b91506154928261542d565b604082019050919050565b5f6020820190508181035f8301526154b48161547b565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e0000000000000000005f82015250565b5f6154ef60178361419f565b91506154fa826154bb565b602082019050919050565b5f6020820190508181035f83015261551c816154e3565b9050919050565b7f4d61782074782065786365656465642e000000000000000000000000000000005f82015250565b5f61555760108361419f565b915061556282615523565b602082019050919050565b5f6020820190508181035f8301526155848161554b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6155bf60138361419f565b91506155ca8261558b565b602082019050919050565b5f6020820190508181035f8301526155ec816155b3565b905091905056fea26469706673582212208fb3b9655109133e29b524616c07230a3394579a28714394eaa8afeb6049592b64736f6c63430008150033

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000095472756d70476f6b75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042454474b00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): TrumpGoku
Arg [1] : _symbol (string): $TGK

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 5472756d70476f6b750000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 2454474b00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

16789:14204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27657:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4309:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18042:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6788:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29289:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17348:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28226:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5557:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27952:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7569:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29428:428;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5399:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8239:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16997:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17280:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26697:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18014:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17527:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17905:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17470:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26873:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16835:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29120:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17388:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4417:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25228:1201;;;;;;;;;;;;;:::i;:::-;;5728:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15959:150;;;;;;;;;;;;;:::i;:::-;;28592:231;;;;;;;;;;;;;:::i;:::-;;27055:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29864:1126;;;;;;;;;;;;;:::i;:::-;;28449:135;;;;;;;;;;;;;:::i;:::-;;16889:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15745:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4647:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17559:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18078:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27310:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21177:451;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8980:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6061:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17087:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17246:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17053;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17138:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17975:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17859:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17498:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6317:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28831:98;;;;;;;;;;;;;:::i;:::-;;17207:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28937:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16117:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17654:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17174:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16945:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27657:287;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27799:10:::1;:8;:10::i;:::-;27795:2;:14;;;;:::i;:::-;27788:4;27784:1;27768:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;27767:43;;;;:::i;:::-;27749:14;:61;;27741:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27872:10;:8;:10::i;:::-;27868:2;:14;;;;:::i;:::-;27850;:33;;;;:::i;:::-;27833:14;:50;;;;27899:37;27921:14;;27899:37;;;;;;:::i;:::-;;;;;;;;27657:287:::0;:::o;4309:100::-;4363:13;4396:5;4389:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4309:100;:::o;18042:27::-;;;;;;;;;;;;;:::o;6788:201::-;6871:4;6888:13;6904:12;:10;:12::i;:::-;6888:28;;6927:32;6936:5;6943:7;6952:6;6927:8;:32::i;:::-;6977:4;6970:11;;;6788:201;;;;:::o;29289:131::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29405:7:::1;29379:13;:23;29393:8;29379:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;29289:131:::0;;:::o;17348:33::-;;;;:::o;28226:215::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28321:7:::1;28312:6;:16;;;;28344:21;28358:6;;28344:21;;;;;;:::i;:::-;;;;;;;;28386:8;28376:7;:18;;;;28410:23;28425:7;;28410:23;;;;;;:::i;:::-;;;;;;;;28226:215:::0;;:::o;5557:108::-;5618:7;5645:12;;5638:19;;5557:108;:::o;27952:266::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28088:10:::1;:8;:10::i;:::-;28084:2;:14;;;;:::i;:::-;28078:3;28074:1;28058:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;28057:42;;;;:::i;:::-;28039:14;:60;;28031:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;28156:10;:8;:10::i;:::-;28152:2;:14;;;;:::i;:::-;28134;:33;;;;:::i;:::-;28122:9;:45;;;;28183:27;28200:9;;28183:27;;;;;;:::i;:::-;;;;;;;;27952:266:::0;:::o;7569:261::-;7666:4;7683:15;7701:12;:10;:12::i;:::-;7683:30;;7724:38;7740:4;7746:7;7755:6;7724:15;:38::i;:::-;7773:27;7783:4;7789:2;7793:6;7773:9;:27::i;:::-;7818:4;7811:11;;;7569:261;;;;;:::o;29428:428::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29517:1:::1;29504:10;:14;:35;;;;;29536:3;29522:10;:17;;29504:35;29496:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29575:19;29597:13;:11;:13::i;:::-;29575:35;;29621:18;29669:3;29656:10;29642:11;:24;;;;:::i;:::-;:30;;;;:::i;:::-;29621:51;;29757:48;29767:10;29787:4;29794:10;29757:9;:48::i;:::-;29823:25;29837:10;29823:25;;;;;;:::i;:::-;;;;;;;;29485:371;;29428:428:::0;:::o;5399:93::-;5457:5;5482:2;5475:9;;5399:93;:::o;8239:238::-;8327:4;8344:13;8360:12;:10;:12::i;:::-;8344:28;;8383:64;8392:5;8399:7;8436:10;8408:25;8418:5;8425:7;8408:9;:25::i;:::-;:38;;;;:::i;:::-;8383:8;:64::i;:::-;8465:4;8458:11;;;8239:238;;;;:::o;16997:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17280:35::-;;;;:::o;26697:168::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26797:1:::1;26777:22;;:8;:22;;::::0;26769:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26853:4;26827:13;:23;26841:8;26827:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;26697:168:::0;:::o;18014:21::-;;;;;;;;;;;;;:::o;17527:25::-;;;;:::o;17905:33::-;;;;;;;;;;;;;:::o;17470:21::-;;;;:::o;26873:174::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26978:1:::1;26958:22;;:8;:22;;::::0;26950:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27034:5;27008:13;:23;27022:8;27008:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;26873:174:::0;:::o;16835:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;29120:161::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29222:1:::1;29202:22;;:8;:22;;::::0;29194:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29265:8;29252:10;;:21;;;;;;;;;;;;;;;;;;29120:161:::0;:::o;17388:35::-;;;;:::o;4417:109::-;4470:7;4497:21;4490:28;;4417:109;:::o;25228:1201::-;25309:14;;25288:18;;:35;;;;:::i;:::-;25272:12;:51;;25264:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25368:19;25390:13;:11;:13::i;:::-;25368:35;;25414:18;25467:3;25449:15;;25435:11;:29;;;;:::i;:::-;:35;;;;:::i;:::-;25414:56;;25481:23;25507:24;25525:4;25507:9;:24::i;:::-;25481:50;;25566:10;25548:15;:28;25544:162;;;25606:15;25593:28;;25544:162;25771:55;25788:4;25803:9;;;;;;;;;;;25815:10;25771:8;:55::i;:::-;25868:21;25906:1;25892:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25868:40;;25937:4;25919;25924:1;25919:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25963:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25953:4;25958:1;25953:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;26021:9;;;;;;;;;;;:60;;;26096:10;26121:1;26165:4;26192;26230:3;26212:15;:21;;;;:::i;:::-;26021:246;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26345:12;26324:18;:33;;;;26409:12;:10;:12::i;:::-;25253:1176;;;;25228:1201::o;5728:127::-;5802:7;5829:9;:18;5839:7;5829:18;;;;;;;;;;;;;;;;5822:25;;5728:127;;;:::o;15959:150::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16068:1:::1;16031:40;;16052:6;;;;;;;;;;;16031:40;;;;;;;;;;;;16099:1;16082:6;;:19;;;;;;;;;;;;;;;;;;15959:150::o:0;28592:231::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28663:5:::1;28646:14;;:22;;;;;;;;;;;;;;;;;;28702:5;28679:20;;:28;;;;;;;;;;;;;;;;;;28735:13;:11;:13::i;:::-;28718:14;:30;;;;28771:13;:11;:13::i;:::-;28759:9;:25;;;;28800:15;;;;;;;;;;28592:231::o:0;27055:247::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27174:1:::1;27154:22;;:8;:22;;::::0;27146:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27231:9;27204:14;:24;27219:8;27204:24;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;27256:38;27274:8;27284:9;27256:38;;;;;;;:::i;:::-;;;;;;;;27055:247:::0;;:::o;29864:1126::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29916:21:::1;29940:24;29958:4;29940:9;:24::i;:::-;29916:48;;29999:1;29983:13;:17;29975:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;30088:58;30105:4;30120:9;;;;;;;;;;;30132:13;30088:8;:58::i;:::-;30212:21;30250:1;30236:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30212:40;;30281:4;30263;30268:1;30263:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;30307:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30297:4;30302:1;30297:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;30365:9;;;;;;;;;;;:60;;;30440:13;30468:1;30578:4;30605;30643:3;30625:15;:21;;;;:::i;:::-;30365:334;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30751:18;30772:21;30751:42;;30805:9;30820:10;;;;;;;;;;;:15;;30843:10;30820:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30804:54;;;30877:4;30869:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;30940:42;30956:13;30971:10;30940:42;;;;;;;:::i;:::-;;;;;;;;29905:1085;;;;29864:1126::o:0;28449:135::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28513:13:::1;;;;;;;;;;;28512:14;28504:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;28572:4;28556:13;;:20;;;;;;;;;;;;;;;;;;28449:135::o:0;16889:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;15745:79::-;15783:7;15810:6;;;;;;;;;;;15803:13;;15745:79;:::o;4647:104::-;4703:13;4736:7;4729:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4647:104;:::o;17559:38::-;;;;:::o;18078:43::-;18116:5;18078:43;:::o;27310:339::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27431:1:::1;27411:22;;:8;:22;;::::0;27403:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27465:9;27461:76;;27510:6;;;;;;;;;;;27498:18;;:8;:18;;::::0;27490:35:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27461:76;27576:9;27547:16;:26;27564:8;27547:26;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;27601:40;27621:8;27631:9;27601:40;;;;;;;:::i;:::-;;;;;;;;27310:339:::0;;:::o;21177:451::-;21237:7;21257:20;21295:10;;21280:12;:25;;;;:::i;:::-;21257:48;;21316:22;21356:19;;21341:12;:34;;;;:::i;:::-;21316:59;;21386:23;21429:16;;21412:14;:33;;;;:::i;:::-;21386:59;;21458:15;21476:5;:24;;21493:7;;21476:24;;;21484:6;;21476:24;21458:42;;21534:7;21515:15;:26;21511:67;;21565:1;21558:8;;;;;;;;21511:67;21605:15;21595:7;:25;;;;:::i;:::-;21588:32;;;;;;21177:451;;;;:::o;8980:436::-;9073:4;9090:13;9106:12;:10;:12::i;:::-;9090:28;;9129:24;9156:25;9166:5;9173:7;9156:9;:25::i;:::-;9129:52;;9220:15;9200:16;:35;;9192:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9313:60;9322:5;9329:7;9357:15;9338:16;:34;9313:8;:60::i;:::-;9404:4;9397:11;;;;8980:436;;;;:::o;6061:193::-;6140:4;6157:13;6173:12;:10;:12::i;:::-;6157:28;;6196;6206:5;6213:2;6217:6;6196:9;:28::i;:::-;6242:4;6235:11;;;6061:193;;;;:::o;17087:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;17246:25::-;;;;;;;;;;;;;:::o;17053:::-;;;;;;;;;;;;;:::o;17138:29::-;;;;:::o;17975:30::-;;;;:::o;17859:39::-;;;;;;;;;;;;;:::o;17498:22::-;;;;:::o;6317:151::-;6406:7;6433:11;:18;6445:5;6433:18;;;;;;;;;;;;;;;:27;6452:7;6433:27;;;;;;;;;;;;;;;;6426:34;;6317:151;;;;:::o;28831:98::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28916:5:::1;28893:20;;:28;;;;;;;;;;;;;;;;;;28831:98::o:0;17207:32::-;;;;;;;;;;;;;:::o;28937:175::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29046:1:::1;29026:22;;:8;:22;;::::0;29018:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29096:8;29076:17;;:28;;;;;;;;;;;;;;;;;;28937:175:::0;:::o;16117:244::-;15882:12;:10;:12::i;:::-;15872:22;;:6;;;;;;;;;;;:22;;;15864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16226:1:::1;16206:22;;:8;:22;;::::0;16198:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16316:8;16287:38;;16308:6;;;;;;;;;;;16287:38;;;;;;;;;;;;16345:8;16336:6;;:17;;;;;;;;;;;;;;;;;;16117:244:::0;:::o;17654:35::-;;;;:::o;17174:24::-;;;;:::o;16945:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;215:98::-;268:7;295:10;288:17;;215:98;:::o;12973:346::-;13092:1;13075:19;;:5;:19;;;13067:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13173:1;13154:21;;:7;:21;;;13146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13257:6;13227:11;:18;13239:5;13227:18;;;;;;;;;;;;;;;:27;13246:7;13227:27;;;;;;;;;;;;;;;:36;;;;13295:7;13279:32;;13288:5;13279:32;;;13304:6;13279:32;;;;;;:::i;:::-;;;;;;;;12973:346;;;:::o;13610:419::-;13711:24;13738:25;13748:5;13755:7;13738:9;:25::i;:::-;13711:52;;13798:17;13778:16;:37;13774:248;;13860:6;13840:16;:26;;13832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13944:51;13953:5;13960:7;13988:6;13969:16;:25;13944:8;:51::i;:::-;13774:248;13700:329;13610:419;;;:::o;21635:781::-;21837:13;:19;21851:4;21837:19;;;;;;;;;;;;;;;;;;;;;;;;;21836:20;21828:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21902:13;:17;21916:2;21902:17;;;;;;;;;;;;;;;;;;;;;;;;;21901:18;21893:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;21964:14;:20;21979:4;21964:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;21988:14;:18;22003:2;21988:18;;;;;;;;;;;;;;;;;;;;;;;;;21964:42;:54;;;;22010:8;;;;;;;;;;;21964:54;21961:137;;;22034:31;22050:4;22055:2;22058:6;22034:15;:31::i;:::-;22080:7;;21961:137;22118:13;;;;;;;;;;;22110:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22170:14;;;;;;;;;;;22167:74;;;22200:29;22212:4;22218:2;22222:6;22200:11;:29::i;:::-;22167:74;22258:13;:19;22272:4;22258:19;;;;;;;;;;;;;;;;;;;;;;;;;22257:20;:42;;;;;22282:13;:17;22296:2;22282:17;;;;;;;;;;;;;;;;;;;;;;;;;22281:18;22257:42;22253:112;;;22326:27;22336:4;22342:2;22346:6;22326:9;:27::i;:::-;22316:37;;;;;:::i;:::-;;;22253:112;22377:31;22393:4;22398:2;22401:6;22377:15;:31::i;:::-;21635:781;;;;:::o;26437:226::-;26478:18;26499:21;26478:42;;26532:12;26550:10;;;;;;;;;;;:15;;26573:10;26550:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26531:57;;;26607:7;26599:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;26467:196;;26437:226::o;9886:806::-;9999:1;9983:18;;:4;:18;;;9975:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10076:1;10062:16;;:2;:16;;;10054:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10131:38;10152:4;10158:2;10162:6;10131:20;:38::i;:::-;10182:19;10204:9;:15;10214:4;10204:15;;;;;;;;;;;;;;;;10182:37;;10253:6;10238:11;:21;;10230:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10370:6;10356:11;:20;10338:9;:15;10348:4;10338:15;;;;;;;;;;;;;;;:38;;;;10573:6;10556:9;:13;10566:2;10556:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;10623:2;10608:26;;10617:4;10608:26;;;10627:6;10608:26;;;;;;:::i;:::-;;;;;;;;10647:37;10667:4;10673:2;10677:6;10647:19;:37::i;:::-;9964:728;9886:806;;;:::o;22424:908::-;22511:20;;;;;;;;;;;22507:288;;;22565:9;;;;;;;;;;;22551:24;;:2;:24;;;;:42;;;;;22580:9;:13;22590:2;22580:13;;;;;;;;;;;;;;;;;;;;;;;;;22579:14;22551:42;22547:237;;;22659:12;22621:24;:35;22646:9;22621:35;;;;;;;;;;;;;;;;:50;22613:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;22756:12;22718:24;:35;22743:9;22718:35;;;;;;;;;;;;;;;:50;;;;22547:237;22507:288;22827:9;:15;22837:4;22827:15;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;22847:16;:20;22864:2;22847:20;;;;;;;;;;;;;;;;;;;;;;;;;22846:21;22827:40;22823:502;;;22902:14;;22892:6;:24;;22884:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;22986:9;;22969:13;22979:2;22969:9;:13::i;:::-;22960:6;:22;;;;:::i;:::-;:35;;22952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22823:502;;;23068:9;:13;23078:2;23068:13;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;23086:16;:22;23103:4;23086:22;;;;;;;;;;;;;;;;;;;;;;;;;23085:23;23068:40;23064:261;;;23143:14;;23133:6;:24;;23125:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;23064:261;;;23209:16;:20;23226:2;23209:20;;;;;;;;;;;;;;;;;;;;;;;;;23205:120;;23280:9;;23263:13;23273:2;23263:9;:13::i;:::-;23254:6;:22;;;;:::i;:::-;:35;;23246:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23205:120;23064:261;22823:502;22424:908;;;:::o;23340:984::-;23419:7;23469:15;;23441:24;23459:4;23441:9;:24::i;:::-;:43;;:56;;;;;23489:8;;;;;;;;;;;23488:9;23441:56;:76;;;;;23502:9;:15;23512:4;23502:15;;;;;;;;;;;;;;;;;;;;;;;;;23501:16;23441:76;23438:179;;;23545:4;23534:8;;:15;;;;;;;;;;;;;;;;;;23564:10;:8;:10::i;:::-;23600:5;23589:8;;:16;;;;;;;;;;;;;;;;;;23438:179;23637:11;23663:15;23695:10;23708:9;:15;23718:4;23708:15;;;;;;;;;;;;;;;;;;;;;;;;;23695:28;;23734:11;23748:9;:13;23758:2;23748:13;;;;;;;;;;;;;;;;;;;;;;;;;23734:27;;23778:5;23774:150;;;23810:23;23828:4;23810:17;:23::i;:::-;23800:33;;23774:150;;;23855:6;23851:73;;;23888:24;23906:5;23888:17;:24::i;:::-;23878:34;;23851:73;23774:150;23960:9;:13;23970:2;23960:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;23987:1;23977:7;;:11;23960:28;23956:227;;;18116:5;24019:7;24010:6;:16;;;;:::i;:::-;:30;;;;:::i;:::-;24004:36;;23956:227;;;24089:9;:15;24099:4;24089:15;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;24117:1;24108:6;;:10;24089:29;24086:97;;;18116:5;24150:7;24141:6;:16;;;;:::i;:::-;:30;;;;:::i;:::-;24135:36;;24086:97;23956:227;24212:1;24206:3;:7;24203:83;;;24233:41;24249:4;24263;24270:3;24233:15;:41::i;:::-;24203:83;24313:3;24306:10;;;;;;23340:984;;;;;:::o;14629:91::-;;;;:::o;15324:90::-;;;;:::o;24724:496::-;24765:23;24791:24;24809:4;24791:9;:24::i;:::-;24765:50;;24858:1;24839:15;:20;24836:34;;24862:7;;;24836:34;24921:2;24903:15;;:20;;;;:::i;:::-;24885:15;:38;24882:107;;;24975:2;24957:15;;:20;;;;:::i;:::-;24939:38;;24882:107;25009:33;25026:15;25009:16;:33::i;:::-;25094:1;25070:21;:25;25067:146;;;25111:12;25152:10;;;;;;;;;;;:15;;25175:21;25152:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25138:63;;;;;25096:117;25067:146;24752:468;24724:496;:::o;24332:384::-;24397:21;24435:1;24421:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24397:40;;24466:4;24448;24453:1;24448:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24492:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24482:4;24487:1;24482:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;24521:9;;;;;;;;;;;:60;;;24596:8;24619:1;24635:4;24662;24682:15;24521:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24384:332;24332:384;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:60::-;2527:3;2548:5;2541:12;;2499:60;;;:::o;2565:142::-;2615:9;2648:53;2666:34;2675:24;2693:5;2675:24;:::i;:::-;2666:34;:::i;:::-;2648:53;:::i;:::-;2635:66;;2565:142;;;:::o;2713:126::-;2763:9;2796:37;2827:5;2796:37;:::i;:::-;2783:50;;2713:126;;;:::o;2845:144::-;2913:9;2946:37;2977:5;2946:37;:::i;:::-;2933:50;;2845:144;;;:::o;2995:167::-;3100:55;3149:5;3100:55;:::i;:::-;3095:3;3088:68;2995:167;;:::o;3168:258::-;3279:4;3317:2;3306:9;3302:18;3294:26;;3330:89;3416:1;3405:9;3401:17;3392:6;3330:89;:::i;:::-;3168:258;;;;:::o;3432:96::-;3469:7;3498:24;3516:5;3498:24;:::i;:::-;3487:35;;3432:96;;;:::o;3534:122::-;3607:24;3625:5;3607:24;:::i;:::-;3600:5;3597:35;3587:63;;3646:1;3643;3636:12;3587:63;3534:122;:::o;3662:139::-;3708:5;3746:6;3733:20;3724:29;;3762:33;3789:5;3762:33;:::i;:::-;3662:139;;;;:::o;3807:474::-;3875:6;3883;3932:2;3920:9;3911:7;3907:23;3903:32;3900:119;;;3938:79;;:::i;:::-;3900:119;4058:1;4083:53;4128:7;4119:6;4108:9;4104:22;4083:53;:::i;:::-;4073:63;;4029:117;4185:2;4211:53;4256:7;4247:6;4236:9;4232:22;4211:53;:::i;:::-;4201:63;;4156:118;3807:474;;;;;:::o;4287:90::-;4321:7;4364:5;4357:13;4350:21;4339:32;;4287:90;;;:::o;4383:109::-;4464:21;4479:5;4464:21;:::i;:::-;4459:3;4452:34;4383:109;;:::o;4498:210::-;4585:4;4623:2;4612:9;4608:18;4600:26;;4636:65;4698:1;4687:9;4683:17;4674:6;4636:65;:::i;:::-;4498:210;;;;:::o;4714:116::-;4784:21;4799:5;4784:21;:::i;:::-;4777:5;4774:32;4764:60;;4820:1;4817;4810:12;4764:60;4714:116;:::o;4836:133::-;4879:5;4917:6;4904:20;4895:29;;4933:30;4957:5;4933:30;:::i;:::-;4836:133;;;;:::o;4975:468::-;5040:6;5048;5097:2;5085:9;5076:7;5072:23;5068:32;5065:119;;;5103:79;;:::i;:::-;5065:119;5223:1;5248:53;5293:7;5284:6;5273:9;5269:22;5248:53;:::i;:::-;5238:63;;5194:117;5350:2;5376:50;5418:7;5409:6;5398:9;5394:22;5376:50;:::i;:::-;5366:60;;5321:115;4975:468;;;;;:::o;5449:118::-;5536:24;5554:5;5536:24;:::i;:::-;5531:3;5524:37;5449:118;;:::o;5573:222::-;5666:4;5704:2;5693:9;5689:18;5681:26;;5717:71;5785:1;5774:9;5770:17;5761:6;5717:71;:::i;:::-;5573:222;;;;:::o;5801:474::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:53;6250:7;6241:6;6230:9;6226:22;6205:53;:::i;:::-;6195:63;;6150:118;5801:474;;;;;:::o;6281:619::-;6358:6;6366;6374;6423:2;6411:9;6402:7;6398:23;6394:32;6391:119;;;6429:79;;:::i;:::-;6391:119;6549:1;6574:53;6619:7;6610:6;6599:9;6595:22;6574:53;:::i;:::-;6564:63;;6520:117;6676:2;6702:53;6747:7;6738:6;6727:9;6723:22;6702:53;:::i;:::-;6692:63;;6647:118;6804:2;6830:53;6875:7;6866:6;6855:9;6851:22;6830:53;:::i;:::-;6820:63;;6775:118;6281:619;;;;;:::o;6906:86::-;6941:7;6981:4;6974:5;6970:16;6959:27;;6906:86;;;:::o;6998:112::-;7081:22;7097:5;7081:22;:::i;:::-;7076:3;7069:35;6998:112;;:::o;7116:214::-;7205:4;7243:2;7232:9;7228:18;7220:26;;7256:67;7320:1;7309:9;7305:17;7296:6;7256:67;:::i;:::-;7116:214;;;;:::o;7336:329::-;7395:6;7444:2;7432:9;7423:7;7419:23;7415:32;7412:119;;;7450:79;;:::i;:::-;7412:119;7570:1;7595:53;7640:7;7631:6;7620:9;7616:22;7595:53;:::i;:::-;7585:63;;7541:117;7336:329;;;;:::o;7671:118::-;7758:24;7776:5;7758:24;:::i;:::-;7753:3;7746:37;7671:118;;:::o;7795:222::-;7888:4;7926:2;7915:9;7911:18;7903:26;;7939:71;8007:1;7996:9;7992:17;7983:6;7939:71;:::i;:::-;7795:222;;;;:::o;8023:323::-;8079:6;8128:2;8116:9;8107:7;8103:23;8099:32;8096:119;;;8134:79;;:::i;:::-;8096:119;8254:1;8279:50;8321:7;8312:6;8301:9;8297:22;8279:50;:::i;:::-;8269:60;;8225:114;8023:323;;;;:::o;8352:474::-;8420:6;8428;8477:2;8465:9;8456:7;8452:23;8448:32;8445:119;;;8483:79;;:::i;:::-;8445:119;8603:1;8628:53;8673:7;8664:6;8653:9;8649:22;8628:53;:::i;:::-;8618:63;;8574:117;8730:2;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8701:118;8352:474;;;;;:::o;8832:182::-;8972:34;8968:1;8960:6;8956:14;8949:58;8832:182;:::o;9020:366::-;9162:3;9183:67;9247:2;9242:3;9183:67;:::i;:::-;9176:74;;9259:93;9348:3;9259:93;:::i;:::-;9377:2;9372:3;9368:12;9361:19;;9020:366;;;:::o;9392:419::-;9558:4;9596:2;9585:9;9581:18;9573:26;;9645:9;9639:4;9635:20;9631:1;9620:9;9616:17;9609:47;9673:131;9799:4;9673:131;:::i;:::-;9665:139;;9392:419;;;:::o;9817:180::-;9865:77;9862:1;9855:88;9962:4;9959:1;9952:15;9986:4;9983:1;9976:15;10003:102;10045:8;10092:5;10089:1;10085:13;10064:34;;10003:102;;;:::o;10111:848::-;10172:5;10179:4;10203:6;10194:15;;10227:5;10218:14;;10241:712;10262:1;10252:8;10249:15;10241:712;;;10357:4;10352:3;10348:14;10342:4;10339:24;10336:50;;;10366:18;;:::i;:::-;10336:50;10416:1;10406:8;10402:16;10399:451;;;10831:4;10824:5;10820:16;10811:25;;10399:451;10881:4;10875;10871:15;10863:23;;10911:32;10934:8;10911:32;:::i;:::-;10899:44;;10241:712;;;10111:848;;;;;;;:::o;10965:1073::-;11019:5;11210:8;11200:40;;11231:1;11222:10;;11233:5;;11200:40;11259:4;11249:36;;11276:1;11267:10;;11278:5;;11249:36;11345:4;11393:1;11388:27;;;;11429:1;11424:191;;;;11338:277;;11388:27;11406:1;11397:10;;11408:5;;;11424:191;11469:3;11459:8;11456:17;11453:43;;;11476:18;;:::i;:::-;11453:43;11525:8;11522:1;11518:16;11509:25;;11560:3;11553:5;11550:14;11547:40;;;11567:18;;:::i;:::-;11547:40;11600:5;;;11338:277;;11724:2;11714:8;11711:16;11705:3;11699:4;11696:13;11692:36;11674:2;11664:8;11661:16;11656:2;11650:4;11647:12;11643:35;11627:111;11624:246;;;11780:8;11774:4;11770:19;11761:28;;11815:3;11808:5;11805:14;11802:40;;;11822:18;;:::i;:::-;11802:40;11855:5;;11624:246;11895:42;11933:3;11923:8;11917:4;11914:1;11895:42;:::i;:::-;11880:57;;;;11969:4;11964:3;11960:14;11953:5;11950:25;11947:51;;;11978:18;;:::i;:::-;11947:51;12027:4;12020:5;12016:16;12007:25;;10965:1073;;;;;;:::o;12044:281::-;12102:5;12126:23;12144:4;12126:23;:::i;:::-;12118:31;;12170:25;12186:8;12170:25;:::i;:::-;12158:37;;12214:104;12251:66;12241:8;12235:4;12214:104;:::i;:::-;12205:113;;12044:281;;;;:::o;12331:410::-;12371:7;12394:20;12412:1;12394:20;:::i;:::-;12389:25;;12428:20;12446:1;12428:20;:::i;:::-;12423:25;;12483:1;12480;12476:9;12505:30;12523:11;12505:30;:::i;:::-;12494:41;;12684:1;12675:7;12671:15;12668:1;12665:22;12645:1;12638:9;12618:83;12595:139;;12714:18;;:::i;:::-;12595:139;12379:362;12331:410;;;;:::o;12747:180::-;12795:77;12792:1;12785:88;12892:4;12889:1;12882:15;12916:4;12913:1;12906:15;12933:185;12973:1;12990:20;13008:1;12990:20;:::i;:::-;12985:25;;13024:20;13042:1;13024:20;:::i;:::-;13019:25;;13063:1;13053:35;;13068:18;;:::i;:::-;13053:35;13110:1;13107;13103:9;13098:14;;12933:185;;;;:::o;13124:157::-;13264:9;13260:1;13252:6;13248:14;13241:33;13124:157;:::o;13287:365::-;13429:3;13450:66;13514:1;13509:3;13450:66;:::i;:::-;13443:73;;13525:93;13614:3;13525:93;:::i;:::-;13643:2;13638:3;13634:12;13627:19;;13287:365;;;:::o;13658:419::-;13824:4;13862:2;13851:9;13847:18;13839:26;;13911:9;13905:4;13901:20;13897:1;13886:9;13882:17;13875:47;13939:131;14065:4;13939:131;:::i;:::-;13931:139;;13658:419;;;:::o;14083:180::-;14131:77;14128:1;14121:88;14228:4;14225:1;14218:15;14252:4;14249:1;14242:15;14269:320;14313:6;14350:1;14344:4;14340:12;14330:22;;14397:1;14391:4;14387:12;14418:18;14408:81;;14474:4;14466:6;14462:17;14452:27;;14408:81;14536:2;14528:6;14525:14;14505:18;14502:38;14499:84;;14555:18;;:::i;:::-;14499:84;14320:269;14269:320;;;:::o;14595:168::-;14735:20;14731:1;14723:6;14719:14;14712:44;14595:168;:::o;14769:366::-;14911:3;14932:67;14996:2;14991:3;14932:67;:::i;:::-;14925:74;;15008:93;15097:3;15008:93;:::i;:::-;15126:2;15121:3;15117:12;15110:19;;14769:366;;;:::o;15141:419::-;15307:4;15345:2;15334:9;15330:18;15322:26;;15394:9;15388:4;15384:20;15380:1;15369:9;15365:17;15358:47;15422:131;15548:4;15422:131;:::i;:::-;15414:139;;15141:419;;;:::o;15566:191::-;15606:3;15625:20;15643:1;15625:20;:::i;:::-;15620:25;;15659:20;15677:1;15659:20;:::i;:::-;15654:25;;15702:1;15699;15695:9;15688:16;;15723:3;15720:1;15717:10;15714:36;;;15730:18;;:::i;:::-;15714:36;15566:191;;;;:::o;15763:162::-;15903:14;15899:1;15891:6;15887:14;15880:38;15763:162;:::o;15931:366::-;16073:3;16094:67;16158:2;16153:3;16094:67;:::i;:::-;16087:74;;16170:93;16259:3;16170:93;:::i;:::-;16288:2;16283:3;16279:12;16272:19;;15931:366;;;:::o;16303:419::-;16469:4;16507:2;16496:9;16492:18;16484:26;;16556:9;16550:4;16546:20;16542:1;16531:9;16527:17;16520:47;16584:131;16710:4;16584:131;:::i;:::-;16576:139;;16303:419;;;:::o;16728:162::-;16868:14;16864:1;16856:6;16852:14;16845:38;16728:162;:::o;16896:366::-;17038:3;17059:67;17123:2;17118:3;17059:67;:::i;:::-;17052:74;;17135:93;17224:3;17135:93;:::i;:::-;17253:2;17248:3;17244:12;17237:19;;16896:366;;;:::o;17268:419::-;17434:4;17472:2;17461:9;17457:18;17449:26;;17521:9;17515:4;17511:20;17507:1;17496:9;17492:17;17485:47;17549:131;17675:4;17549:131;:::i;:::-;17541:139;;17268:419;;;:::o;17693:177::-;17833:29;17829:1;17821:6;17817:14;17810:53;17693:177;:::o;17876:366::-;18018:3;18039:67;18103:2;18098:3;18039:67;:::i;:::-;18032:74;;18115:93;18204:3;18115:93;:::i;:::-;18233:2;18228:3;18224:12;18217:19;;17876:366;;;:::o;18248:419::-;18414:4;18452:2;18441:9;18437:18;18429:26;;18501:9;18495:4;18491:20;18487:1;18476:9;18472:17;18465:47;18529:131;18655:4;18529:131;:::i;:::-;18521:139;;18248:419;;;:::o;18673:180::-;18721:77;18718:1;18711:88;18818:4;18815:1;18808:15;18842:4;18839:1;18832:15;18859:180;18907:77;18904:1;18897:88;19004:4;19001:1;18994:15;19028:4;19025:1;19018:15;19045:143;19102:5;19133:6;19127:13;19118:22;;19149:33;19176:5;19149:33;:::i;:::-;19045:143;;;;:::o;19194:351::-;19264:6;19313:2;19301:9;19292:7;19288:23;19284:32;19281:119;;;19319:79;;:::i;:::-;19281:119;19439:1;19464:64;19520:7;19511:6;19500:9;19496:22;19464:64;:::i;:::-;19454:74;;19410:128;19194:351;;;;:::o;19551:85::-;19596:7;19625:5;19614:16;;19551:85;;;:::o;19642:158::-;19700:9;19733:61;19751:42;19760:32;19786:5;19760:32;:::i;:::-;19751:42;:::i;:::-;19733:61;:::i;:::-;19720:74;;19642:158;;;:::o;19806:147::-;19901:45;19940:5;19901:45;:::i;:::-;19896:3;19889:58;19806:147;;:::o;19959:114::-;20026:6;20060:5;20054:12;20044:22;;19959:114;;;:::o;20079:184::-;20178:11;20212:6;20207:3;20200:19;20252:4;20247:3;20243:14;20228:29;;20079:184;;;;:::o;20269:132::-;20336:4;20359:3;20351:11;;20389:4;20384:3;20380:14;20372:22;;20269:132;;;:::o;20407:108::-;20484:24;20502:5;20484:24;:::i;:::-;20479:3;20472:37;20407:108;;:::o;20521:179::-;20590:10;20611:46;20653:3;20645:6;20611:46;:::i;:::-;20689:4;20684:3;20680:14;20666:28;;20521:179;;;;:::o;20706:113::-;20776:4;20808;20803:3;20799:14;20791:22;;20706:113;;;:::o;20855:732::-;20974:3;21003:54;21051:5;21003:54;:::i;:::-;21073:86;21152:6;21147:3;21073:86;:::i;:::-;21066:93;;21183:56;21233:5;21183:56;:::i;:::-;21262:7;21293:1;21278:284;21303:6;21300:1;21297:13;21278:284;;;21379:6;21373:13;21406:63;21465:3;21450:13;21406:63;:::i;:::-;21399:70;;21492:60;21545:6;21492:60;:::i;:::-;21482:70;;21338:224;21325:1;21322;21318:9;21313:14;;21278:284;;;21282:14;21578:3;21571:10;;20979:608;;;20855:732;;;;:::o;21593:831::-;21856:4;21894:3;21883:9;21879:19;21871:27;;21908:71;21976:1;21965:9;21961:17;21952:6;21908:71;:::i;:::-;21989:80;22065:2;22054:9;22050:18;22041:6;21989:80;:::i;:::-;22116:9;22110:4;22106:20;22101:2;22090:9;22086:18;22079:48;22144:108;22247:4;22238:6;22144:108;:::i;:::-;22136:116;;22262:72;22330:2;22319:9;22315:18;22306:6;22262:72;:::i;:::-;22344:73;22412:3;22401:9;22397:19;22388:6;22344:73;:::i;:::-;21593:831;;;;;;;;:::o;22430:320::-;22545:4;22583:2;22572:9;22568:18;22560:26;;22596:71;22664:1;22653:9;22649:17;22640:6;22596:71;:::i;:::-;22677:66;22739:2;22728:9;22724:18;22715:6;22677:66;:::i;:::-;22430:320;;;;;:::o;22756:169::-;22896:21;22892:1;22884:6;22880:14;22873:45;22756:169;:::o;22931:366::-;23073:3;23094:67;23158:2;23153:3;23094:67;:::i;:::-;23087:74;;23170:93;23259:3;23170:93;:::i;:::-;23288:2;23283:3;23279:12;23272:19;;22931:366;;;:::o;23303:419::-;23469:4;23507:2;23496:9;23492:18;23484:26;;23556:9;23550:4;23546:20;23542:1;23531:9;23527:17;23520:47;23584:131;23710:4;23584:131;:::i;:::-;23576:139;;23303:419;;;:::o;23728:147::-;23829:11;23866:3;23851:18;;23728:147;;;;:::o;23881:114::-;;:::o;24001:398::-;24160:3;24181:83;24262:1;24257:3;24181:83;:::i;:::-;24174:90;;24273:93;24362:3;24273:93;:::i;:::-;24391:1;24386:3;24382:11;24375:18;;24001:398;;;:::o;24405:379::-;24589:3;24611:147;24754:3;24611:147;:::i;:::-;24604:154;;24775:3;24768:10;;24405:379;;;:::o;24790:223::-;24930:34;24926:1;24918:6;24914:14;24907:58;24999:6;24994:2;24986:6;24982:15;24975:31;24790:223;:::o;25019:366::-;25161:3;25182:67;25246:2;25241:3;25182:67;:::i;:::-;25175:74;;25258:93;25347:3;25258:93;:::i;:::-;25376:2;25371:3;25367:12;25360:19;;25019:366;;;:::o;25391:419::-;25557:4;25595:2;25584:9;25580:18;25572:26;;25644:9;25638:4;25634:20;25630:1;25619:9;25615:17;25608:47;25672:131;25798:4;25672:131;:::i;:::-;25664:139;;25391:419;;;:::o;25816:332::-;25937:4;25975:2;25964:9;25960:18;25952:26;;25988:71;26056:1;26045:9;26041:17;26032:6;25988:71;:::i;:::-;26069:72;26137:2;26126:9;26122:18;26113:6;26069:72;:::i;:::-;25816:332;;;;;:::o;26154:164::-;26294:16;26290:1;26282:6;26278:14;26271:40;26154:164;:::o;26324:366::-;26466:3;26487:67;26551:2;26546:3;26487:67;:::i;:::-;26480:74;;26563:93;26652:3;26563:93;:::i;:::-;26681:2;26676:3;26672:12;26665:19;;26324:366;;;:::o;26696:419::-;26862:4;26900:2;26889:9;26885:18;26877:26;;26949:9;26943:4;26939:20;26935:1;26924:9;26920:17;26913:47;26977:131;27103:4;26977:131;:::i;:::-;26969:139;;26696:419;;;:::o;27121:154::-;27261:6;27257:1;27249:6;27245:14;27238:30;27121:154;:::o;27281:365::-;27423:3;27444:66;27508:1;27503:3;27444:66;:::i;:::-;27437:73;;27519:93;27608:3;27519:93;:::i;:::-;27637:2;27632:3;27628:12;27621:19;;27281:365;;;:::o;27652:419::-;27818:4;27856:2;27845:9;27841:18;27833:26;;27905:9;27899:4;27895:20;27891:1;27880:9;27876:17;27869:47;27933:131;28059:4;27933:131;:::i;:::-;27925:139;;27652:419;;;:::o;28077:194::-;28117:4;28137:20;28155:1;28137:20;:::i;:::-;28132:25;;28171:20;28189:1;28171:20;:::i;:::-;28166:25;;28215:1;28212;28208:9;28200:17;;28239:1;28233:4;28230:11;28227:37;;;28244:18;;:::i;:::-;28227:37;28077:194;;;;:::o;28277:224::-;28417:34;28413:1;28405:6;28401:14;28394:58;28486:7;28481:2;28473:6;28469:15;28462:32;28277:224;:::o;28507:366::-;28649:3;28670:67;28734:2;28729:3;28670:67;:::i;:::-;28663:74;;28746:93;28835:3;28746:93;:::i;:::-;28864:2;28859:3;28855:12;28848:19;;28507:366;;;:::o;28879:419::-;29045:4;29083:2;29072:9;29068:18;29060:26;;29132:9;29126:4;29122:20;29118:1;29107:9;29103:17;29096:47;29160:131;29286:4;29160:131;:::i;:::-;29152:139;;28879:419;;;:::o;29304:225::-;29444:34;29440:1;29432:6;29428:14;29421:58;29513:8;29508:2;29500:6;29496:15;29489:33;29304:225;:::o;29535:366::-;29677:3;29698:67;29762:2;29757:3;29698:67;:::i;:::-;29691:74;;29774:93;29863:3;29774:93;:::i;:::-;29892:2;29887:3;29883:12;29876:19;;29535:366;;;:::o;29907:419::-;30073:4;30111:2;30100:9;30096:18;30088:26;;30160:9;30154:4;30150:20;30146:1;30135:9;30131:17;30124:47;30188:131;30314:4;30188:131;:::i;:::-;30180:139;;29907:419;;;:::o;30332:223::-;30472:34;30468:1;30460:6;30456:14;30449:58;30541:6;30536:2;30528:6;30524:15;30517:31;30332:223;:::o;30561:366::-;30703:3;30724:67;30788:2;30783:3;30724:67;:::i;:::-;30717:74;;30800:93;30889:3;30800:93;:::i;:::-;30918:2;30913:3;30909:12;30902:19;;30561:366;;;:::o;30933:419::-;31099:4;31137:2;31126:9;31122:18;31114:26;;31186:9;31180:4;31176:20;31172:1;31161:9;31157:17;31150:47;31214:131;31340:4;31214:131;:::i;:::-;31206:139;;30933:419;;;:::o;31358:221::-;31498:34;31494:1;31486:6;31482:14;31475:58;31567:4;31562:2;31554:6;31550:15;31543:29;31358:221;:::o;31585:366::-;31727:3;31748:67;31812:2;31807:3;31748:67;:::i;:::-;31741:74;;31824:93;31913:3;31824:93;:::i;:::-;31942:2;31937:3;31933:12;31926:19;;31585:366;;;:::o;31957:419::-;32123:4;32161:2;32150:9;32146:18;32138:26;;32210:9;32204:4;32200:20;32196:1;32185:9;32181:17;32174:47;32238:131;32364:4;32238:131;:::i;:::-;32230:139;;31957:419;;;:::o;32382:179::-;32522:31;32518:1;32510:6;32506:14;32499:55;32382:179;:::o;32567:366::-;32709:3;32730:67;32794:2;32789:3;32730:67;:::i;:::-;32723:74;;32806:93;32895:3;32806:93;:::i;:::-;32924:2;32919:3;32915:12;32908:19;;32567:366;;;:::o;32939:419::-;33105:4;33143:2;33132:9;33128:18;33120:26;;33192:9;33186:4;33182:20;33178:1;33167:9;33163:17;33156:47;33220:131;33346:4;33220:131;:::i;:::-;33212:139;;32939:419;;;:::o;33364:171::-;33504:23;33500:1;33492:6;33488:14;33481:47;33364:171;:::o;33541:366::-;33683:3;33704:67;33768:2;33763:3;33704:67;:::i;:::-;33697:74;;33780:93;33869:3;33780:93;:::i;:::-;33898:2;33893:3;33889:12;33882:19;;33541:366;;;:::o;33913:419::-;34079:4;34117:2;34106:9;34102:18;34094:26;;34166:9;34160:4;34156:20;34152:1;34141:9;34137:17;34130:47;34194:131;34320:4;34194:131;:::i;:::-;34186:139;;33913:419;;;:::o;34338:174::-;34478:26;34474:1;34466:6;34462:14;34455:50;34338:174;:::o;34518:366::-;34660:3;34681:67;34745:2;34740:3;34681:67;:::i;:::-;34674:74;;34757:93;34846:3;34757:93;:::i;:::-;34875:2;34870:3;34866:12;34859:19;;34518:366;;;:::o;34890:419::-;35056:4;35094:2;35083:9;35079:18;35071:26;;35143:9;35137:4;35133:20;35129:1;35118:9;35114:17;35107:47;35171:131;35297:4;35171:131;:::i;:::-;35163:139;;34890:419;;;:::o;35315:168::-;35455:20;35451:1;35443:6;35439:14;35432:44;35315:168;:::o;35489:366::-;35631:3;35652:67;35716:2;35711:3;35652:67;:::i;:::-;35645:74;;35728:93;35817:3;35728:93;:::i;:::-;35846:2;35841:3;35837:12;35830:19;;35489:366;;;:::o;35861:419::-;36027:4;36065:2;36054:9;36050:18;36042:26;;36114:9;36108:4;36104:20;36100:1;36089:9;36085:17;36078:47;36142:131;36268:4;36142:131;:::i;:::-;36134:139;;35861:419;;;:::o;36286:224::-;36426:34;36422:1;36414:6;36410:14;36403:58;36495:7;36490:2;36482:6;36478:15;36471:32;36286:224;:::o;36516:366::-;36658:3;36679:67;36743:2;36738:3;36679:67;:::i;:::-;36672:74;;36755:93;36844:3;36755:93;:::i;:::-;36873:2;36868:3;36864:12;36857:19;;36516:366;;;:::o;36888:419::-;37054:4;37092:2;37081:9;37077:18;37069:26;;37141:9;37135:4;37131:20;37127:1;37116:9;37112:17;37105:47;37169:131;37295:4;37169:131;:::i;:::-;37161:139;;36888:419;;;:::o;37313:222::-;37453:34;37449:1;37441:6;37437:14;37430:58;37522:5;37517:2;37509:6;37505:15;37498:30;37313:222;:::o;37541:366::-;37683:3;37704:67;37768:2;37763:3;37704:67;:::i;:::-;37697:74;;37780:93;37869:3;37780:93;:::i;:::-;37898:2;37893:3;37889:12;37882:19;;37541:366;;;:::o;37913:419::-;38079:4;38117:2;38106:9;38102:18;38094:26;;38166:9;38160:4;38156:20;38152:1;38141:9;38137:17;38130:47;38194:131;38320:4;38194:131;:::i;:::-;38186:139;;37913:419;;;:::o;38338:225::-;38478:34;38474:1;38466:6;38462:14;38455:58;38547:8;38542:2;38534:6;38530:15;38523:33;38338:225;:::o;38569:366::-;38711:3;38732:67;38796:2;38791:3;38732:67;:::i;:::-;38725:74;;38808:93;38897:3;38808:93;:::i;:::-;38926:2;38921:3;38917:12;38910:19;;38569:366;;;:::o;38941:419::-;39107:4;39145:2;39134:9;39130:18;39122:26;;39194:9;39188:4;39184:20;39180:1;39169:9;39165:17;39158:47;39222:131;39348:4;39222:131;:::i;:::-;39214:139;;38941:419;;;:::o;39366:173::-;39506:25;39502:1;39494:6;39490:14;39483:49;39366:173;:::o;39545:366::-;39687:3;39708:67;39772:2;39767:3;39708:67;:::i;:::-;39701:74;;39784:93;39873:3;39784:93;:::i;:::-;39902:2;39897:3;39893:12;39886:19;;39545:366;;;:::o;39917:419::-;40083:4;40121:2;40110:9;40106:18;40098:26;;40170:9;40164:4;40160:20;40156:1;40145:9;40141:17;40134:47;40198:131;40324:4;40198:131;:::i;:::-;40190:139;;39917:419;;;:::o;40342:166::-;40482:18;40478:1;40470:6;40466:14;40459:42;40342:166;:::o;40514:366::-;40656:3;40677:67;40741:2;40736:3;40677:67;:::i;:::-;40670:74;;40753:93;40842:3;40753:93;:::i;:::-;40871:2;40866:3;40862:12;40855:19;;40514:366;;;:::o;40886:419::-;41052:4;41090:2;41079:9;41075:18;41067:26;;41139:9;41133:4;41129:20;41125:1;41114:9;41110:17;41103:47;41167:131;41293:4;41167:131;:::i;:::-;41159:139;;40886:419;;;:::o;41311:169::-;41451:21;41447:1;41439:6;41435:14;41428:45;41311:169;:::o;41486:366::-;41628:3;41649:67;41713:2;41708:3;41649:67;:::i;:::-;41642:74;;41725:93;41814:3;41725:93;:::i;:::-;41843:2;41838:3;41834:12;41827:19;;41486:366;;;:::o;41858:419::-;42024:4;42062:2;42051:9;42047:18;42039:26;;42111:9;42105:4;42101:20;42097:1;42086:9;42082:17;42075:47;42139:131;42265:4;42139:131;:::i;:::-;42131:139;;41858:419;;;:::o

Swarm Source

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