BNB Price: $609.74 (+0.33%)
Gas: 1 GWei
 

Overview

Max Total Supply

210,000,000,000TRUMP

Holders

48,360

Total Transfers

-

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
TRUMP

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2025-01-18
*/

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


// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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


// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.20;


/**
 * @dev Interface for the optional metadata functions from the ERC-20 standard.
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol


// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
 * @dev Standard ERC-20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC-721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC-1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

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


// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;





/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC-20
 * applications.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

    mapping(address account => mapping(address spender => 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 returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 returns (uint8) {
        return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual 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 `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` 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 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Skips emitting an {Approval} event indicating an allowance update. This is not
     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
     *
     * 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 `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` 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.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) virtual internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` 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.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     *
     * ```solidity
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

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

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


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


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

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

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


// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)

pragma solidity ^0.8.20;

/**
 * @dev Collection of common custom errors used in multiple contracts
 *
 * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.
 * It is recommended to avoid relying on the error API for critical functionality.
 *
 * _Available since v5.1._
 */
library Errors {
    /**
     * @dev The ETH balance of the account is not enough to perform the operation.
     */
    error InsufficientBalance(uint256 balance, uint256 needed);

    /**
     * @dev A call to an address target failed. The target may have reverted.
     */
    error FailedCall();

    /**
     * @dev The deployment failed.
     */
    error FailedDeployment();

    /**
     * @dev A necessary precompile is missing.
     */
    error MissingPrecompile(address);
}

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


// OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol)

pragma solidity ^0.8.20;


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev There's no code at `target` (it is not a contract).
     */
    error AddressEmptyCode(address target);

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        if (address(this).balance < amount) {
            revert Errors.InsufficientBalance(address(this).balance, amount);
        }

        (bool success, ) = recipient.call{value: amount}("");
        if (!success) {
            revert Errors.FailedCall();
        }
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason or custom error, it is bubbled
     * up by this function (like regular Solidity function calls). However, if
     * the call reverted with no returned reason, this function reverts with a
     * {Errors.FailedCall} error.
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        if (address(this).balance < value) {
            revert Errors.InsufficientBalance(address(this).balance, value);
        }
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
     * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case
     * of an unsuccessful call.
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata
    ) internal view returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            // only check if target is a contract if the call was successful and the return data is empty
            // otherwise we already know that it was a contract
            if (returndata.length == 0 && target.code.length == 0) {
                revert AddressEmptyCode(target);
            }
            return returndata;
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
     * revert reason or with a default {Errors.FailedCall} error.
     */
    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            return returndata;
        }
    }

    /**
     * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.
     */
    function _revert(bytes memory returndata) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            assembly ("memory-safe") {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert Errors.FailedCall();
        }
    }
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: AIGT/TRUMP.sol



pragma solidity ^0.8.0;





interface IPancakePair { 
    function sync() external;
}

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

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

    function WETH() external pure returns (address);

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

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

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

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


contract TRUMP is ERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    bool addLiquidityFlag = false;
    bool swapIng;
    bool public tradingEnable = false;
    uint256 tradeStartTime;

    uint256 public _minWallet = 8*10**18;
    uint256 public minSwapFee = 5000 ether;

    uint256 public maxPancakeBuy = 100_000_000 ether;
    uint256 public maxPancakeSell = 100_000_000 ether;

    uint256 public feeBase = 10000;
    uint256 public feeBurn = 10;
    uint256 public feeMarketing = 1480;
    uint256 public feeBuild = 1480;
    uint256 public feePowers = 30;    
    uint256 public feeTotal = feeBurn + feeMarketing + feePowers + feeBuild;

    mapping(address => bool) _autoPair;
    mapping(address=> bool) private excludeFeeList;    

    address public ownerWallet = 0x721E6263b52490cd68070299DBb287425E6E6705;
    address public marketAddress = 0x910f8BE9cD4c39aEcE71C56c7ECAa3cDf7A5Df51;
    address public technologyAddress = 0xFAbA45CD6beb9fe872c9C608Ad5EcE77c705A748;
    address public basePricePoolAddress = 0xF8C296b453e5d022355B39410b2c1d0cEe2C544C;
    address public presaleAddress = 0x0Bd5c439e869Af831Dc1D8D0bAff78398d81f554;

    address public immutable GOUT = 0xF86AF2FBcf6A0479B21b1d3a4Af3893F63207FE7;
    address public immutable pairETH;
    address public immutable pairGOUT;

    IPancakeRouter router = IPancakeRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
    
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1 hours;
    uint256 public lastLpBurnTime;
    uint256 public percentForLPBurn = 25;
    uint256 public percentDiv = 10000;

    event AutoNukeLP(uint256 lpBalance, uint256 burnAmount, uint256 time);
    event SwapTokenForFee(uint256 ethFeeAmount, uint256 time);
    event ChangeBasePricePoolAddress(address basePricePoolAddress, uint256 time);
    event ChangeRate(uint256 feeBurn, uint256 feeMarketing, uint256 feePowers, uint256 feeBuild, uint256 time);
    event ChangePancakeBuyAndSell(uint256 maxPancakeBuy, uint256 maxPancakeSell, uint256 time);
    

    constructor(address initialOwner) ERC20("TRUMP COIN", "TRUMP") Ownable(initialOwner){
        IPancakeFactory factory = IPancakeFactory(router.factory());
        pairETH = factory.createPair(address(this), router.WETH());
        pairGOUT = factory.createPair(address(this), GOUT);

        _autoPair[pairETH] = true;
        _autoPair[pairGOUT] = true;

        excludeFeeList[ownerWallet] = true;
        excludeFeeList[marketAddress] = true;
        excludeFeeList[technologyAddress] = true;
        excludeFeeList[basePricePoolAddress] = true;
        excludeFeeList[presaleAddress] = true;

        excludeFeeList[address(this)] = true;
        excludeFeeList[address(0xdead)] = true;

        //210_000_000_000
        _mint(address(0xdead), 35_000_000_000 ether);
        _mint(address(this), 60_000_000_000 ether);
        _mint(ownerWallet, 115_000_000_000 ether);

        _approve(address(this), address(router), 210_000_000_000 ether);
    }
    

    function isContract(address addr) public view returns (bool) {
        uint size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }
    
    function isExcludeFee(address account) public view returns (bool) {
        return excludeFeeList[account];
    }

    receive() external payable {}

    function setLaunch(bool value) external onlyOwner {
        require(tradingEnable != value, "launched");
        require(value, "cannot close");
        tradingEnable = value;
        tradeStartTime = block.timestamp;
    }

    function setExcludeFee(
        address[] calldata addrs,
        bool value
    ) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            excludeFeeList[addrs[i]] = value;
        }
    }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        uint256 _div,
        bool _Enabled
    ) external onlyOwner {
        require(_percent <= 500, "percent too high");
        require(_frequencyInSeconds >= 100, "frequency too shrot");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        percentDiv = _div;
        lpBurnEnabled = _Enabled;
    }  

    function addLiquidity() external payable onlyOwner {
        require(!addLiquidityFlag, "already addLiquidity");

        uint256 amountInETH = msg.value/3;//75
        uint256 amountInToken = 30_000_000_000 ether;
        _approve(address(this), address(router), ~uint256(0));
        router.addLiquidityETH{value: amountInETH}(
            address(this),
            amountInToken,
            0,
            0,
            _msgSender(),
            block.timestamp
        );

        uint256 goutAmountIn = IERC20(GOUT).balanceOf(address(this));
        IERC20(GOUT).approve(address(router), goutAmountIn);
        router.addLiquidity(
            address(this),
            GOUT,
            amountInToken,
            goutAmountIn,
            0,
            0,
            _msgSender(),
            block.timestamp
        );

        payable(basePricePoolAddress).transfer(amountInETH.mul(2));

        addLiquidityFlag = true;
    }   

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        if(tradingEnable) {
            if(block.timestamp > tradeStartTime.add(3600)) {
                feeMarketing = 30;
                feeBuild = 30;
                feeTotal = feeBurn + feeMarketing + feePowers + feeBuild;
                maxPancakeBuy = 0;
                maxPancakeSell = 0;
            }
        }
        if(from != address(this) && balanceOf(from).sub(amount) < _minWallet) {
            amount = balanceOf(from).sub(_minWallet);
        }

        if(_autoPair[from] || _autoPair[to]) {
            address _user;
            //buy
            if(_autoPair[from]) {
                _user = to;
                if(maxPancakeBuy != 0  && _user != address(this) && !excludeFeeList[_user]){
                    require(amount <= maxPancakeBuy, "Fail: more than max");
                }
                if (!isExcludeFee(from) && !isExcludeFee(to)) {
                    require(tradingEnable, "not Launch");      
                }
            }
            //sell
            else if(_autoPair[to]) {
                _user = from;
                if(maxPancakeSell != 0 && amount > maxPancakeSell && _user != address(this) && !excludeFeeList[_user]){
                    amount = maxPancakeSell;
                }
            }
        }
        
        if (!isExcludeFee(from) && !isExcludeFee(to)) {
            uint256 fee = (amount * feeTotal) / feeBase;
            super._transfer(from, address(this), fee);
            amount -= fee;

            if (_autoPair[to]) {
                autoBurnUniswapPair();
                if (!swapIng) {
                    swapIng = true;
                    swapTokenForFee();
                    swapIng = false;
                }
            }
        }

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

    function autoBurnUniswapPair() internal {
        if(lpBurnEnabled) {
            if (block.timestamp - lastLpBurnTime > lpBurnFrequency) {
                burnPair(pairETH);
                lastLpBurnTime = block.timestamp;
            }
        }     
    }

    function burnPair(address _pair) internal {
        uint256 liquidityPairBalance = balanceOf(_pair);
        uint256 amountToBurn = (liquidityPairBalance * percentForLPBurn) /
            percentDiv;

        if (amountToBurn > 0) {
            super._transfer(_pair, address(0xdead), amountToBurn);
            IPancakePair(_pair).sync();
            emit AutoNukeLP(
                liquidityPairBalance,
                amountToBurn,
                block.timestamp
            );
        }
    }

    function swapTokenForFee() private {
        uint256 balance = balanceOf(address(this));

        if (balance > minSwapFee) {            
            uint256 amountOut = swapTokenToETH(balance);
            if(amountOut > 0) {
                payable(marketAddress).transfer(
                    (amountOut * feeMarketing) / feeTotal
                );

                payable(technologyAddress).transfer(
                    (amountOut * feeBuild) / feeTotal
                );

                payable(basePricePoolAddress).transfer(
                    (amountOut * feePowers) / feeTotal
                );

                swapETHToToken(
                    address(this),
                    (amountOut * feeBurn) / feeTotal,
                    address(0xdead)
                );

                emit SwapTokenForFee(amountOut, block.timestamp);
            }
        }
    }

    function swapTokenToETH(uint256 tokenAmount) private returns (uint256 amountOut) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 beforeEthBalance = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );  
        uint256 afterEthBalance = address(this).balance;  

        amountOut = afterEthBalance.sub(beforeEthBalance);
    }


    function swapETHToToken(
        address token,
        uint256 amount,
        address to
    ) private returns (uint256 amountOut) {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = token;

        IERC20 erc20 = IERC20(token);
        uint256 beforeBlanace = erc20.balanceOf(to);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        }(0, path, to, block.timestamp);
        uint256 afterBlanace = erc20.balanceOf(to);

        amountOut = afterBlanace.sub(beforeBlanace);
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":false,"internalType":"uint256","name":"lpBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"basePricePoolAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ChangeBasePricePoolAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxPancakeBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxPancakeSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ChangePancakeBuyAndSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeBurn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeMarketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feePowers","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeBuild","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ChangeRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SwapTokenForFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"GOUT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"basePricePoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBuild","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePowers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPancakeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPancakeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairGOUT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDiv","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"uint256","name":"_div","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"technologyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"},{"stateMutability":"payable","type":"receive"}]

60e06040525f600560146101000a81548160ff0219169083151502179055505f600560166101000a81548160ff021916908315150217905550676f05b59d3b20000060075569010f0cf064dd592000006008556a52b7d2dcc80cd2e40000006009556a52b7d2dcc80cd2e4000000600a55612710600b55600a600c556105c8600d556105c8600e55601e600f55600e54600f54600d54600c546100a291906110c0565b6100ac91906110c0565b6100b691906110c0565b60105573721e6263b52490cd68070299dbb287425e6e670560135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073910f8be9cd4c39aece71c56c7ecaa3cdf7a5df5160145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073faba45cd6beb9fe872c9c608ad5ece77c705a74860155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f8c296b453e5d022355b39410b2c1d0cee2c544c60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730bd5c439e869af831dc1d8d0baff78398d81f55460175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f86af2fbcf6a0479b21b1d3a4af3893f63207fe773ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152507310ed43c718714eb63d5aa57b78b54704e256024e60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860146101000a81548160ff021916908315150217905550610e106019556019601b55612710601c5534801561032f575f80fd5b50604051614cd3380380614cd383398181016040528101906103519190611151565b806040518060400160405280600a81526020017f5452554d5020434f494e000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5452554d5000000000000000000000000000000000000000000000000000000081525081600390816103cd91906113ad565b5080600490816103dd91906113ad565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610450575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610447919061148b565b60405180910390fd5b61045f81610b4260201b60201c565b505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ef9190611151565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c653963060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190611151565b6040518363ffffffff1660e01b81526004016105b99291906114a4565b6020604051808303815f875af11580156105d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f99190611151565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b81526004016106699291906114a4565b6020604051808303815f875af1158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a99190611151565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050600160115f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610aa261dead6b71175249d9818853b8000000610c0560201b60201c565b610abe306bc1ded63574de0e4660000000610c0560201b60201c565b610afc60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c017395c53bcaa99b5c38000000610c0560201b60201c565b610b3b3060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c02a68bedbb190931f650000000610c8a60201b60201c565b5050611528565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c75575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c6c919061148b565b60405180910390fd5b610c865f8383610ca260201b60201c565b5050565b610c9d8383836001610ebb60201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cf2578060025f828254610ce691906110c0565b92505081905550610dc0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d7b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d72939291906114da565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e07578060025f8282540392505081905550610e51565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eae919061150f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f2b575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f22919061148b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f9b575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f92919061148b565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611084578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161107b919061150f565b60405180910390a35b50505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110ca8261108a565b91506110d58361108a565b92508282019050808211156110ed576110ec611093565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611120826110f7565b9050919050565b61113081611116565b811461113a575f80fd5b50565b5f8151905061114b81611127565b92915050565b5f60208284031215611166576111656110f3565b5b5f6111738482850161113d565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111f757607f821691505b60208210810361120a576112096111b3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261126c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611231565b6112768683611231565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6112b16112ac6112a78461108a565b61128e565b61108a565b9050919050565b5f819050919050565b6112ca83611297565b6112de6112d6826112b8565b84845461123d565b825550505050565b5f90565b6112f26112e6565b6112fd8184846112c1565b505050565b5b81811015611320576113155f826112ea565b600181019050611303565b5050565b601f8211156113655761133681611210565b61133f84611222565b8101602085101561134e578190505b61136261135a85611222565b830182611302565b50505b505050565b5f82821c905092915050565b5f6113855f198460080261136a565b1980831691505092915050565b5f61139d8383611376565b9150826002028217905092915050565b6113b68261117c565b67ffffffffffffffff8111156113cf576113ce611186565b5b6113d982546111e0565b6113e4828285611324565b5f60209050601f831160018114611415575f8415611403578287015190505b61140d8582611392565b865550611474565b601f19841661142386611210565b5f5b8281101561144a57848901518255600182019150602085019450602081019050611425565b868310156114675784890151611463601f891682611376565b8355505b6001600288020188555050505b505050505050565b61148581611116565b82525050565b5f60208201905061149e5f83018461147c565b92915050565b5f6040820190506114b75f83018561147c565b6114c4602083018461147c565b9392505050565b6114d48161108a565b82525050565b5f6060820190506114ed5f83018661147c565b6114fa60208301856114cb565b61150760408301846114cb565b949350505050565b5f6020820190506115225f8301846114cb565b92915050565b60805160a05160c05161376561156e5f395f610bc601525f81816110340152611f6c01525f8181610e6f015281816111ae01528181611248015261134301526137655ff3fe608060405260043610610254575f3560e01c806379f3913b11610138578063a901992a116100b5578063dc8eea4811610079578063dc8eea4814610887578063dcace9ab146108b1578063dd62ed3e146108ed578063dff8620214610929578063e8078d9414610953578063f2fde38b1461095d5761025b565b8063a901992a146107a7578063a9059cbb146107cf578063b87d50021461080b578063be5ca24914610835578063c222740d1461085f5761025b565b80639452e81a116100fc5780639452e81a146106d557806395623641146106ff57806395d89b411461072957806395e911a814610753578063a4c82a001461077d5761025b565b806379f3913b146106035780638da5cb5b1461062d57806392c892d6146106575780639335dcb71461068157806394417e23146106ab5761025b565b80632e82f1a0116101d157806343801b101161019557806343801b101461050b5780634702838e14610535578063583fef341461055d57806365944a3f1461058757806370a08231146105b1578063715018a6146105ed5761025b565b80632e82f1a014610439578063313ce56714610463578063374994731461048d57806337bfc1ef146104b75780633fd9f32e146104e15761025b565b80631693e8d4116102185780631693e8d41461035557806318160ddd1461037f578063199ffc72146103a957806323b872dd146103d35780632c3e486c1461040f5761025b565b806306fdde031461025f5780630881f55814610289578063095ea7b3146102b3578063122fe685146102ef57806316279055146103195761025b565b3661025b57005b5f80fd5b34801561026a575f80fd5b50610273610985565b6040516102809190612a5a565b60405180910390f35b348015610294575f80fd5b5061029d610a15565b6040516102aa9190612ab9565b60405180910390f35b3480156102be575f80fd5b506102d960048036038101906102d49190612b37565b610a3a565b6040516102e69190612b8f565b60405180910390f35b3480156102fa575f80fd5b50610303610a5c565b6040516103109190612ab9565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a9190612ba8565b610a81565b60405161034c9190612b8f565b60405180910390f35b348015610360575f80fd5b50610369610a92565b6040516103769190612b8f565b60405180910390f35b34801561038a575f80fd5b50610393610aa5565b6040516103a09190612be2565b60405180910390f35b3480156103b4575f80fd5b506103bd610aae565b6040516103ca9190612be2565b60405180910390f35b3480156103de575f80fd5b506103f960048036038101906103f49190612bfb565b610ab4565b6040516104069190612b8f565b60405180910390f35b34801561041a575f80fd5b50610423610ae2565b6040516104309190612be2565b60405180910390f35b348015610444575f80fd5b5061044d610ae8565b60405161045a9190612b8f565b60405180910390f35b34801561046e575f80fd5b50610477610afb565b6040516104849190612c66565b60405180910390f35b348015610498575f80fd5b506104a1610b03565b6040516104ae9190612be2565b60405180910390f35b3480156104c2575f80fd5b506104cb610b09565b6040516104d89190612be2565b60405180910390f35b3480156104ec575f80fd5b506104f5610b0f565b6040516105029190612be2565b60405180910390f35b348015610516575f80fd5b5061051f610b15565b60405161052c9190612be2565b60405180910390f35b348015610540575f80fd5b5061055b60048036038101906105569190612d0a565b610b1b565b005b348015610568575f80fd5b50610571610bbe565b60405161057e9190612be2565b60405180910390f35b348015610592575f80fd5b5061059b610bc4565b6040516105a89190612ab9565b60405180910390f35b3480156105bc575f80fd5b506105d760048036038101906105d29190612ba8565b610be8565b6040516105e49190612be2565b60405180910390f35b3480156105f8575f80fd5b50610601610c2d565b005b34801561060e575f80fd5b50610617610c40565b6040516106249190612be2565b60405180910390f35b348015610638575f80fd5b50610641610c46565b60405161064e9190612ab9565b60405180910390f35b348015610662575f80fd5b5061066b610c6e565b6040516106789190612be2565b60405180910390f35b34801561068c575f80fd5b50610695610c74565b6040516106a29190612ab9565b60405180910390f35b3480156106b6575f80fd5b506106bf610c99565b6040516106cc9190612ab9565b60405180910390f35b3480156106e0575f80fd5b506106e9610cbe565b6040516106f69190612be2565b60405180910390f35b34801561070a575f80fd5b50610713610cc4565b6040516107209190612ab9565b60405180910390f35b348015610734575f80fd5b5061073d610ce9565b60405161074a9190612a5a565b60405180910390f35b34801561075e575f80fd5b50610767610d79565b6040516107749190612be2565b60405180910390f35b348015610788575f80fd5b50610791610d7f565b60405161079e9190612be2565b60405180910390f35b3480156107b2575f80fd5b506107cd60048036038101906107c89190612d67565b610d85565b005b3480156107da575f80fd5b506107f560048036038101906107f09190612b37565b610e4b565b6040516108029190612b8f565b60405180910390f35b348015610816575f80fd5b5061081f610e6d565b60405161082c9190612ab9565b60405180910390f35b348015610840575f80fd5b50610849610e91565b6040516108569190612be2565b60405180910390f35b34801561086a575f80fd5b5061088560048036038101906108809190612dcb565b610e97565b005b348015610892575f80fd5b5061089b610f58565b6040516108a89190612be2565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d29190612ba8565b610f5e565b6040516108e49190612b8f565b60405180910390f35b3480156108f8575f80fd5b50610913600480360381019061090e9190612df6565b610fb0565b6040516109209190612be2565b60405180910390f35b348015610934575f80fd5b5061093d611032565b60405161094a9190612ab9565b60405180910390f35b61095b611056565b005b348015610968575f80fd5b50610983600480360381019061097e9190612ba8565b61146d565b005b60606003805461099490612e61565b80601f01602080910402602001604051908101604052809291908181526020018280546109c090612e61565b8015610a0b5780601f106109e257610100808354040283529160200191610a0b565b820191905f5260205f20905b8154815290600101906020018083116109ee57829003601f168201915b5050505050905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610a446114f1565b9050610a518185856114f8565b600191505092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80823b90505f8111915050919050565b600560169054906101000a900460ff1681565b5f600254905090565b601b5481565b5f80610abe6114f1565b9050610acb85828561150a565b610ad685858561159c565b60019150509392505050565b60195481565b601860149054906101000a900460ff1681565b5f6012905090565b60085481565b60105481565b601c5481565b600f5481565b610b23611af3565b5f5b83839050811015610bb8578160125f868685818110610b4757610b46612e91565b5b9050602002016020810190610b5c9190612ba8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b25565b50505050565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c35611af3565b610c3e5f611b7a565b565b600e5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610cf890612e61565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490612e61565b8015610d6f5780601f10610d4657610100808354040283529160200191610d6f565b820191905f5260205f20905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b600b5481565b601a5481565b610d8d611af3565b6101f4831115610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990612f08565b60405180910390fd5b6064841015610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612f70565b60405180910390fd5b8360198190555082601b8190555081601c8190555080601860146101000a81548160ff02191690831515021790555050505050565b5f80610e556114f1565b9050610e6281858561159c565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60095481565b610e9f611af3565b801515600560169054906101000a900460ff16151503610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90612fd8565b60405180910390fd5b80610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90613040565b60405180910390fd5b80600560166101000a81548160ff0219169083151502179055504260068190555050565b600a5481565b5f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61105e611af3565b600560149054906101000a900460ff16156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a5906130a8565b60405180910390fd5b5f6003346110bc9190613120565b90505f6b60ef6b1aba6f07233000000090506110fb3060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196114f8565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f806111456114f1565b426040518863ffffffff1660e01b815260040161116796959493929190613192565b60606040518083038185885af1158015611183573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111a89190613205565b5050505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112059190612ab9565b602060405180830381865afa158015611220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112449190613255565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016112c2929190613280565b6020604051808303815f875af11580156112de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130291906132bb565b5060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f000000000000000000000000000000000000000000000000000000000000000085855f8061136e6114f1565b426040518963ffffffff1660e01b81526004016113929897969594939291906132e6565b6060604051808303815f875af11580156113ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d29190613205565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611424600286611c3d90919063ffffffff16565b90811502906040515f60405180830381858888f1935050505015801561144c573d5f803e3d5ffd5b506001600560146101000a81548160ff021916908315150217905550505050565b611475611af3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016114dc9190612ab9565b60405180910390fd5b6114ee81611b7a565b50565b5f33905090565b6115058383836001611c52565b505050565b5f6115158484610fb0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115965781811015611587578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161157e93929190613362565b60405180910390fd5b61159584848484035f611c52565b5b50505050565b600560169054906101000a900460ff161561161f576115c8610e10600654611e2190919063ffffffff16565b42111561161e57601e600d81905550601e600e81905550600e54600f54600d54600c546115f59190613397565b6115ff9190613397565b6116099190613397565b6010819055505f6009819055505f600a819055505b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561167657506007546116748261166686610be8565b611e3690919063ffffffff16565b105b1561169b5761169860075461168a85610be8565b611e3690919063ffffffff16565b90505b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611736575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156119df575f60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118e0578290505f600954141580156117cc57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561181f575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561186a57600954821115611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090613414565b60405180910390fd5b5b61187384610f5e565b158015611886575061188483610f5e565b155b156118db57600560169054906101000a900460ff166118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d19061347c565b60405180910390fd5b5b6119dd565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119dc578390505f600a54141580156119455750600a5482115b801561197d57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156119d0575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119db57600a5491505b5b5b505b6119e883610f5e565b1580156119fb57506119f982610f5e565b155b15611ae3575f600b5460105483611a12919061349a565b611a1c9190613120565b9050611a29843083611e4b565b8082611a3591906134db565b915060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ae157611a8e611f3b565b600560159054906101000a900460ff16611ae0576001600560156101000a81548160ff021916908315150217905550611ac5611f9b565b5f600560156101000a81548160ff0219169083151502179055505b5b505b611aee838383611e4b565b505050565b611afb6114f1565b73ffffffffffffffffffffffffffffffffffffffff16611b19610c46565b73ffffffffffffffffffffffffffffffffffffffff1614611b7857611b3c6114f1565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b6f9190612ab9565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183611c4a919061349a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cc2575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611cb99190612ab9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d32575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d299190612ab9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611e1b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611e129190612be2565b60405180910390a35b50505050565b5f8183611e2e9190613397565b905092915050565b5f8183611e4391906134db565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ebb575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611eb29190612ab9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2b575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f229190612ab9565b60405180910390fd5b611f368383836121a9565b505050565b601860149054906101000a900460ff1615611f9957601954601a5442611f6191906134db565b1115611f9857611f907f00000000000000000000000000000000000000000000000000000000000000006123c2565b42601a819055505b5b565b5f611fa530610be8565b90506008548111156121a6575f611fbb8261249d565b90505f8111156121a45760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600d5484612011919061349a565b61201b9190613120565b90811502906040515f60405180830381858888f19350505050158015612043573d5f803e3d5ffd5b5060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600e5484612090919061349a565b61209a9190613120565b90811502906040515f60405180830381858888f193505050501580156120c2573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600f548461210f919061349a565b6121199190613120565b90811502906040515f60405180830381858888f19350505050158015612141573d5f803e3d5ffd5b5061216930601054600c5484612157919061349a565b6121619190613120565b61dead6126c9565b507fbfd09f86688d4875ae5d8fa9b0150047e1d9b731d14715825dba3ba38a8e2d2f814260405161219b92919061350e565b60405180910390a15b505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f9578060025f8282546121ed9190613397565b925050819055506122c7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612282578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161227993929190613362565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230e578060025f8282540392505081905550612358565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123b59190612be2565b60405180910390a3505050565b5f6123cc82610be8565b90505f601c54601b54836123e0919061349a565b6123ea9190613120565b90505f811115612498576124018361dead83611e4b565b8273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612446575f80fd5b505af1158015612458573d5f803e3d5ffd5b505050507f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da682824260405161248f93929190613535565b60405180910390a15b505050565b5f80600267ffffffffffffffff8111156124ba576124b961356a565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b50905030815f815181106124ff576124fe612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c791906135ab565b816001815181106125db576125da612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f47905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b815260040161267b95949392919061368d565b5f604051808303815f87803b158015612692575f80fd5b505af11580156126a4573d5f803e3d5ffd5b505050505f4790506126bf8282611e3690919063ffffffff16565b9350505050919050565b5f80600267ffffffffffffffff8111156126e6576126e561356a565b5b6040519080825280602002602001820160405280156127145781602001602082028036833780820191505090505b50905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612781573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a591906135ab565b815f815181106127b8576127b7612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050848160018151811061280757612806612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8590505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161287f9190612ab9565b602060405180830381865afa15801561289a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128be9190613255565b905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95875f8689426040518663ffffffff1660e01b815260040161292194939291906136e5565b5f604051808303818588803b158015612938575f80fd5b505af115801561294a573d5f803e3d5ffd5b50505050505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016129899190612ab9565b602060405180830381865afa1580156129a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c89190613255565b90506129dd8282611e3690919063ffffffff16565b9450505050509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612a2c826129ea565b612a3681856129f4565b9350612a46818560208601612a04565b612a4f81612a12565b840191505092915050565b5f6020820190508181035f830152612a728184612a22565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612aa382612a7a565b9050919050565b612ab381612a99565b82525050565b5f602082019050612acc5f830184612aaa565b92915050565b5f80fd5b5f80fd5b612ae381612a99565b8114612aed575f80fd5b50565b5f81359050612afe81612ada565b92915050565b5f819050919050565b612b1681612b04565b8114612b20575f80fd5b50565b5f81359050612b3181612b0d565b92915050565b5f8060408385031215612b4d57612b4c612ad2565b5b5f612b5a85828601612af0565b9250506020612b6b85828601612b23565b9150509250929050565b5f8115159050919050565b612b8981612b75565b82525050565b5f602082019050612ba25f830184612b80565b92915050565b5f60208284031215612bbd57612bbc612ad2565b5b5f612bca84828501612af0565b91505092915050565b612bdc81612b04565b82525050565b5f602082019050612bf55f830184612bd3565b92915050565b5f805f60608486031215612c1257612c11612ad2565b5b5f612c1f86828701612af0565b9350506020612c3086828701612af0565b9250506040612c4186828701612b23565b9150509250925092565b5f60ff82169050919050565b612c6081612c4b565b82525050565b5f602082019050612c795f830184612c57565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612ca057612c9f612c7f565b5b8235905067ffffffffffffffff811115612cbd57612cbc612c83565b5b602083019150836020820283011115612cd957612cd8612c87565b5b9250929050565b612ce981612b75565b8114612cf3575f80fd5b50565b5f81359050612d0481612ce0565b92915050565b5f805f60408486031215612d2157612d20612ad2565b5b5f84013567ffffffffffffffff811115612d3e57612d3d612ad6565b5b612d4a86828701612c8b565b93509350506020612d5d86828701612cf6565b9150509250925092565b5f805f8060808587031215612d7f57612d7e612ad2565b5b5f612d8c87828801612b23565b9450506020612d9d87828801612b23565b9350506040612dae87828801612b23565b9250506060612dbf87828801612cf6565b91505092959194509250565b5f60208284031215612de057612ddf612ad2565b5b5f612ded84828501612cf6565b91505092915050565b5f8060408385031215612e0c57612e0b612ad2565b5b5f612e1985828601612af0565b9250506020612e2a85828601612af0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e7857607f821691505b602082108103612e8b57612e8a612e34565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f70657263656e7420746f6f2068696768000000000000000000000000000000005f82015250565b5f612ef26010836129f4565b9150612efd82612ebe565b602082019050919050565b5f6020820190508181035f830152612f1f81612ee6565b9050919050565b7f6672657175656e637920746f6f207368726f74000000000000000000000000005f82015250565b5f612f5a6013836129f4565b9150612f6582612f26565b602082019050919050565b5f6020820190508181035f830152612f8781612f4e565b9050919050565b7f6c61756e636865640000000000000000000000000000000000000000000000005f82015250565b5f612fc26008836129f4565b9150612fcd82612f8e565b602082019050919050565b5f6020820190508181035f830152612fef81612fb6565b9050919050565b7f63616e6e6f7420636c6f736500000000000000000000000000000000000000005f82015250565b5f61302a600c836129f4565b915061303582612ff6565b602082019050919050565b5f6020820190508181035f8301526130578161301e565b9050919050565b7f616c7265616479206164644c69717569646974790000000000000000000000005f82015250565b5f6130926014836129f4565b915061309d8261305e565b602082019050919050565b5f6020820190508181035f8301526130bf81613086565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61312a82612b04565b915061313583612b04565b925082613145576131446130c6565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f61317c61317761317284613150565b613159565b612b04565b9050919050565b61318c81613162565b82525050565b5f60c0820190506131a55f830189612aaa565b6131b26020830188612bd3565b6131bf6040830187613183565b6131cc6060830186613183565b6131d96080830185612aaa565b6131e660a0830184612bd3565b979650505050505050565b5f815190506131ff81612b0d565b92915050565b5f805f6060848603121561321c5761321b612ad2565b5b5f613229868287016131f1565b935050602061323a868287016131f1565b925050604061324b868287016131f1565b9150509250925092565b5f6020828403121561326a57613269612ad2565b5b5f613277848285016131f1565b91505092915050565b5f6040820190506132935f830185612aaa565b6132a06020830184612bd3565b9392505050565b5f815190506132b581612ce0565b92915050565b5f602082840312156132d0576132cf612ad2565b5b5f6132dd848285016132a7565b91505092915050565b5f610100820190506132fa5f83018b612aaa565b613307602083018a612aaa565b6133146040830189612bd3565b6133216060830188612bd3565b61332e6080830187613183565b61333b60a0830186613183565b61334860c0830185612aaa565b61335560e0830184612bd3565b9998505050505050505050565b5f6060820190506133755f830186612aaa565b6133826020830185612bd3565b61338f6040830184612bd3565b949350505050565b5f6133a182612b04565b91506133ac83612b04565b92508282019050808211156133c4576133c36130f3565b5b92915050565b7f4661696c3a206d6f7265207468616e206d6178000000000000000000000000005f82015250565b5f6133fe6013836129f4565b9150613409826133ca565b602082019050919050565b5f6020820190508181035f83015261342b816133f2565b9050919050565b7f6e6f74204c61756e6368000000000000000000000000000000000000000000005f82015250565b5f613466600a836129f4565b915061347182613432565b602082019050919050565b5f6020820190508181035f8301526134938161345a565b9050919050565b5f6134a482612b04565b91506134af83612b04565b92508282026134bd81612b04565b915082820484148315176134d4576134d36130f3565b5b5092915050565b5f6134e582612b04565b91506134f083612b04565b9250828203905081811115613508576135076130f3565b5b92915050565b5f6040820190506135215f830185612bd3565b61352e6020830184612bd3565b9392505050565b5f6060820190506135485f830186612bd3565b6135556020830185612bd3565b6135626040830184612bd3565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506135a581612ada565b92915050565b5f602082840312156135c0576135bf612ad2565b5b5f6135cd84828501613597565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61360881612a99565b82525050565b5f61361983836135ff565b60208301905092915050565b5f602082019050919050565b5f61363b826135d6565b61364581856135e0565b9350613650836135f0565b805f5b83811015613680578151613667888261360e565b975061367283613625565b925050600181019050613653565b5085935050505092915050565b5f60a0820190506136a05f830188612bd3565b6136ad6020830187613183565b81810360408301526136bf8186613631565b90506136ce6060830185612aaa565b6136db6080830184612bd3565b9695505050505050565b5f6080820190506136f85f830187613183565b818103602083015261370a8186613631565b90506137196040830185612aaa565b6137266060830184612bd3565b9594505050505056fea2646970667358221220069c09fabda0da5fb4977f11eca50f3b06bd720c6676e265fa92e600ff0c96d864736f6c634300081a0033000000000000000000000000721e6263b52490cd68070299dbb287425e6e6705

Deployed Bytecode

0x608060405260043610610254575f3560e01c806379f3913b11610138578063a901992a116100b5578063dc8eea4811610079578063dc8eea4814610887578063dcace9ab146108b1578063dd62ed3e146108ed578063dff8620214610929578063e8078d9414610953578063f2fde38b1461095d5761025b565b8063a901992a146107a7578063a9059cbb146107cf578063b87d50021461080b578063be5ca24914610835578063c222740d1461085f5761025b565b80639452e81a116100fc5780639452e81a146106d557806395623641146106ff57806395d89b411461072957806395e911a814610753578063a4c82a001461077d5761025b565b806379f3913b146106035780638da5cb5b1461062d57806392c892d6146106575780639335dcb71461068157806394417e23146106ab5761025b565b80632e82f1a0116101d157806343801b101161019557806343801b101461050b5780634702838e14610535578063583fef341461055d57806365944a3f1461058757806370a08231146105b1578063715018a6146105ed5761025b565b80632e82f1a014610439578063313ce56714610463578063374994731461048d57806337bfc1ef146104b75780633fd9f32e146104e15761025b565b80631693e8d4116102185780631693e8d41461035557806318160ddd1461037f578063199ffc72146103a957806323b872dd146103d35780632c3e486c1461040f5761025b565b806306fdde031461025f5780630881f55814610289578063095ea7b3146102b3578063122fe685146102ef57806316279055146103195761025b565b3661025b57005b5f80fd5b34801561026a575f80fd5b50610273610985565b6040516102809190612a5a565b60405180910390f35b348015610294575f80fd5b5061029d610a15565b6040516102aa9190612ab9565b60405180910390f35b3480156102be575f80fd5b506102d960048036038101906102d49190612b37565b610a3a565b6040516102e69190612b8f565b60405180910390f35b3480156102fa575f80fd5b50610303610a5c565b6040516103109190612ab9565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a9190612ba8565b610a81565b60405161034c9190612b8f565b60405180910390f35b348015610360575f80fd5b50610369610a92565b6040516103769190612b8f565b60405180910390f35b34801561038a575f80fd5b50610393610aa5565b6040516103a09190612be2565b60405180910390f35b3480156103b4575f80fd5b506103bd610aae565b6040516103ca9190612be2565b60405180910390f35b3480156103de575f80fd5b506103f960048036038101906103f49190612bfb565b610ab4565b6040516104069190612b8f565b60405180910390f35b34801561041a575f80fd5b50610423610ae2565b6040516104309190612be2565b60405180910390f35b348015610444575f80fd5b5061044d610ae8565b60405161045a9190612b8f565b60405180910390f35b34801561046e575f80fd5b50610477610afb565b6040516104849190612c66565b60405180910390f35b348015610498575f80fd5b506104a1610b03565b6040516104ae9190612be2565b60405180910390f35b3480156104c2575f80fd5b506104cb610b09565b6040516104d89190612be2565b60405180910390f35b3480156104ec575f80fd5b506104f5610b0f565b6040516105029190612be2565b60405180910390f35b348015610516575f80fd5b5061051f610b15565b60405161052c9190612be2565b60405180910390f35b348015610540575f80fd5b5061055b60048036038101906105569190612d0a565b610b1b565b005b348015610568575f80fd5b50610571610bbe565b60405161057e9190612be2565b60405180910390f35b348015610592575f80fd5b5061059b610bc4565b6040516105a89190612ab9565b60405180910390f35b3480156105bc575f80fd5b506105d760048036038101906105d29190612ba8565b610be8565b6040516105e49190612be2565b60405180910390f35b3480156105f8575f80fd5b50610601610c2d565b005b34801561060e575f80fd5b50610617610c40565b6040516106249190612be2565b60405180910390f35b348015610638575f80fd5b50610641610c46565b60405161064e9190612ab9565b60405180910390f35b348015610662575f80fd5b5061066b610c6e565b6040516106789190612be2565b60405180910390f35b34801561068c575f80fd5b50610695610c74565b6040516106a29190612ab9565b60405180910390f35b3480156106b6575f80fd5b506106bf610c99565b6040516106cc9190612ab9565b60405180910390f35b3480156106e0575f80fd5b506106e9610cbe565b6040516106f69190612be2565b60405180910390f35b34801561070a575f80fd5b50610713610cc4565b6040516107209190612ab9565b60405180910390f35b348015610734575f80fd5b5061073d610ce9565b60405161074a9190612a5a565b60405180910390f35b34801561075e575f80fd5b50610767610d79565b6040516107749190612be2565b60405180910390f35b348015610788575f80fd5b50610791610d7f565b60405161079e9190612be2565b60405180910390f35b3480156107b2575f80fd5b506107cd60048036038101906107c89190612d67565b610d85565b005b3480156107da575f80fd5b506107f560048036038101906107f09190612b37565b610e4b565b6040516108029190612b8f565b60405180910390f35b348015610816575f80fd5b5061081f610e6d565b60405161082c9190612ab9565b60405180910390f35b348015610840575f80fd5b50610849610e91565b6040516108569190612be2565b60405180910390f35b34801561086a575f80fd5b5061088560048036038101906108809190612dcb565b610e97565b005b348015610892575f80fd5b5061089b610f58565b6040516108a89190612be2565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d29190612ba8565b610f5e565b6040516108e49190612b8f565b60405180910390f35b3480156108f8575f80fd5b50610913600480360381019061090e9190612df6565b610fb0565b6040516109209190612be2565b60405180910390f35b348015610934575f80fd5b5061093d611032565b60405161094a9190612ab9565b60405180910390f35b61095b611056565b005b348015610968575f80fd5b50610983600480360381019061097e9190612ba8565b61146d565b005b60606003805461099490612e61565b80601f01602080910402602001604051908101604052809291908181526020018280546109c090612e61565b8015610a0b5780601f106109e257610100808354040283529160200191610a0b565b820191905f5260205f20905b8154815290600101906020018083116109ee57829003601f168201915b5050505050905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610a446114f1565b9050610a518185856114f8565b600191505092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80823b90505f8111915050919050565b600560169054906101000a900460ff1681565b5f600254905090565b601b5481565b5f80610abe6114f1565b9050610acb85828561150a565b610ad685858561159c565b60019150509392505050565b60195481565b601860149054906101000a900460ff1681565b5f6012905090565b60085481565b60105481565b601c5481565b600f5481565b610b23611af3565b5f5b83839050811015610bb8578160125f868685818110610b4757610b46612e91565b5b9050602002016020810190610b5c9190612ba8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b25565b50505050565b600c5481565b7f0000000000000000000000008ad32d934ec7e461b8b8ae790c0f69e9a09d95fe81565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c35611af3565b610c3e5f611b7a565b565b600e5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610cf890612e61565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490612e61565b8015610d6f5780601f10610d4657610100808354040283529160200191610d6f565b820191905f5260205f20905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b600b5481565b601a5481565b610d8d611af3565b6101f4831115610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990612f08565b60405180910390fd5b6064841015610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612f70565b60405180910390fd5b8360198190555082601b8190555081601c8190555080601860146101000a81548160ff02191690831515021790555050505050565b5f80610e556114f1565b9050610e6281858561159c565b600191505092915050565b7f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe781565b60095481565b610e9f611af3565b801515600560169054906101000a900460ff16151503610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90612fd8565b60405180910390fd5b80610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90613040565b60405180910390fd5b80600560166101000a81548160ff0219169083151502179055504260068190555050565b600a5481565b5f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000dbbe36bd8ae68383fd2ea2b3fd9b82348e72315181565b61105e611af3565b600560149054906101000a900460ff16156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a5906130a8565b60405180910390fd5b5f6003346110bc9190613120565b90505f6b60ef6b1aba6f07233000000090506110fb3060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196114f8565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f806111456114f1565b426040518863ffffffff1660e01b815260040161116796959493929190613192565b60606040518083038185885af1158015611183573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111a89190613205565b5050505f7f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112059190612ab9565b602060405180830381865afa158015611220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112449190613255565b90507f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe773ffffffffffffffffffffffffffffffffffffffff1663095ea7b360185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016112c2929190613280565b6020604051808303815f875af11580156112de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130291906132bb565b5060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe785855f8061136e6114f1565b426040518963ffffffff1660e01b81526004016113929897969594939291906132e6565b6060604051808303815f875af11580156113ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d29190613205565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611424600286611c3d90919063ffffffff16565b90811502906040515f60405180830381858888f1935050505015801561144c573d5f803e3d5ffd5b506001600560146101000a81548160ff021916908315150217905550505050565b611475611af3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016114dc9190612ab9565b60405180910390fd5b6114ee81611b7a565b50565b5f33905090565b6115058383836001611c52565b505050565b5f6115158484610fb0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115965781811015611587578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161157e93929190613362565b60405180910390fd5b61159584848484035f611c52565b5b50505050565b600560169054906101000a900460ff161561161f576115c8610e10600654611e2190919063ffffffff16565b42111561161e57601e600d81905550601e600e81905550600e54600f54600d54600c546115f59190613397565b6115ff9190613397565b6116099190613397565b6010819055505f6009819055505f600a819055505b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561167657506007546116748261166686610be8565b611e3690919063ffffffff16565b105b1561169b5761169860075461168a85610be8565b611e3690919063ffffffff16565b90505b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611736575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156119df575f60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118e0578290505f600954141580156117cc57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561181f575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561186a57600954821115611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090613414565b60405180910390fd5b5b61187384610f5e565b158015611886575061188483610f5e565b155b156118db57600560169054906101000a900460ff166118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d19061347c565b60405180910390fd5b5b6119dd565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119dc578390505f600a54141580156119455750600a5482115b801561197d57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156119d0575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119db57600a5491505b5b5b505b6119e883610f5e565b1580156119fb57506119f982610f5e565b155b15611ae3575f600b5460105483611a12919061349a565b611a1c9190613120565b9050611a29843083611e4b565b8082611a3591906134db565b915060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ae157611a8e611f3b565b600560159054906101000a900460ff16611ae0576001600560156101000a81548160ff021916908315150217905550611ac5611f9b565b5f600560156101000a81548160ff0219169083151502179055505b5b505b611aee838383611e4b565b505050565b611afb6114f1565b73ffffffffffffffffffffffffffffffffffffffff16611b19610c46565b73ffffffffffffffffffffffffffffffffffffffff1614611b7857611b3c6114f1565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b6f9190612ab9565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183611c4a919061349a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cc2575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611cb99190612ab9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d32575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d299190612ab9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611e1b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611e129190612be2565b60405180910390a35b50505050565b5f8183611e2e9190613397565b905092915050565b5f8183611e4391906134db565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ebb575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611eb29190612ab9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2b575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f229190612ab9565b60405180910390fd5b611f368383836121a9565b505050565b601860149054906101000a900460ff1615611f9957601954601a5442611f6191906134db565b1115611f9857611f907f000000000000000000000000dbbe36bd8ae68383fd2ea2b3fd9b82348e7231516123c2565b42601a819055505b5b565b5f611fa530610be8565b90506008548111156121a6575f611fbb8261249d565b90505f8111156121a45760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600d5484612011919061349a565b61201b9190613120565b90811502906040515f60405180830381858888f19350505050158015612043573d5f803e3d5ffd5b5060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600e5484612090919061349a565b61209a9190613120565b90811502906040515f60405180830381858888f193505050501580156120c2573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600f548461210f919061349a565b6121199190613120565b90811502906040515f60405180830381858888f19350505050158015612141573d5f803e3d5ffd5b5061216930601054600c5484612157919061349a565b6121619190613120565b61dead6126c9565b507fbfd09f86688d4875ae5d8fa9b0150047e1d9b731d14715825dba3ba38a8e2d2f814260405161219b92919061350e565b60405180910390a15b505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f9578060025f8282546121ed9190613397565b925050819055506122c7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612282578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161227993929190613362565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230e578060025f8282540392505081905550612358565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123b59190612be2565b60405180910390a3505050565b5f6123cc82610be8565b90505f601c54601b54836123e0919061349a565b6123ea9190613120565b90505f811115612498576124018361dead83611e4b565b8273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612446575f80fd5b505af1158015612458573d5f803e3d5ffd5b505050507f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da682824260405161248f93929190613535565b60405180910390a15b505050565b5f80600267ffffffffffffffff8111156124ba576124b961356a565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b50905030815f815181106124ff576124fe612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c791906135ab565b816001815181106125db576125da612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f47905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b815260040161267b95949392919061368d565b5f604051808303815f87803b158015612692575f80fd5b505af11580156126a4573d5f803e3d5ffd5b505050505f4790506126bf8282611e3690919063ffffffff16565b9350505050919050565b5f80600267ffffffffffffffff8111156126e6576126e561356a565b5b6040519080825280602002602001820160405280156127145781602001602082028036833780820191505090505b50905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612781573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a591906135ab565b815f815181106127b8576127b7612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050848160018151811061280757612806612e91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8590505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161287f9190612ab9565b602060405180830381865afa15801561289a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128be9190613255565b905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95875f8689426040518663ffffffff1660e01b815260040161292194939291906136e5565b5f604051808303818588803b158015612938575f80fd5b505af115801561294a573d5f803e3d5ffd5b50505050505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016129899190612ab9565b602060405180830381865afa1580156129a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c89190613255565b90506129dd8282611e3690919063ffffffff16565b9450505050509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612a2c826129ea565b612a3681856129f4565b9350612a46818560208601612a04565b612a4f81612a12565b840191505092915050565b5f6020820190508181035f830152612a728184612a22565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612aa382612a7a565b9050919050565b612ab381612a99565b82525050565b5f602082019050612acc5f830184612aaa565b92915050565b5f80fd5b5f80fd5b612ae381612a99565b8114612aed575f80fd5b50565b5f81359050612afe81612ada565b92915050565b5f819050919050565b612b1681612b04565b8114612b20575f80fd5b50565b5f81359050612b3181612b0d565b92915050565b5f8060408385031215612b4d57612b4c612ad2565b5b5f612b5a85828601612af0565b9250506020612b6b85828601612b23565b9150509250929050565b5f8115159050919050565b612b8981612b75565b82525050565b5f602082019050612ba25f830184612b80565b92915050565b5f60208284031215612bbd57612bbc612ad2565b5b5f612bca84828501612af0565b91505092915050565b612bdc81612b04565b82525050565b5f602082019050612bf55f830184612bd3565b92915050565b5f805f60608486031215612c1257612c11612ad2565b5b5f612c1f86828701612af0565b9350506020612c3086828701612af0565b9250506040612c4186828701612b23565b9150509250925092565b5f60ff82169050919050565b612c6081612c4b565b82525050565b5f602082019050612c795f830184612c57565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612ca057612c9f612c7f565b5b8235905067ffffffffffffffff811115612cbd57612cbc612c83565b5b602083019150836020820283011115612cd957612cd8612c87565b5b9250929050565b612ce981612b75565b8114612cf3575f80fd5b50565b5f81359050612d0481612ce0565b92915050565b5f805f60408486031215612d2157612d20612ad2565b5b5f84013567ffffffffffffffff811115612d3e57612d3d612ad6565b5b612d4a86828701612c8b565b93509350506020612d5d86828701612cf6565b9150509250925092565b5f805f8060808587031215612d7f57612d7e612ad2565b5b5f612d8c87828801612b23565b9450506020612d9d87828801612b23565b9350506040612dae87828801612b23565b9250506060612dbf87828801612cf6565b91505092959194509250565b5f60208284031215612de057612ddf612ad2565b5b5f612ded84828501612cf6565b91505092915050565b5f8060408385031215612e0c57612e0b612ad2565b5b5f612e1985828601612af0565b9250506020612e2a85828601612af0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e7857607f821691505b602082108103612e8b57612e8a612e34565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f70657263656e7420746f6f2068696768000000000000000000000000000000005f82015250565b5f612ef26010836129f4565b9150612efd82612ebe565b602082019050919050565b5f6020820190508181035f830152612f1f81612ee6565b9050919050565b7f6672657175656e637920746f6f207368726f74000000000000000000000000005f82015250565b5f612f5a6013836129f4565b9150612f6582612f26565b602082019050919050565b5f6020820190508181035f830152612f8781612f4e565b9050919050565b7f6c61756e636865640000000000000000000000000000000000000000000000005f82015250565b5f612fc26008836129f4565b9150612fcd82612f8e565b602082019050919050565b5f6020820190508181035f830152612fef81612fb6565b9050919050565b7f63616e6e6f7420636c6f736500000000000000000000000000000000000000005f82015250565b5f61302a600c836129f4565b915061303582612ff6565b602082019050919050565b5f6020820190508181035f8301526130578161301e565b9050919050565b7f616c7265616479206164644c69717569646974790000000000000000000000005f82015250565b5f6130926014836129f4565b915061309d8261305e565b602082019050919050565b5f6020820190508181035f8301526130bf81613086565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61312a82612b04565b915061313583612b04565b925082613145576131446130c6565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f61317c61317761317284613150565b613159565b612b04565b9050919050565b61318c81613162565b82525050565b5f60c0820190506131a55f830189612aaa565b6131b26020830188612bd3565b6131bf6040830187613183565b6131cc6060830186613183565b6131d96080830185612aaa565b6131e660a0830184612bd3565b979650505050505050565b5f815190506131ff81612b0d565b92915050565b5f805f6060848603121561321c5761321b612ad2565b5b5f613229868287016131f1565b935050602061323a868287016131f1565b925050604061324b868287016131f1565b9150509250925092565b5f6020828403121561326a57613269612ad2565b5b5f613277848285016131f1565b91505092915050565b5f6040820190506132935f830185612aaa565b6132a06020830184612bd3565b9392505050565b5f815190506132b581612ce0565b92915050565b5f602082840312156132d0576132cf612ad2565b5b5f6132dd848285016132a7565b91505092915050565b5f610100820190506132fa5f83018b612aaa565b613307602083018a612aaa565b6133146040830189612bd3565b6133216060830188612bd3565b61332e6080830187613183565b61333b60a0830186613183565b61334860c0830185612aaa565b61335560e0830184612bd3565b9998505050505050505050565b5f6060820190506133755f830186612aaa565b6133826020830185612bd3565b61338f6040830184612bd3565b949350505050565b5f6133a182612b04565b91506133ac83612b04565b92508282019050808211156133c4576133c36130f3565b5b92915050565b7f4661696c3a206d6f7265207468616e206d6178000000000000000000000000005f82015250565b5f6133fe6013836129f4565b9150613409826133ca565b602082019050919050565b5f6020820190508181035f83015261342b816133f2565b9050919050565b7f6e6f74204c61756e6368000000000000000000000000000000000000000000005f82015250565b5f613466600a836129f4565b915061347182613432565b602082019050919050565b5f6020820190508181035f8301526134938161345a565b9050919050565b5f6134a482612b04565b91506134af83612b04565b92508282026134bd81612b04565b915082820484148315176134d4576134d36130f3565b5b5092915050565b5f6134e582612b04565b91506134f083612b04565b9250828203905081811115613508576135076130f3565b5b92915050565b5f6040820190506135215f830185612bd3565b61352e6020830184612bd3565b9392505050565b5f6060820190506135485f830186612bd3565b6135556020830185612bd3565b6135626040830184612bd3565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506135a581612ada565b92915050565b5f602082840312156135c0576135bf612ad2565b5b5f6135cd84828501613597565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61360881612a99565b82525050565b5f61361983836135ff565b60208301905092915050565b5f602082019050919050565b5f61363b826135d6565b61364581856135e0565b9350613650836135f0565b805f5b83811015613680578151613667888261360e565b975061367283613625565b925050600181019050613653565b5085935050505092915050565b5f60a0820190506136a05f830188612bd3565b6136ad6020830187613183565b81810360408301526136bf8186613631565b90506136ce6060830185612aaa565b6136db6080830184612bd3565b9695505050505050565b5f6080820190506136f85f830187613183565b818103602083015261370a8186613631565b90506137196040830185612aaa565b6137266060830184612bd3565b9594505050505056fea2646970667358221220069c09fabda0da5fb4977f11eca50f3b06bd720c6676e265fa92e600ff0c96d864736f6c634300081a0033

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

000000000000000000000000721e6263b52490cd68070299dbb287425e6e6705

-----Decoded View---------------
Arg [0] : initialOwner (address): 0x721E6263b52490cd68070299DBb287425E6E6705

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000721e6263b52490cd68070299dbb287425e6e6705


Deployed Bytecode Sourcemap

41171:10257:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13038:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42218:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15331:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42305:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44284:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41333:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14140:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42767:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16131:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42684:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42645:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13991:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41447:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41796:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42810:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41756:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44877:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41644:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42508:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14302:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24769:103;;;;;;;;;;;;;:::i;:::-;;41719:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24094:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41404:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41976:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42134:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41678:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42054:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13248:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41607:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42731:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45110:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14625:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42388:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41494:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44641:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41549:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44481:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14870:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42469:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45570:972;;;:::i;:::-;;25027:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13038:91;13083:13;13116:5;13109:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13038:91;:::o;42218:80::-;;;;;;;;;;;;;:::o;15331:190::-;15404:4;15421:13;15437:12;:10;:12::i;:::-;15421:28;;15460:31;15469:5;15476:7;15485:5;15460:8;:31::i;:::-;15509:4;15502:11;;;15331:190;;;;:::o;42305:74::-;;;;;;;;;;;;;:::o;44284:185::-;44339:4;44356:9;44420:4;44408:17;44400:25;;44460:1;44453:4;:8;44446:15;;;44284:185;;;:::o;41333:33::-;;;;;;;;;;;;;:::o;14140:99::-;14192:7;14219:12;;14212:19;;14140:99;:::o;42767:36::-;;;;:::o;16131:249::-;16218:4;16235:15;16253:12;:10;:12::i;:::-;16235:30;;16276:37;16292:4;16298:7;16307:5;16276:15;:37::i;:::-;16324:26;16334:4;16340:2;16344:5;16324:9;:26::i;:::-;16368:4;16361:11;;;16131:249;;;;;:::o;42684:40::-;;;;:::o;42645:32::-;;;;;;;;;;;;;:::o;13991:84::-;14040:5;14065:2;14058:9;;13991:84;:::o;41447:38::-;;;;:::o;41796:71::-;;;;:::o;42810:33::-;;;;:::o;41756:29::-;;;;:::o;44877:225::-;23980:13;:11;:13::i;:::-;44998:9:::1;44993:102;45017:5;;:12;;45013:1;:16;44993:102;;;45078:5;45051:14;:24;45066:5;;45072:1;45066:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;45051:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;45031:3;;;;;;;44993:102;;;;44877:225:::0;;;:::o;41644:27::-;;;;:::o;42508:33::-;;;:::o;14302:118::-;14367:7;14394:9;:18;14404:7;14394:18;;;;;;;;;;;;;;;;14387:25;;14302:118;;;:::o;24769:103::-;23980:13;:11;:13::i;:::-;24834:30:::1;24861:1;24834:18;:30::i;:::-;24769:103::o:0;41719:30::-;;;;:::o;24094:87::-;24140:7;24167:6;;;;;;;;;;;24160:13;;24094:87;:::o;41404:36::-;;;;:::o;41976:71::-;;;;;;;;;;;;;:::o;42134:77::-;;;;;;;;;;;;;:::o;41678:34::-;;;;:::o;42054:73::-;;;;;;;;;;;;;:::o;13248:95::-;13295:13;13328:7;13321:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:95;:::o;41607:30::-;;;;:::o;42731:29::-;;;;:::o;45110:450::-;23980:13;:11;:13::i;:::-;45310:3:::1;45298:8;:15;;45290:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;45376:3;45353:19;:26;;45345:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;45432:19;45414:15;:37;;;;45481:8;45462:16;:27;;;;45513:4;45500:10;:17;;;;45544:8;45528:13;;:24;;;;;;;;;;;;;;;;;;45110:450:::0;;;;:::o;14625:182::-;14694:4;14711:13;14727:12;:10;:12::i;:::-;14711:28;;14750:27;14760:5;14767:2;14771:5;14750:9;:27::i;:::-;14795:4;14788:11;;;14625:182;;;;:::o;42388:74::-;;;:::o;41494:48::-;;;;:::o;44641:228::-;23980:13;:11;:13::i;:::-;44727:5:::1;44710:22;;:13;;;;;;;;;;;:22;;::::0;44702:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;44764:5;44756:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;44813:5;44797:13;;:21;;;;;;;;;;;;;;;;;;44846:15;44829:14;:32;;;;44641:228:::0;:::o;41549:49::-;;;;:::o;44481:115::-;44541:4;44565:14;:23;44580:7;44565:23;;;;;;;;;;;;;;;;;;;;;;;;;44558:30;;44481:115;;;:::o;14870:142::-;14950:7;14977:11;:18;14989:5;14977:18;;;;;;;;;;;;;;;:27;14996:7;14977:27;;;;;;;;;;;;;;;;14970:34;;14870:142;;;;:::o;42469:32::-;;;:::o;45570:972::-;23980:13;:11;:13::i;:::-;45641:16:::1;;;;;;;;;;;45640:17;45632:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;45695:19;45727:1;45717:9;:11;;;;:::i;:::-;45695:33;;45743:21;45767:20;45743:44;;45798:53;45815:4;45830:6;;;;;;;;;;;45848:1;45839:11;45798:8;:53::i;:::-;45862:6;;;;;;;;;;;:22;;;45892:11;45927:4;45947:13;45975:1;45991::::0;46007:12:::1;:10;:12::i;:::-;46034:15;45862:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;46073:20;46103:4;46096:22;;;46127:4;46096:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46073:60;;46151:4;46144:20;;;46173:6;;;;;;;;;;;46182:12;46144:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46206:6;;;;;;;;;;;:19;;;46248:4;46268;46287:13;46315:12;46342:1;46358::::0;46374:12:::1;:10;:12::i;:::-;46401:15;46206:221;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;46448:20;;;;;;;;;;;46440:38;;:58;46479:18;46495:1;46479:11;:15;;:18;;;;:::i;:::-;46440:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;46530:4;46511:16;;:23;;;;;;;;;;;;;;;;;;45621:921;;;45570:972::o:0;25027:220::-;23980:13;:11;:13::i;:::-;25132:1:::1;25112:22;;:8;:22;;::::0;25108:93:::1;;25186:1;25158:31;;;;;;;;;;;:::i;:::-;;;;;;;;25108:93;25211:28;25230:8;25211:18;:28::i;:::-;25027:220:::0;:::o;4337:98::-;4390:7;4417:10;4410:17;;4337:98;:::o;20198:130::-;20283:37;20292:5;20299:7;20308:5;20315:4;20283:8;:37::i;:::-;20198:130;;;:::o;21930:487::-;22030:24;22057:25;22067:5;22074:7;22057:9;:25::i;:::-;22030:52;;22117:17;22097:16;:37;22093:317;;22174:5;22155:16;:24;22151:132;;;22234:7;22243:16;22261:5;22207:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;22151:132;22326:57;22335:5;22342:7;22370:5;22351:16;:24;22377:5;22326:8;:57::i;:::-;22093:317;22019:398;21930:487;;;:::o;46553:1950::-;46688:13;;;;;;;;;;;46685:323;;;46739:24;46758:4;46739:14;;:18;;:24;;;;:::i;:::-;46721:15;:42;46718:279;;;46799:2;46784:12;:17;;;;46831:2;46820:8;:13;;;;46900:8;;46888:9;;46873:12;;46863:7;;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:45;;;;:::i;:::-;46852:8;:56;;;;46943:1;46927:13;:17;;;;46980:1;46963:14;:18;;;;46718:279;46685:323;47037:4;47021:21;;:4;:21;;;;:65;;;;;47076:10;;47046:27;47066:6;47046:15;47056:4;47046:9;:15::i;:::-;:19;;:27;;;;:::i;:::-;:40;47021:65;47018:137;;;47112:31;47132:10;;47112:15;47122:4;47112:9;:15::i;:::-;:19;;:31;;;;:::i;:::-;47103:40;;47018:137;47170:9;:15;47180:4;47170:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;47189:9;:13;47199:2;47189:13;;;;;;;;;;;;;;;;;;;;;;;;;47170:32;47167:805;;;47219:13;47269:9;:15;47279:4;47269:15;;;;;;;;;;;;;;;;;;;;;;;;;47266:695;;;47313:2;47305:10;;47354:1;47337:13;;:18;;:45;;;;;47377:4;47360:22;;:5;:22;;;;47337:45;:71;;;;;47387:14;:21;47402:5;47387:21;;;;;;;;;;;;;;;;;;;;;;;;;47386:22;47337:71;47334:173;;;47450:13;;47440:6;:23;;47432:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;47334:173;47530:18;47543:4;47530:12;:18::i;:::-;47529:19;:40;;;;;47553:16;47566:2;47553:12;:16::i;:::-;47552:17;47529:40;47525:131;;;47602:13;;;;;;;;;;;47594:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;47525:131;47266:695;;;47713:9;:13;47723:2;47713:13;;;;;;;;;;;;;;;;;;;;;;;;;47710:251;;;47755:4;47747:12;;47799:1;47781:14;;:19;;:46;;;;;47813:14;;47804:6;:23;47781:46;:72;;;;;47848:4;47831:22;;:5;:22;;;;47781:72;:98;;;;;47858:14;:21;47873:5;47858:21;;;;;;;;;;;;;;;;;;;;;;;;;47857:22;47781:98;47778:168;;;47912:14;;47903:23;;47778:168;47710:251;47266:695;47204:768;47167:805;47997:18;48010:4;47997:12;:18::i;:::-;47996:19;:40;;;;;48020:16;48033:2;48020:12;:16::i;:::-;48019:17;47996:40;47992:458;;;48053:11;48089:7;;48077:8;;48068:6;:17;;;;:::i;:::-;48067:29;;;;:::i;:::-;48053:43;;48111:41;48127:4;48141;48148:3;48111:15;:41::i;:::-;48177:3;48167:13;;;;;:::i;:::-;;;48201:9;:13;48211:2;48201:13;;;;;;;;;;;;;;;;;;;;;;;;;48197:242;;;48235:21;:19;:21::i;:::-;48280:7;;;;;;;;;;;48275:149;;48322:4;48312:7;;:14;;;;;;;;;;;;;;;;;;48349:17;:15;:17::i;:::-;48399:5;48389:7;;:15;;;;;;;;;;;;;;;;;;48275:149;48197:242;48038:412;47992:458;48462:33;48478:4;48484:2;48488:6;48462:15;:33::i;:::-;46553:1950;;;:::o;24259:166::-;24330:12;:10;:12::i;:::-;24319:23;;:7;:5;:7::i;:::-;:23;;;24315:103;;24393:12;:10;:12::i;:::-;24366:40;;;;;;;;;;;:::i;:::-;;;;;;;;24315:103;24259:166::o;25407:191::-;25481:16;25500:6;;;;;;;;;;;25481:25;;25526:8;25517:6;;:17;;;;;;;;;;;;;;;;;;25581:8;25550:40;;25571:8;25550:40;;;;;;;;;;;;25470:128;25407:191;:::o;36343:98::-;36401:7;36432:1;36428;:5;;;;:::i;:::-;36421:12;;36343:98;;;;:::o;21195:443::-;21325:1;21308:19;;:5;:19;;;21304:91;;21380:1;21351:32;;;;;;;;;;;:::i;:::-;;;;;;;;21304:91;21428:1;21409:21;;:7;:21;;;21405:92;;21482:1;21454:31;;;;;;;;;;;:::i;:::-;;;;;;;;21405:92;21537:5;21507:11;:18;21519:5;21507:18;;;;;;;;;;;;;;;:27;21526:7;21507:27;;;;;;;;;;;;;;;:35;;;;21557:9;21553:78;;;21604:7;21588:31;;21597:5;21588:31;;;21613:5;21588:31;;;;;;:::i;:::-;;;;;;;;21553:78;21195:443;;;;:::o;35605:98::-;35663:7;35694:1;35690;:5;;;;:::i;:::-;35683:12;;35605:98;;;;:::o;35986:::-;36044:7;36075:1;36071;:5;;;;:::i;:::-;36064:12;;35986:98;;;;:::o;16765:316::-;16873:1;16857:18;;:4;:18;;;16853:88;;16926:1;16899:30;;;;;;;;;;;:::i;:::-;;;;;;;;16853:88;16969:1;16955:16;;:2;:16;;;16951:88;;17024:1;16995:32;;;;;;;;;;;:::i;:::-;;;;;;;;16951:88;17049:24;17057:4;17063:2;17067:5;17049:7;:24::i;:::-;16765:316;;;:::o;48511:266::-;48565:13;;;;;;;;;;;48562:203;;;48634:15;;48617:14;;48599:15;:32;;;;:::i;:::-;:50;48595:159;;;48670:17;48679:7;48670:8;:17::i;:::-;48723:15;48706:14;:32;;;;48595:159;48562:203;48511:266::o;49306:911::-;49352:15;49370:24;49388:4;49370:9;:24::i;:::-;49352:42;;49421:10;;49411:7;:20;49407:803;;;49460:17;49480:23;49495:7;49480:14;:23::i;:::-;49460:43;;49533:1;49521:9;:13;49518:681;;;49563:13;;;;;;;;;;;49555:31;;:110;49638:8;;49622:12;;49610:9;:24;;;;:::i;:::-;49609:37;;;;:::i;:::-;49555:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49694:17;;;;;;;;;;;49686:35;;:110;49769:8;;49757;;49745:9;:20;;;;:::i;:::-;49744:33;;;;:::i;:::-;49686:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49825:20;;;;;;;;;;;49817:38;;:114;49904:8;;49891:9;;49879;:21;;;;:::i;:::-;49878:34;;;;:::i;:::-;49817:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49952:162;49997:4;50049:8;;50038:7;;50026:9;:19;;;;:::i;:::-;50025:32;;;;:::i;:::-;50088:6;49952:14;:162::i;:::-;;50140:43;50156:9;50167:15;50140:43;;;;;;;:::i;:::-;;;;;;;;49518:681;49433:777;49407:803;49341:876;49306:911::o;17405:1135::-;17511:1;17495:18;;:4;:18;;;17491:552;;17649:5;17633:12;;:21;;;;;;;:::i;:::-;;;;;;;;17491:552;;;17687:19;17709:9;:15;17719:4;17709:15;;;;;;;;;;;;;;;;17687:37;;17757:5;17743:11;:19;17739:117;;;17815:4;17821:11;17834:5;17790:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17739:117;18011:5;17997:11;:19;17979:9;:15;17989:4;17979:15;;;;;;;;;;;;;;;:37;;;;17672:371;17491:552;18073:1;18059:16;;:2;:16;;;18055:435;;18241:5;18225:12;;:21;;;;;;;;;;;18055:435;;;18458:5;18441:9;:13;18451:2;18441:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;18055:435;18522:2;18507:25;;18516:4;18507:25;;;18526:5;18507:25;;;;;;:::i;:::-;;;;;;;;17405:1135;;;:::o;48785:513::-;48838:28;48869:16;48879:5;48869:9;:16::i;:::-;48838:47;;48896:20;48976:10;;48943:16;;48920:20;:39;;;;:::i;:::-;48919:67;;;;:::i;:::-;48896:90;;49018:1;49003:12;:16;48999:292;;;49036:53;49052:5;49067:6;49076:12;49036:15;:53::i;:::-;49117:5;49104:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49150:129;49179:20;49218:12;49249:15;49150:129;;;;;;;;:::i;:::-;;;;;;;;48999:292;48827:471;;48785:513;:::o;50225:591::-;50287:17;50317:21;50355:1;50341:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50317:40;;50386:4;50368;50373:1;50368:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;50412:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50402:4;50407:1;50402:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;50438:24;50465:21;50438:48;;50497:6;;;;;;;;;;;:57;;;50569:11;50595:1;50611:4;50638;50658:15;50497:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50697:23;50723:21;50697:47;;50771:37;50791:16;50771:15;:19;;:37;;;;:::i;:::-;50759:49;;50306:510;;;50225:591;;;:::o;50826:597::-;50944:17;50974:21;51012:1;50998:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50974:40;;51035:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51025:4;51030:1;51025:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;51069:5;51059:4;51064:1;51059:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;51087:12;51109:5;51087:28;;51126:21;51150:5;:15;;;51166:2;51150:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51126:43;;51180:6;;;;;;;;;;;:57;;;51259:6;51277:1;51280:4;51286:2;51290:15;51180:126;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51317:20;51340:5;:15;;;51356:2;51340:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51317:42;;51384:31;51401:13;51384:12;:16;;:31;;;;:::i;:::-;51372:43;;50963:460;;;;50826:597;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:126::-;1279:7;1319:42;1312:5;1308:54;1297:65;;1242:126;;;:::o;1374:96::-;1411:7;1440:24;1458:5;1440:24;:::i;:::-;1429:35;;1374:96;;;:::o;1476:118::-;1563:24;1581:5;1563:24;:::i;:::-;1558:3;1551:37;1476:118;;:::o;1600:222::-;1693:4;1731:2;1720:9;1716:18;1708:26;;1744:71;1812:1;1801:9;1797:17;1788:6;1744:71;:::i;:::-;1600:222;;;;:::o;1909:117::-;2018:1;2015;2008:12;2032:117;2141:1;2138;2131:12;2155:122;2228:24;2246:5;2228:24;:::i;:::-;2221:5;2218:35;2208:63;;2267:1;2264;2257:12;2208:63;2155:122;:::o;2283:139::-;2329:5;2367:6;2354:20;2345:29;;2383:33;2410:5;2383:33;:::i;:::-;2283:139;;;;:::o;2428:77::-;2465:7;2494:5;2483:16;;2428:77;;;:::o;2511:122::-;2584:24;2602:5;2584:24;:::i;:::-;2577:5;2574:35;2564:63;;2623:1;2620;2613:12;2564:63;2511:122;:::o;2639:139::-;2685:5;2723:6;2710:20;2701:29;;2739:33;2766:5;2739:33;:::i;:::-;2639:139;;;;:::o;2784:474::-;2852:6;2860;2909:2;2897:9;2888:7;2884:23;2880:32;2877:119;;;2915:79;;:::i;:::-;2877:119;3035:1;3060:53;3105:7;3096:6;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3006:117;3162:2;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3133:118;2784:474;;;;;:::o;3264:90::-;3298:7;3341:5;3334:13;3327:21;3316:32;;3264:90;;;:::o;3360:109::-;3441:21;3456:5;3441:21;:::i;:::-;3436:3;3429:34;3360:109;;:::o;3475:210::-;3562:4;3600:2;3589:9;3585:18;3577:26;;3613:65;3675:1;3664:9;3660:17;3651:6;3613:65;:::i;:::-;3475:210;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:118::-;4113:24;4131:5;4113:24;:::i;:::-;4108:3;4101:37;4026:118;;:::o;4150:222::-;4243:4;4281:2;4270:9;4266:18;4258:26;;4294:71;4362:1;4351:9;4347:17;4338:6;4294:71;:::i;:::-;4150:222;;;;:::o;4378:619::-;4455:6;4463;4471;4520:2;4508:9;4499:7;4495:23;4491:32;4488:119;;;4526:79;;:::i;:::-;4488:119;4646:1;4671:53;4716:7;4707:6;4696:9;4692:22;4671:53;:::i;:::-;4661:63;;4617:117;4773:2;4799:53;4844:7;4835:6;4824:9;4820:22;4799:53;:::i;:::-;4789:63;;4744:118;4901:2;4927:53;4972:7;4963:6;4952:9;4948:22;4927:53;:::i;:::-;4917:63;;4872:118;4378:619;;;;;:::o;5003:86::-;5038:7;5078:4;5071:5;5067:16;5056:27;;5003:86;;;:::o;5095:112::-;5178:22;5194:5;5178:22;:::i;:::-;5173:3;5166:35;5095:112;;:::o;5213:214::-;5302:4;5340:2;5329:9;5325:18;5317:26;;5353:67;5417:1;5406:9;5402:17;5393:6;5353:67;:::i;:::-;5213:214;;;;:::o;5433:117::-;5542:1;5539;5532:12;5556:117;5665:1;5662;5655:12;5679:117;5788:1;5785;5778:12;5819:568;5892:8;5902:6;5952:3;5945:4;5937:6;5933:17;5929:27;5919:122;;5960:79;;:::i;:::-;5919:122;6073:6;6060:20;6050:30;;6103:18;6095:6;6092:30;6089:117;;;6125:79;;:::i;:::-;6089:117;6239:4;6231:6;6227:17;6215:29;;6293:3;6285:4;6277:6;6273:17;6263:8;6259:32;6256:41;6253:128;;;6300:79;;:::i;:::-;6253:128;5819:568;;;;;:::o;6393:116::-;6463:21;6478:5;6463:21;:::i;:::-;6456:5;6453:32;6443:60;;6499:1;6496;6489:12;6443:60;6393:116;:::o;6515:133::-;6558:5;6596:6;6583:20;6574:29;;6612:30;6636:5;6612:30;:::i;:::-;6515:133;;;;:::o;6654:698::-;6746:6;6754;6762;6811:2;6799:9;6790:7;6786:23;6782:32;6779:119;;;6817:79;;:::i;:::-;6779:119;6965:1;6954:9;6950:17;6937:31;6995:18;6987:6;6984:30;6981:117;;;7017:79;;:::i;:::-;6981:117;7130:80;7202:7;7193:6;7182:9;7178:22;7130:80;:::i;:::-;7112:98;;;;6908:312;7259:2;7285:50;7327:7;7318:6;7307:9;7303:22;7285:50;:::i;:::-;7275:60;;7230:115;6654:698;;;;;:::o;7358:759::-;7441:6;7449;7457;7465;7514:3;7502:9;7493:7;7489:23;7485:33;7482:120;;;7521:79;;:::i;:::-;7482:120;7641:1;7666:53;7711:7;7702:6;7691:9;7687:22;7666:53;:::i;:::-;7656:63;;7612:117;7768:2;7794:53;7839:7;7830:6;7819:9;7815:22;7794:53;:::i;:::-;7784:63;;7739:118;7896:2;7922:53;7967:7;7958:6;7947:9;7943:22;7922:53;:::i;:::-;7912:63;;7867:118;8024:2;8050:50;8092:7;8083:6;8072:9;8068:22;8050:50;:::i;:::-;8040:60;;7995:115;7358:759;;;;;;;:::o;8123:323::-;8179:6;8228:2;8216:9;8207:7;8203:23;8199:32;8196:119;;;8234:79;;:::i;:::-;8196:119;8354:1;8379:50;8421:7;8412:6;8401:9;8397:22;8379:50;:::i;:::-;8369:60;;8325:114;8123:323;;;;:::o;8452:474::-;8520:6;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8452:474;;;;;:::o;8932:180::-;8980:77;8977:1;8970:88;9077:4;9074:1;9067:15;9101:4;9098:1;9091:15;9118:320;9162:6;9199:1;9193:4;9189:12;9179:22;;9246:1;9240:4;9236:12;9267:18;9257:81;;9323:4;9315:6;9311:17;9301:27;;9257:81;9385:2;9377:6;9374:14;9354:18;9351:38;9348:84;;9404:18;;:::i;:::-;9348:84;9169:269;9118:320;;;:::o;9444:180::-;9492:77;9489:1;9482:88;9589:4;9586:1;9579:15;9613:4;9610:1;9603:15;9630:166;9770:18;9766:1;9758:6;9754:14;9747:42;9630:166;:::o;9802:366::-;9944:3;9965:67;10029:2;10024:3;9965:67;:::i;:::-;9958:74;;10041:93;10130:3;10041:93;:::i;:::-;10159:2;10154:3;10150:12;10143:19;;9802:366;;;:::o;10174:419::-;10340:4;10378:2;10367:9;10363:18;10355:26;;10427:9;10421:4;10417:20;10413:1;10402:9;10398:17;10391:47;10455:131;10581:4;10455:131;:::i;:::-;10447:139;;10174:419;;;:::o;10599:169::-;10739:21;10735:1;10727:6;10723:14;10716:45;10599:169;:::o;10774:366::-;10916:3;10937:67;11001:2;10996:3;10937:67;:::i;:::-;10930:74;;11013:93;11102:3;11013:93;:::i;:::-;11131:2;11126:3;11122:12;11115:19;;10774:366;;;:::o;11146:419::-;11312:4;11350:2;11339:9;11335:18;11327:26;;11399:9;11393:4;11389:20;11385:1;11374:9;11370:17;11363:47;11427:131;11553:4;11427:131;:::i;:::-;11419:139;;11146:419;;;:::o;11571:158::-;11711:10;11707:1;11699:6;11695:14;11688:34;11571:158;:::o;11735:365::-;11877:3;11898:66;11962:1;11957:3;11898:66;:::i;:::-;11891:73;;11973:93;12062:3;11973:93;:::i;:::-;12091:2;12086:3;12082:12;12075:19;;11735:365;;;:::o;12106:419::-;12272:4;12310:2;12299:9;12295:18;12287:26;;12359:9;12353:4;12349:20;12345:1;12334:9;12330:17;12323:47;12387:131;12513:4;12387:131;:::i;:::-;12379:139;;12106:419;;;:::o;12531:162::-;12671:14;12667:1;12659:6;12655:14;12648:38;12531:162;:::o;12699:366::-;12841:3;12862:67;12926:2;12921:3;12862:67;:::i;:::-;12855:74;;12938:93;13027:3;12938:93;:::i;:::-;13056:2;13051:3;13047:12;13040:19;;12699:366;;;:::o;13071:419::-;13237:4;13275:2;13264:9;13260:18;13252:26;;13324:9;13318:4;13314:20;13310:1;13299:9;13295:17;13288:47;13352:131;13478:4;13352:131;:::i;:::-;13344:139;;13071:419;;;:::o;13496:170::-;13636:22;13632:1;13624:6;13620:14;13613:46;13496:170;:::o;13672:366::-;13814:3;13835:67;13899:2;13894:3;13835:67;:::i;:::-;13828:74;;13911:93;14000:3;13911:93;:::i;:::-;14029:2;14024:3;14020:12;14013:19;;13672:366;;;:::o;14044:419::-;14210:4;14248:2;14237:9;14233:18;14225:26;;14297:9;14291:4;14287:20;14283:1;14272:9;14268:17;14261:47;14325:131;14451:4;14325:131;:::i;:::-;14317:139;;14044:419;;;:::o;14469:180::-;14517:77;14514:1;14507:88;14614:4;14611:1;14604:15;14638:4;14635:1;14628:15;14655:180;14703:77;14700:1;14693:88;14800:4;14797:1;14790:15;14824:4;14821:1;14814:15;14841:185;14881:1;14898:20;14916:1;14898:20;:::i;:::-;14893:25;;14932:20;14950:1;14932:20;:::i;:::-;14927:25;;14971:1;14961:35;;14976:18;;:::i;:::-;14961:35;15018:1;15015;15011:9;15006:14;;14841:185;;;;:::o;15032:85::-;15077:7;15106:5;15095:16;;15032:85;;;:::o;15123:60::-;15151:3;15172:5;15165:12;;15123:60;;;:::o;15189:158::-;15247:9;15280:61;15298:42;15307:32;15333:5;15307:32;:::i;:::-;15298:42;:::i;:::-;15280:61;:::i;:::-;15267:74;;15189:158;;;:::o;15353:147::-;15448:45;15487:5;15448:45;:::i;:::-;15443:3;15436:58;15353:147;;:::o;15506:807::-;15755:4;15793:3;15782:9;15778:19;15770:27;;15807:71;15875:1;15864:9;15860:17;15851:6;15807:71;:::i;:::-;15888:72;15956:2;15945:9;15941:18;15932:6;15888:72;:::i;:::-;15970:80;16046:2;16035:9;16031:18;16022:6;15970:80;:::i;:::-;16060;16136:2;16125:9;16121:18;16112:6;16060:80;:::i;:::-;16150:73;16218:3;16207:9;16203:19;16194:6;16150:73;:::i;:::-;16233;16301:3;16290:9;16286:19;16277:6;16233:73;:::i;:::-;15506:807;;;;;;;;;:::o;16319:143::-;16376:5;16407:6;16401:13;16392:22;;16423:33;16450:5;16423:33;:::i;:::-;16319:143;;;;:::o;16468:663::-;16556:6;16564;16572;16621:2;16609:9;16600:7;16596:23;16592:32;16589:119;;;16627:79;;:::i;:::-;16589:119;16747:1;16772:64;16828:7;16819:6;16808:9;16804:22;16772:64;:::i;:::-;16762:74;;16718:128;16885:2;16911:64;16967:7;16958:6;16947:9;16943:22;16911:64;:::i;:::-;16901:74;;16856:129;17024:2;17050:64;17106:7;17097:6;17086:9;17082:22;17050:64;:::i;:::-;17040:74;;16995:129;16468:663;;;;;:::o;17137:351::-;17207:6;17256:2;17244:9;17235:7;17231:23;17227:32;17224:119;;;17262:79;;:::i;:::-;17224:119;17382:1;17407:64;17463:7;17454:6;17443:9;17439:22;17407:64;:::i;:::-;17397:74;;17353:128;17137:351;;;;:::o;17494:332::-;17615:4;17653:2;17642:9;17638:18;17630:26;;17666:71;17734:1;17723:9;17719:17;17710:6;17666:71;:::i;:::-;17747:72;17815:2;17804:9;17800:18;17791:6;17747:72;:::i;:::-;17494:332;;;;;:::o;17832:137::-;17886:5;17917:6;17911:13;17902:22;;17933:30;17957:5;17933:30;:::i;:::-;17832:137;;;;:::o;17975:345::-;18042:6;18091:2;18079:9;18070:7;18066:23;18062:32;18059:119;;;18097:79;;:::i;:::-;18059:119;18217:1;18242:61;18295:7;18286:6;18275:9;18271:22;18242:61;:::i;:::-;18232:71;;18188:125;17975:345;;;;:::o;18326:1029::-;18631:4;18669:3;18658:9;18654:19;18646:27;;18683:71;18751:1;18740:9;18736:17;18727:6;18683:71;:::i;:::-;18764:72;18832:2;18821:9;18817:18;18808:6;18764:72;:::i;:::-;18846;18914:2;18903:9;18899:18;18890:6;18846:72;:::i;:::-;18928;18996:2;18985:9;18981:18;18972:6;18928:72;:::i;:::-;19010:81;19086:3;19075:9;19071:19;19062:6;19010:81;:::i;:::-;19101;19177:3;19166:9;19162:19;19153:6;19101:81;:::i;:::-;19192:73;19260:3;19249:9;19245:19;19236:6;19192:73;:::i;:::-;19275;19343:3;19332:9;19328:19;19319:6;19275:73;:::i;:::-;18326:1029;;;;;;;;;;;:::o;19361:442::-;19510:4;19548:2;19537:9;19533:18;19525:26;;19561:71;19629:1;19618:9;19614:17;19605:6;19561:71;:::i;:::-;19642:72;19710:2;19699:9;19695:18;19686:6;19642:72;:::i;:::-;19724;19792:2;19781:9;19777:18;19768:6;19724:72;:::i;:::-;19361:442;;;;;;:::o;19809:191::-;19849:3;19868:20;19886:1;19868:20;:::i;:::-;19863:25;;19902:20;19920:1;19902:20;:::i;:::-;19897:25;;19945:1;19942;19938:9;19931:16;;19966:3;19963:1;19960:10;19957:36;;;19973:18;;:::i;:::-;19957:36;19809:191;;;;:::o;20006:169::-;20146:21;20142:1;20134:6;20130:14;20123:45;20006:169;:::o;20181:366::-;20323:3;20344:67;20408:2;20403:3;20344:67;:::i;:::-;20337:74;;20420:93;20509:3;20420:93;:::i;:::-;20538:2;20533:3;20529:12;20522:19;;20181:366;;;:::o;20553:419::-;20719:4;20757:2;20746:9;20742:18;20734:26;;20806:9;20800:4;20796:20;20792:1;20781:9;20777:17;20770:47;20834:131;20960:4;20834:131;:::i;:::-;20826:139;;20553:419;;;:::o;20978:160::-;21118:12;21114:1;21106:6;21102:14;21095:36;20978:160;:::o;21144:366::-;21286:3;21307:67;21371:2;21366:3;21307:67;:::i;:::-;21300:74;;21383:93;21472:3;21383:93;:::i;:::-;21501:2;21496:3;21492:12;21485:19;;21144:366;;;:::o;21516:419::-;21682:4;21720:2;21709:9;21705:18;21697:26;;21769:9;21763:4;21759:20;21755:1;21744:9;21740:17;21733:47;21797:131;21923:4;21797:131;:::i;:::-;21789:139;;21516:419;;;:::o;21941:410::-;21981:7;22004:20;22022:1;22004:20;:::i;:::-;21999:25;;22038:20;22056:1;22038:20;:::i;:::-;22033:25;;22093:1;22090;22086:9;22115:30;22133:11;22115:30;:::i;:::-;22104:41;;22294:1;22285:7;22281:15;22278:1;22275:22;22255:1;22248:9;22228:83;22205:139;;22324:18;;:::i;:::-;22205:139;21989:362;21941:410;;;;:::o;22357:194::-;22397:4;22417:20;22435:1;22417:20;:::i;:::-;22412:25;;22451:20;22469:1;22451:20;:::i;:::-;22446:25;;22495:1;22492;22488:9;22480:17;;22519:1;22513:4;22510:11;22507:37;;;22524:18;;:::i;:::-;22507:37;22357:194;;;;:::o;22557:332::-;22678:4;22716:2;22705:9;22701:18;22693:26;;22729:71;22797:1;22786:9;22782:17;22773:6;22729:71;:::i;:::-;22810:72;22878:2;22867:9;22863:18;22854:6;22810:72;:::i;:::-;22557:332;;;;;:::o;22895:442::-;23044:4;23082:2;23071:9;23067:18;23059:26;;23095:71;23163:1;23152:9;23148:17;23139:6;23095:71;:::i;:::-;23176:72;23244:2;23233:9;23229:18;23220:6;23176:72;:::i;:::-;23258;23326:2;23315:9;23311:18;23302:6;23258:72;:::i;:::-;22895:442;;;;;;:::o;23343:180::-;23391:77;23388:1;23381:88;23488:4;23485:1;23478:15;23512:4;23509:1;23502:15;23529:143;23586:5;23617:6;23611:13;23602:22;;23633:33;23660:5;23633:33;:::i;:::-;23529:143;;;;:::o;23678:351::-;23748:6;23797:2;23785:9;23776:7;23772:23;23768:32;23765:119;;;23803:79;;:::i;:::-;23765:119;23923:1;23948:64;24004:7;23995:6;23984:9;23980:22;23948:64;:::i;:::-;23938:74;;23894:128;23678:351;;;;:::o;24035:114::-;24102:6;24136:5;24130:12;24120:22;;24035:114;;;:::o;24155:184::-;24254:11;24288:6;24283:3;24276:19;24328:4;24323:3;24319:14;24304:29;;24155:184;;;;:::o;24345:132::-;24412:4;24435:3;24427:11;;24465:4;24460:3;24456:14;24448:22;;24345:132;;;:::o;24483:108::-;24560:24;24578:5;24560:24;:::i;:::-;24555:3;24548:37;24483:108;;:::o;24597:179::-;24666:10;24687:46;24729:3;24721:6;24687:46;:::i;:::-;24765:4;24760:3;24756:14;24742:28;;24597:179;;;;:::o;24782:113::-;24852:4;24884;24879:3;24875:14;24867:22;;24782:113;;;:::o;24931:732::-;25050:3;25079:54;25127:5;25079:54;:::i;:::-;25149:86;25228:6;25223:3;25149:86;:::i;:::-;25142:93;;25259:56;25309:5;25259:56;:::i;:::-;25338:7;25369:1;25354:284;25379:6;25376:1;25373:13;25354:284;;;25455:6;25449:13;25482:63;25541:3;25526:13;25482:63;:::i;:::-;25475:70;;25568:60;25621:6;25568:60;:::i;:::-;25558:70;;25414:224;25401:1;25398;25394:9;25389:14;;25354:284;;;25358:14;25654:3;25647:10;;25055:608;;;24931:732;;;;:::o;25669:831::-;25932:4;25970:3;25959:9;25955:19;25947:27;;25984:71;26052:1;26041:9;26037:17;26028:6;25984:71;:::i;:::-;26065:80;26141:2;26130:9;26126:18;26117:6;26065:80;:::i;:::-;26192:9;26186:4;26182:20;26177:2;26166:9;26162:18;26155:48;26220:108;26323:4;26314:6;26220:108;:::i;:::-;26212:116;;26338:72;26406:2;26395:9;26391:18;26382:6;26338:72;:::i;:::-;26420:73;26488:3;26477:9;26473:19;26464:6;26420:73;:::i;:::-;25669:831;;;;;;;;:::o;26506:720::-;26741:4;26779:3;26768:9;26764:19;26756:27;;26793:79;26869:1;26858:9;26854:17;26845:6;26793:79;:::i;:::-;26919:9;26913:4;26909:20;26904:2;26893:9;26889:18;26882:48;26947:108;27050:4;27041:6;26947:108;:::i;:::-;26939:116;;27065:72;27133:2;27122:9;27118:18;27109:6;27065:72;:::i;:::-;27147;27215:2;27204:9;27200:18;27191:6;27147:72;:::i;:::-;26506:720;;;;;;;:::o

Swarm Source

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