ETH Price: $3,265.13 (+2.27%)
Gas: 1 Gwei

Token

DOGE BANK (DBANK)
 

Overview

Max Total Supply

1,000,000,000 DBANK

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,675,307.222237161846572656 DBANK

Value
$0.00
0xeDEaa267Fb015eF4C03F00c1Ab989aB2704DE98C
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DogeBankToken

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-10
*/

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol


pragma solidity >=0.6.2;

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

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

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

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol


pragma solidity >=0.6.2;


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

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

// File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol


pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol


pragma solidity >=0.5.0;

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

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

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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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


// OpenZeppelin Contracts (last updated v4.8.0-rc.1) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: kickass.sol



//DogeBank | MemeBank © 2023

//A Decentralised Bank - Banking projects,

pragma solidity ^0.8.4;








contract DogeBankToken is ERC20, Ownable {

    modifier admin(){

		require(msg.sender == _adminWallet);

		_;

	}

    modifier lockSwap {

        require(!_inSwap);

        _inSwap = true;

        _;

        _inSwap = false;

    }

    modifier liquidityAdd {

        _inLiquidityAdd = true;

        _;

        _inLiquidityAdd = false;

    }

    modifier reentrant {

        require(!_inTransfer);

        _inTransfer = true;

        _;

        _inTransfer = false;

    }

    modifier OnlyCharity(){

		require(msg.sender == _charityBeneficiary);

		_;

	}

    uint public _buyRate = 5;//adjustable

    uint public _sellRate = 5;//adjustable

    uint256 public bonfirePool;

    uint256 public _maxHoldings = 18000000 * 1e18;

    uint256 private _feeTokens;

    uint256 public _holders;

    uint256 private _tradingStart;

    uint256 private _tradingStartBlock;

    uint256 public _totalSupply;

    uint256 public _charityPool;

    uint256 public _ethRewardBasis;

    uint256 public _netRewardClaims;

    uint256 public _totalBeneficiaryAssigns;

    uint256 public _beneficiaryReward;

    address public _pairAddress;

    address payable public _bornFireWallet;

    address payable private _marketingWallet;

    address payable private _developmentWallet;

    address private _adminWallet;

    address payable public _charityBeneficiary;

    address constant public _burnAddress = 0x000000000000000000000000000000000000dEaD;

    IUniswapV2Router02 internal _router = IUniswapV2Router02(address(0));

    bool internal _inSwap = false;

    bool internal _inTransfer = false;

    bool internal _inLiquidityAdd = false;

   

    mapping(address => bool) private _rewardExclude;

    mapping(address => bool) private _taxExcluded;

    mapping(address => bool) private _teamLocked;

    mapping(address => bool) private _bot;

    mapping(address => uint256) private _tradeBlock; 

    mapping(address => uint256) private _balances;

    mapping(address => uint256) public _lastRewardBasis;

    mapping(address => uint256) public _netEthRewardedWallet;

    mapping(address => uint256) public _netRewardsmyDonors;

    mapping(address => uint256) public _netRewardsTomyBE;

    mapping(address => address) public _claimBeneficiary;

    mapping(address => myBenefactors) private _privateList;

    

    event ClaimReflection(address indexed claimer, uint256 reflection);

    event BuyBack(address indexed torcher, uint256 ethbuy, uint256 amount);

    event Donation(address indexed charity, uint256 auctioned);

  

    constructor(address payable developmentAddr, address payable marketingAddr) ERC20("DOGE BANK", "DBANK"){

        _marketingWallet = marketingAddr;

        _developmentWallet = developmentAddr;

        addTaxExcluded(owner());

        addTaxExcluded(address(this));

        addTaxExcluded(_burnAddress);

        addTaxExcluded(marketingAddr);

        addTaxExcluded(developmentAddr);

        //Uniswap

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _pairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH());

        _router = _uniswapV2Router;

    }

    function addLiquidity() public payable onlyOwner() liquidityAdd {

        uint256 tokens = 1000000000 * 1e18;

        uint256 LPtokens = (tokens * 90) / 100;

        uint256 teamTokens = tokens - LPtokens;

        _mint(address(this), LPtokens);

        _mint(msg.sender, teamTokens);

        _approve(address(this), address(_router), LPtokens);

        _router.addLiquidityETH{value: msg.value}(

            address(this),LPtokens,0,0,owner(),block.timestamp

        );

    }

    function circulatingSupply() public view returns (uint256) {

        return _totalSupply - balanceOf(_burnAddress);

    }

    //taxes

    function isTaxExcluded(address account) public view returns (bool) {

        return _taxExcluded[account];

    }

    function addTaxExcluded(address account) internal {

        _taxExcluded[account] = true;

    }

    function addTaxExcludedArray(address[] calldata accounts) public onlyOwner {

        for(uint256 i = 0; i < accounts.length; i++) {

                 _taxExcluded[accounts[i]] = true;

        }

    }

    //team lock

    function addTeamLock(address account) public admin() {

        _teamLocked[account] = true;

    }

    function isTeamLocked(address account) public view returns (bool) {

        return _teamLocked[account];

    }

    //bot accounts on uniswap trading from router

    function isBot(address account) public view returns (bool) {

        return _bot[account];

    }

    function _addBot(address account) internal {

        _bot[account] = true;

        _rewardExclude[account] = true;

    }

    function addBot(address account) public admin() {

        if(account == address(_router) || account == _pairAddress){revert();}

        _addBot(account);

    }

    function removeBot(address account) public admin() {

        _bot[account] = false;

        _rewardExclude[account] = false;

    }

    //token balances

    function _addBalance(address account, uint256 amount) internal {

        _balances[account] = _balances[account] + amount;

    }

    function _subtractBalance(address account, uint256 amount) internal {

        _balances[account] = _balances[account] - amount;

    }

    //------------------------------------------------------------------

    //Transfer overwrites erc-20 method. 

    function _transfer(

        address sender,

        address recipient,

        uint256 amount

    ) internal override {

        if (isTaxExcluded(sender) || isTaxExcluded(recipient)) {

            if(balanceOf(recipient) == 0){_holders +=1; }//before

            _rawTransfer(sender, recipient, amount);

            if(balanceOf(sender) == 0){_holders -= 1;}//after

            return;

        }

        //automatic start to trading

        require(_tradingStartBlock != 0 && block.number >= _tradingStartBlock);

        require(!isBot(sender) && !isBot(msg.sender) && !isBot(recipient));

        require(_inLiquidityAdd || _inSwap || amount <= _maxHoldings);

        if (isTeamLocked(sender)){

            require(block.timestamp > (_tradingStart + (1 * 60 * 60 * 24 * 30)),"team tokens locked 30 days");

        }

        //if snipers or mev devs manipulate block number

        if(block.number <= _tradingStartBlock && sender == _pairAddress){

            _addBot(recipient);

        }

        if (!_inSwap && _feeTokens > 0 && recipient == _pairAddress) {

            _swap(_feeTokens);

        }

        //indicates swap

        uint256 send = amount; uint256 selltaxtokens; uint256 buytaxtokens; 

        // Buy

        if (sender == _pairAddress) {

            require(balanceOf(recipient)+amount<_maxHoldings);

            (send,buytaxtokens) = _getTax(amount, _buyRate);

        }

        // Sell

        if (recipient == _pairAddress) {

            require(amount<_maxHoldings);

            (send,selltaxtokens) = _getTax(amount, _sellRate);

        }

        //transfer

        _rawTransfer(sender, recipient, send);

        //take sell taxrevenue

        if(selltaxtokens>0){

            _takeSellTax(sender, selltaxtokens);

        }

        //take buy tax

        if(buytaxtokens>0){

            _takeBuyTax(sender, buytaxtokens);

        }

        //anti snipe the mev mechants (in addition to deadblocks)

        if(sender == _pairAddress){

            _tradeBlock[recipient] = block.number;

        }

        if(recipient == _pairAddress && _tradeBlock[sender] == block.number){

            _addBot(sender);

        }

    }

    //liquidate fee tokens on each sell tx

    function _swap(uint256 amountSwap) internal lockSwap {

        address[] memory path = new address[](2);

        path[0] = address(this);

        path[1] = _router.WETH();

        _approve(address(this), address(_router), amountSwap);

        uint256 balanceB4 = address(this).balance;

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(

            amountSwap,

            0,

            path,

            address(this),

            block.timestamp

        ); 

        uint256 swappedETH = address(this).balance - balanceB4;

        //finally adjust feeTokens

        _feeTokens -= amountSwap;

        //send eth balance

        uint256 marketingETH = (swappedETH * 60) / 100;

        uint256 teamETH = (swappedETH * 10) / 100;

        uint256 reflectionsETH = (swappedETH * 10) / 100;

        uint256 charityETH = (swappedETH * 5) / 100;

        //send funds

        _ethRewardBasis += reflectionsETH;

        _charityPool += charityETH;

        uint256 burnETH = swappedETH - marketingETH - teamETH - reflectionsETH - charityETH;

        bonfirePool += burnETH;

        //transfer

        _paymentETH(_bornFireWallet, burnETH);

        _paymentETH(_marketingWallet, marketingETH);

        _paymentETH(_developmentWallet, teamETH); 

    }

    //bonfire/buy backs

    function bonfireEvent(uint swapdeadline) public payable returns (uint256) {

        address[] memory path = new address[](2);

        path[0] = _router.WETH();

        path[1] = address(this);

        uint deadline = block.timestamp + swapdeadline;

        uint[] memory tokens_ = _router.swapExactETHForTokens{value: msg.value}(0, path, payable(_burnAddress), deadline);

        uint256 outputTokenCount = uint256(tokens_[tokens_.length - 1]);

        if(outputTokenCount >0){

            emit BuyBack(msg.sender, msg.value, outputTokenCount);

        }else{revert();}

        return outputTokenCount;

    }

    //charity withdrawal

    function charityWithdraw() public OnlyCharity() {

        uint256 donation = _charityPool;

        _paymentETH(_charityBeneficiary, donation);

        _charityPool -= donation;

        emit Donation(msg.sender, donation);

    }

    //REFLECTIONS

    struct myBenefactors {

        address[] myDonors;

        mapping(address => uint) myDonorsIndex;

    }

    //add reflection beneficiary

    function addBeneficiary(address account) public{

        require(!isBot(msg.sender) && !isBot(account));

        require(_claimBeneficiary[msg.sender] != account, "Already added as Donor");

       //adding self as donor to beneficiarys private storage

       _claimBeneficiary[msg.sender] = account;//who is wallets beneficiary..1 max

       _privateList[account].myDonors.push(msg.sender);

       uint index = _privateList[account].myDonors.length;

       //store key

       _privateList[account].myDonorsIndex[msg.sender] = index;//add self

       _totalBeneficiaryAssigns += 1;

    }

    function removeBeneficiary(address account) public{

        require(_privateList[account].myDonorsIndex[msg.sender] != 0,"you are not in donors list!");

       //removing beneficiary by restoring myself

       _claimBeneficiary[msg.sender] = msg.sender;

       uint index = _privateList[account].myDonorsIndex[msg.sender];

       //remove myself as donor from his array of donors

       uint lastIndex = _privateList[account].myDonors.length;

       _privateList[account].myDonors[index - 1] = _privateList[account].myDonors[lastIndex];

       _privateList[account].myDonors.pop();

       _privateList[account].myDonorsIndex[msg.sender] = 0; //reset

       _totalBeneficiaryAssigns -= 1;

    }

    function viewBenefactors() public view returns(address[] memory){

       return _privateList[msg.sender].myDonors;

    }

    function currentDonorRewards(address addr) public view returns(uint n, uint256 netreward) {

        n = _privateList[addr].myDonors.length;

        for (uint i = 0; i < n; i++) {

            //sum the rewards

            netreward += currentRewardForWallet(_privateList[addr].myDonors[i]);

            if(i == n-1){break;}

        }

        return (n, netreward);

    }

    function currentRewardForWallet(address addr) public view returns(uint256) {

        uint256 ethChange = _ethRewardBasis - _lastRewardBasis[addr];

        return (ethChange * balanceOf(addr)) / (circulatingSupply() - balanceOf(_pairAddress));

    }

    function claimReflection() public reentrant(){

        require(!_rewardExclude[msg.sender]);//covers bots

        uint winpass; uint256 netreward;

        uint n = _privateList[msg.sender].myDonors.length;

        if(isTaxExcluded(msg.sender)){winpass=1;}

        netreward = currentRewardForWallet(msg.sender);

        

        if(n>0){

            for (uint i = 0; i < n; i++) {

                address donor = _privateList[msg.sender].myDonors[i];

                uint256 owed = currentRewardForWallet(donor);

                _netRewardsmyDonors[msg.sender] += owed;

                _netRewardsTomyBE[donor] += owed;

                netreward += owed; _beneficiaryReward += owed; 

                _lastRewardBasis[donor] = _ethRewardBasis;

                //break

                if(i == n-1){break;}

            }

        }

        if(netreward>0){

            _paymentETH(msg.sender, netreward);

            _netRewardClaims += netreward;

            _netEthRewardedWallet[msg.sender] += netreward;

            _lastRewardBasis[msg.sender] = _ethRewardBasis;

            emit ClaimReflection(msg.sender, netreward);

        }        

    }

    function _paymentETH(address receiver, uint256 amount) internal {

        (bool sent, ) = receiver.call{value: amount}("");

        require(sent, "Failed to send Ether");

    }

    function _takeSellTax(address account, uint256 totalFees) internal {

        _feeTokens += totalFees;

        _rawTransfer(account, address(this), totalFees);

    }

    function _takeBuyTax(address sender,  uint256 totalFees) internal {

        _feeTokens += totalFees;

        _rawTransfer(sender, address(this), totalFees);

    }

    function _getTax(uint256 amount, uint taxRate)internal pure returns (uint256 send, uint256 tax){

        tax = (amount * taxRate) / 100;

        send = amount - tax;

        return(send, tax);

    }

    //setters

    function setBuyTax(uint rate) external admin() {

        require( rate >= 0 && rate <= 10); 

        _buyRate = rate;

    }

    function setSellTax(uint rate) external admin() {

        require( rate >= 0 && rate <= 10); 

        _sellRate = rate;

    }

    function setAdmin(address payable _wallet) external onlyOwner(){

        _adminWallet = _wallet;

    }

    function setDevelopment(address payable _wallet) external admin(){

        _developmentWallet = _wallet;

    }

    function setMarketing(address payable _wallet) external admin(){

        _marketingWallet = _wallet;

    }

    function setBornfire(address payable _wallet) external admin(){

        _bornFireWallet = _wallet;

    }

    function setCharityWallet(address payable _charityWallet) external admin(){

        _charityBeneficiary = _charityWallet;

    }

    function setMaxHoldings(uint256 maxHoldings) external admin() {

        _maxHoldings = maxHoldings;

    }

    function setTradingStart(bool _tradingOpen) external onlyOwner() {

        if(_tradingOpen){

            _tradingStartBlock = block.number;

            _tradingStart = block.timestamp;

        }else{}//cant stop trading        

    }

    // modified from OpenZeppelin ERC20

    function _rawTransfer(

        address sender,

        address recipient,

        uint256 amount

    ) internal {

        require(sender != address(0));

        require(recipient != address(0));



        uint256 senderBalance = balanceOf(sender);

        require(senderBalance >= amount);

        unchecked {

            _subtractBalance(sender, amount);

        }

        _addBalance(recipient, amount);

        emit Transfer(sender, recipient, amount);

    }

    function balanceOf(address account) public view virtual override returns (uint256){

        return _balances[account];

    }

    function totalSupply() public view override returns (uint256) {

        return _totalSupply;

    }

    function _mint(address account, uint256 amount) internal override {

        require(_totalSupply < 1000000001 * 1e18);

        _totalSupply += amount;

        _addBalance(account, amount);

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

    }

    

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"developmentAddr","type":"address"},{"internalType":"address payable","name":"marketingAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"torcher","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethbuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"reflection","type":"uint256"}],"name":"ClaimReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"charity","type":"address"},{"indexed":false,"internalType":"uint256","name":"auctioned","type":"uint256"}],"name":"Donation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_beneficiaryReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bornFireWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityBeneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_claimBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ethRewardBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_holders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastRewardBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_netEthRewardedWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_netRewardClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_netRewardsTomyBE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_netRewardsmyDonors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBeneficiaryAssigns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addTaxExcludedArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapdeadline","type":"uint256"}],"name":"bonfireEvent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"bonfirePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"currentDonorRewards","outputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"netreward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"currentRewardForWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTaxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTeamLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setBornfire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_charityWallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setDevelopment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldings","type":"uint256"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTradingStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewBenefactors","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600560068190556007556a0ee3a5f48a68b552000000600955601a80546001600160b81b03191690553480156200003a57600080fd5b50604051620030c6380380620030c68339810160408190526200005d91620004be565b6040805180820182526009815268444f47452042414e4b60b81b6020808301918252835180850190945260058452644442414e4b60d81b908401528151919291620000ab91600391620003ff565b508051620000c1906004906020840190620003ff565b505050620000de620000d8620003a960201b60201c565b620003ad565b601680546001600160a01b038381166001600160a01b031992831617909255601780548584169216919091179055600554166000908152601c60205260409020805460ff1916600117905562000152306001600160a01b03166000908152601c60205260409020805460ff19166001179055565b61dead600052601c6020527fa48bd8e7b1565515cde2859b6cc48308ba05b5325bcf90fb096b9ac0b8087dfc805460ff19166001179055620001b2816001600160a01b03166000908152601c60205260409020805460ff19166001179055565b620001db826001600160a01b03166000908152601c60205260409020805460ff19166001179055565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022e57600080fd5b505afa15801562000243573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002699190620004fd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b257600080fd5b505afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed9190620004fd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200033657600080fd5b505af11580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003719190620004fd565b601480546001600160a01b039283166001600160a01b031991821617909155601a805493909216921691909117905550620005619050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200040d9062000524565b90600052602060002090601f0160209004810192826200043157600085556200047c565b82601f106200044c57805160ff19168380011785556200047c565b828001600101855582156200047c579182015b828111156200047c5782518255916020019190600101906200045f565b506200048a9291506200048e565b5090565b5b808211156200048a57600081556001016200048f565b6001600160a01b0381168114620004bb57600080fd5b50565b60008060408385031215620004d257600080fd5b8251620004df81620004a5565b6020840151909250620004f281620004a5565b809150509250929050565b6000602082840312156200051057600080fd5b81516200051d81620004a5565b9392505050565b600181811c908216806200053957607f821691505b602082108114156200055b57634e487b7160e01b600052602260045260246000fd5b50919050565b612b5580620005716000396000f3fe60806040526004361061039b5760003560e01c806370a08231116101dc578063a6de0c5511610102578063dd62ed3e116100a0578063f112932b1161006f578063f112932b14610aac578063f2fde38b14610ac2578063f38c517814610ae2578063ffecf51614610af857600080fd5b8063dd62ed3e14610a2a578063e0725ffb14610a4a578063e4adc86114610a77578063e8078d9414610aa457600080fd5b8063b645d565116100dc578063b645d565146109b4578063bd3900c0146109d4578063c7eb2b64146109ea578063dc1052e214610a0a57600080fd5b8063a6de0c551461095e578063a9059cbb14610974578063a93d02171461099457600080fd5b80638b0414d51161017a57806395d89b411161014957806395d89b41146108ba5780639d0be150146108cf578063a028ea9914610905578063a457c2d71461093e57600080fd5b80638b0414d5146108475780638cd09d50146108675780638da5cb5b146108875780639358928b146108a557600080fd5b80637760fea1116101b65780637760fea1146107c757806378742bcb146107e75780637bffe332146108075780637dea5aab1461082757600080fd5b806370a082311461077c578063715018a61461079c57806373338682146107b157600080fd5b80633bbac579116102c15780635926651d1161025f5780636871c7a81161022e5780636871c7a8146106e057806369ec8e9c146106f6578063704b6c021461072f5780637087a5071461074f57600080fd5b80635926651d1461066057806359633a1c146106805780635ae9e94b146106a05780635fecd926146106c057600080fd5b80634308fa6a1161029b5780634308fa6a146105ec57806349d8ae5e14610602578063524a4da0146106155780635530a3271461064a57600080fd5b80633bbac579146105a15780633eaaf86b146105c1578063425faf96146105d757600080fd5b80631cb9dbba11610339578063313ce56711610308578063313ce5671461053057806335459a3e1461054c578063375632931461056c578063395093511461058157600080fd5b80631cb9dbba146104c257806323b872dd146104d857806323defe35146104f857806330563bd71461050e57600080fd5b80630e0b730e116103755780630e0b730e146104265780630ee685181461045357806318160ddd146104755780631b3554271461048a57600080fd5b806306fdde03146103a7578063095d2d33146103d2578063095ea7b3146103f657600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610b18565b6040516103c99190612653565b60405180910390f35b3480156103de57600080fd5b506103e860095481565b6040519081526020016103c9565b34801561040257600080fd5b506104166104113660046126bd565b610baa565b60405190151581526020016103c9565b34801561043257600080fd5b506103e86104413660046126e9565b60216020526000908152604090205481565b34801561045f57600080fd5b50610468610bc2565b6040516103c9919061274a565b34801561048157600080fd5b50600e546103e8565b34801561049657600080fd5b506014546104aa906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b3480156104ce57600080fd5b506103e860135481565b3480156104e457600080fd5b506104166104f336600461275d565b610c2c565b34801561050457600080fd5b506103e860115481565b34801561051a57600080fd5b5061052e6105293660046126e9565b610c50565b005b34801561053c57600080fd5b50604051601281526020016103c9565b34801561055857600080fd5b5061052e6105673660046126e9565b610c89565b34801561057857600080fd5b5061052e610cc2565b34801561058d57600080fd5b5061041661059c3660046126bd565b610f05565b3480156105ad57600080fd5b506104166105bc3660046126e9565b610f27565b3480156105cd57600080fd5b506103e8600e5481565b3480156105e357600080fd5b5061052e610f45565b3480156105f857600080fd5b506103e860075481565b6103e861061036600461279e565b610fc4565b34801561062157600080fd5b506106356106303660046126e9565b6111e0565b604080519283526020830191909152016103c9565b34801561065657600080fd5b506103e8600f5481565b34801561066c57600080fd5b5061052e61067b3660046126e9565b611288565b34801561068c57600080fd5b5061052e61069b3660046126e9565b611396565b3480156106ac57600080fd5b5061052e6106bb36600461279e565b61154e565b3480156106cc57600080fd5b5061052e6106db3660046126e9565b61156a565b3480156106ec57600080fd5b506103e8600b5481565b34801561070257600080fd5b506104166107113660046126e9565b6001600160a01b03166000908152601c602052604090205460ff1690565b34801561073b57600080fd5b5061052e61074a3660046126e9565b6115b7565b34801561075b57600080fd5b506103e861076a3660046126e9565b60246020526000908152604090205481565b34801561078857600080fd5b506103e86107973660046126e9565b6115e1565b3480156107a857600080fd5b5061052e6115fb565b3480156107bd57600080fd5b506103e860105481565b3480156107d357600080fd5b5061052e6107e23660046126e9565b61160f565b3480156107f357600080fd5b5061052e6108023660046127b7565b61164a565b34801561081357600080fd5b506015546104aa906001600160a01b031681565b34801561083357600080fd5b5061052e61084236600461282c565b6116c9565b34801561085357600080fd5b5061052e6108623660046126e9565b6116e3565b34801561087357600080fd5b5061052e61088236600461279e565b61171c565b34801561089357600080fd5b506005546001600160a01b03166104aa565b3480156108b157600080fd5b506103e8611746565b3480156108c657600080fd5b506103bc611765565b3480156108db57600080fd5b506104aa6108ea3660046126e9565b6025602052600090815260409020546001600160a01b031681565b34801561091157600080fd5b506104166109203660046126e9565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561094a57600080fd5b506104166109593660046126bd565b611774565b34801561096a57600080fd5b506103e860085481565b34801561098057600080fd5b5061041661098f3660046126bd565b6117ef565b3480156109a057600080fd5b506103e86109af3660046126e9565b6117fd565b3480156109c057600080fd5b5061052e6109cf3660046126e9565b611872565b3480156109e057600080fd5b506104aa61dead81565b3480156109f657600080fd5b506019546104aa906001600160a01b031681565b348015610a1657600080fd5b5061052e610a2536600461279e565b6118ab565b348015610a3657600080fd5b506103e8610a4536600461284e565b6118d5565b348015610a5657600080fd5b506103e8610a653660046126e9565b60236020526000908152604090205481565b348015610a8357600080fd5b506103e8610a923660046126e9565b60226020526000908152604090205481565b61052e611900565b348015610ab857600080fd5b506103e860065481565b348015610ace57600080fd5b5061052e610add3660046126e9565b611a57565b348015610aee57600080fd5b506103e860125481565b348015610b0457600080fd5b5061052e610b133660046126e9565b611acd565b606060038054610b2790612887565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5390612887565b8015610ba05780601f10610b7557610100808354040283529160200191610ba0565b820191906000526020600020905b815481529060010190602001808311610b8357829003601f168201915b5050505050905090565b600033610bb8818585611b20565b5060019392505050565b33600090815260266020908152604091829020805483518184028101840190945280845260609392830182828015610ba057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c05575050505050905090565b600033610c3a858285611c44565b610c45858585611cbe565b506001949350505050565b6018546001600160a01b03163314610c6757600080fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b03163314610ca057600080fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b601a54600160a81b900460ff1615610cd957600080fd5b601a805460ff60a81b1916600160a81b179055336000908152601b602052604090205460ff1615610d0957600080fd5b33600090815260266020908152604080832054601c90925282205482919060ff1615610d3457600192505b610d3d336117fd565b91508015610e565760005b81811015610e5457336000908152602660205260408120805483908110610d7157610d716128c2565b60009182526020822001546001600160a01b03169150610d90826117fd565b33600090815260236020526040812080549293508392909190610db49084906128ee565b90915550506001600160a01b03821660009081526024602052604081208054839290610de19084906128ee565b90915550610df1905081866128ee565b94508060136000828254610e0591906128ee565b90915550506010546001600160a01b038316600090815260216020526040902055610e31600185612906565b831415610e3f575050610e54565b50508080610e4c9061291d565b915050610d48565b505b8115610ef357610e663383611ffb565b8160116000828254610e7891906128ee565b90915550503360009081526022602052604081208054849290610e9c9084906128ee565b909155505060105433600081815260216020526040908190209290925590517fb4ab0faacc0308bf282db874520a67cb8357633ffe604ef19250704a17b678a490610eea9085815260200190565b60405180910390a25b5050601a805460ff60a81b1916905550565b600033610bb8818585610f1883836118d5565b610f2291906128ee565b611b20565b6001600160a01b03166000908152601e602052604090205460ff1690565b6019546001600160a01b03163314610f5c57600080fd5b600f54601954610f75906001600160a01b031682611ffb565b80600f6000828254610f879190612906565b909155505060405181815233907f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e9060200160405180910390a250565b604080516002808252606082018352600092839291906020830190803683375050601a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561102d57600080fd5b505afa158015611041573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611065919061294e565b81600081518110611078576110786128c2565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106110ac576110ac6128c2565b6001600160a01b039092166020928302919091019091015260006110d084426128ee565b601a54604051637ff36ab560e01b81529192506000916001600160a01b0390911690637ff36ab5903490611110908590889061dead90899060040161296b565b6000604051808303818588803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261116691908101906129a0565b9050600081600183516111799190612906565b81518110611189576111896128c2565b6020026020010151905060008111156103a257604080513481526020810183905233917f79650a26d9c122dcabbd86157b7bdabd291e5058cef11fc21c572518a1690ee6910160405180910390a295945050505050565b6001600160a01b03811660009081526026602052604081205490805b82811015611282576001600160a01b0384166000908152602660205260409020805461124d919083908110611233576112336128c2565b6000918252602090912001546001600160a01b03166117fd565b61125790836128ee565b9150611264600184612906565b81141561127057611282565b8061127a8161291d565b9150506111fc565b50915091565b61129133610f27565b1580156112a457506112a281610f27565b155b6112ad57600080fd5b336000908152602560205260409020546001600160a01b03828116911614156113165760405162461bcd60e51b815260206004820152601660248201527520b63932b0b23c9030b23232b21030b9902237b737b960511b60448201526064015b60405180910390fd5b33600081815260256020908152604080832080546001600160a01b0387166001600160a01b031991821681179092559084526026835281842080546001818101835582875285872090910180549093168717909255805495855281019092528220839055601280549192909161138d9084906128ee565b90915550505050565b6001600160a01b03811660009081526026602090815260408083203384526001019091529020546114095760405162461bcd60e51b815260206004820152601b60248201527f796f7520617265206e6f7420696e20646f6e6f7273206c697374210000000000604482015260640161130d565b33600081815260256020908152604080832080546001600160a01b031916851790556001600160a01b03851680845260268084528285209585526001860184529184205493529052815490918161145e6128c2565b60009182526020808320909101546001600160a01b03868116845260269092526040909220911690611491600185612906565b815481106114a1576114a16128c2565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591851681526026909152604090208054806114e6576114e6612a5e565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0385168252602681526040808320338452600190810190925282208290556012805491929091611544908490612906565b9091555050505050565b6018546001600160a01b0316331461156557600080fd5b600955565b6018546001600160a01b0316331461158157600080fd5b6001600160a01b03166000908152601e60209081526040808320805460ff19908116909155601b90925290912080549091169055565b6115bf612095565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0316600090815260208052604090205490565b611603612095565b61160d60006120ef565b565b6018546001600160a01b0316331461162657600080fd5b6001600160a01b03166000908152601d60205260409020805460ff19166001179055565b611652612095565b60005b818110156116c4576001601c6000858585818110611675576116756128c2565b905060200201602081019061168a91906126e9565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806116bc8161291d565b915050611655565b505050565b6116d1612095565b80156116e05743600d5542600c555b50565b6018546001600160a01b031633146116fa57600080fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b0316331461173357600080fd5b600a81111561174157600080fd5b600755565b600061175361dead6115e1565b600e546117609190612906565b905090565b606060048054610b2790612887565b6000338161178282866118d5565b9050838110156117e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161130d565b610c458286868403611b20565b600033610bb8818585611cbe565b6001600160a01b038116600090815260216020526040812054601054829161182491612906565b60145490915061183c906001600160a01b03166115e1565b611844611746565b61184e9190612906565b611857846115e1565b6118619083612a74565b61186b9190612a93565b9392505050565b6018546001600160a01b0316331461188957600080fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b031633146118c257600080fd5b600a8111156118d057600080fd5b600655565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611908612095565b601a805460ff60b01b1916600160b01b1790556b033b2e3c9fd0803ce80000006000606461193783605a612a74565b6119419190612a93565b9050600061194f8284612906565b905061195b3083612141565b6119653382612141565b601a5461197d9030906001600160a01b031684611b20565b601a546001600160a01b031663f305d7193430856000806119a66005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611a0957600080fd5b505af1158015611a1d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a429190612ab5565b5050601a805460ff60b01b1916905550505050565b611a5f612095565b6001600160a01b038116611ac45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161130d565b6116e0816120ef565b6018546001600160a01b03163314611ae457600080fd5b601a546001600160a01b0382811691161480611b0d57506014546001600160a01b038281169116145b15611b1757600080fd5b6116e0816121c2565b6001600160a01b038316611b825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161130d565b6001600160a01b038216611be35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161130d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611c5084846118d5565b90506000198114611cb85781811015611cab5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161130d565b611cb88484848403611b20565b50505050565b6001600160a01b0383166000908152601c602052604090205460ff1680611cfd57506001600160a01b0382166000908152601c602052604090205460ff165b15611d5357611d0b826115e1565b611d28576001600b6000828254611d2291906128ee565b90915550505b611d338383836121fe565b611d3c836115e1565b6116c4576001600b60008282546115449190612906565b600d5415801590611d665750600d544310155b611d6f57600080fd5b611d7883610f27565b158015611d8b5750611d8933610f27565b155b8015611d9d5750611d9b82610f27565b155b611da657600080fd5b601a54600160b01b900460ff1680611dc75750601a54600160a01b900460ff165b80611dd457506009548111155b611ddd57600080fd5b6001600160a01b0383166000908152601d602052604090205460ff1615611e5c57600c54611e0e9062278d006128ee565b4211611e5c5760405162461bcd60e51b815260206004820152601a60248201527f7465616d20746f6b656e73206c6f636b65642033302064617973000000000000604482015260640161130d565b600d544311158015611e7b57506014546001600160a01b038481169116145b15611e8957611e89826121c2565b601a54600160a01b900460ff16158015611ea557506000600a54115b8015611ebe57506014546001600160a01b038381169116145b15611ece57611ece600a546122a5565b601454819060009081906001600160a01b0387811691161415611f1e5760095484611ef8876115e1565b611f0291906128ee565b10611f0c57600080fd5b611f1884600654612599565b90935090505b6014546001600160a01b0386811691161415611f54576009548410611f4257600080fd5b611f4e84600754612599565b90935091505b611f5f8686856121fe565b8115611f6f57611f6f86836125c7565b8015611f7f57611f7f86826125c7565b6014546001600160a01b0387811691161415611fb1576001600160a01b0385166000908152601f602052604090204390555b6014546001600160a01b038681169116148015611fe557506001600160a01b0386166000908152601f602052604090205443145b15611ff357611ff3866121c2565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612048576040519150601f19603f3d011682016040523d82523d6000602084013e61204d565b606091505b50509050806116c45760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640161130d565b6005546001600160a01b0316331461160d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161130d565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6b033b2e3cadb136f08f640000600e541061215b57600080fd5b80600e600082825461216d91906128ee565b9091555061217d905082826125ee565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03166000908152601e602090815260408083208054600160ff199182168117909255601b909352922080549091169091179055565b6001600160a01b03831661221157600080fd5b6001600160a01b03821661222457600080fd5b600061222f846115e1565b90508181101561223e57600080fd5b6122488483612630565b61225283836125ee565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161229791815260200190565b60405180910390a350505050565b601a54600160a01b900460ff16156122bc57600080fd5b601a805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110612304576123046128c2565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561235857600080fd5b505afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612390919061294e565b816001815181106123a3576123a36128c2565b6001600160a01b039283166020918202929092010152601a546123c99130911684611b20565b601a5460405163791ac94760e01b815247916001600160a01b03169063791ac94790612402908690600090879030904290600401612ae3565b600060405180830381600087803b15801561241c57600080fd5b505af1158015612430573d6000803e3d6000fd5b50505050600081476124429190612906565b905083600a60008282546124569190612906565b9091555060009050606461246b83603c612a74565b6124759190612a93565b90506000606461248684600a612a74565b6124909190612a93565b9050600060646124a185600a612a74565b6124ab9190612a93565b9050600060646124bc866005612a74565b6124c69190612a93565b905081601060008282546124da91906128ee565b9250508190555080600f60008282546124f391906128ee565b9091555060009050818385612508888a612906565b6125129190612906565b61251c9190612906565b6125269190612906565b9050806008600082825461253a91906128ee565b9091555050601554612555906001600160a01b031682611ffb565b60165461256b906001600160a01b031686611ffb565b601754612581906001600160a01b031685611ffb565b5050601a805460ff60a01b1916905550505050505050565b60008060646125a88486612a74565b6125b29190612a93565b90506125be8185612906565b91509250929050565b80600a60008282546125d991906128ee565b909155506125ea90508230836121fe565b5050565b6001600160a01b03821660009081526020805260409020546126119082906128ee565b6001600160a01b03909216600090815260208052604090209190915550565b6001600160a01b0382166000908152602080526040902054612611908290612906565b600060208083528351808285015260005b8181101561268057858101830151858201604001528201612664565b81811115612692576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116e057600080fd5b600080604083850312156126d057600080fd5b82356126db816126a8565b946020939093013593505050565b6000602082840312156126fb57600080fd5b813561186b816126a8565b600081518084526020808501945080840160005b8381101561273f5781516001600160a01b03168752958201959082019060010161271a565b509495945050505050565b60208152600061186b6020830184612706565b60008060006060848603121561277257600080fd5b833561277d816126a8565b9250602084013561278d816126a8565b929592945050506040919091013590565b6000602082840312156127b057600080fd5b5035919050565b600080602083850312156127ca57600080fd5b823567ffffffffffffffff808211156127e257600080fd5b818501915085601f8301126127f657600080fd5b81358181111561280557600080fd5b8660208260051b850101111561281a57600080fd5b60209290920196919550909350505050565b60006020828403121561283e57600080fd5b8135801515811461186b57600080fd5b6000806040838503121561286157600080fd5b823561286c816126a8565b9150602083013561287c816126a8565b809150509250929050565b600181811c9082168061289b57607f821691505b602082108114156128bc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612901576129016128d8565b500190565b600082821015612918576129186128d8565b500390565b6000600019821415612931576129316128d8565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561296057600080fd5b815161186b816126a8565b8481526080602082015260006129846080830186612706565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156129b357600080fd5b825167ffffffffffffffff808211156129cb57600080fd5b818501915085601f8301126129df57600080fd5b8151818111156129f1576129f1612938565b8060051b604051601f19603f83011681018181108582111715612a1657612a16612938565b604052918252848201925083810185019188831115612a3457600080fd5b938501935b82851015612a5257845184529385019392850192612a39565b98975050505050505050565b634e487b7160e01b600052603160045260246000fd5b6000816000190483118215151615612a8e57612a8e6128d8565b500290565b600082612ab057634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215612aca57600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a060408201526000612b0260a0830186612706565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220d0e4f2e72dcae4ac60647494ca592ca08063adb5fcee687051bd2da75e6547b664736f6c63430008090033000000000000000000000000c797098cda269a746662bcc8a3dec57c37d013860000000000000000000000009c7b34536fa5afbc2038d86d474ae16aad0da6f5

Deployed Bytecode

0x60806040526004361061039b5760003560e01c806370a08231116101dc578063a6de0c5511610102578063dd62ed3e116100a0578063f112932b1161006f578063f112932b14610aac578063f2fde38b14610ac2578063f38c517814610ae2578063ffecf51614610af857600080fd5b8063dd62ed3e14610a2a578063e0725ffb14610a4a578063e4adc86114610a77578063e8078d9414610aa457600080fd5b8063b645d565116100dc578063b645d565146109b4578063bd3900c0146109d4578063c7eb2b64146109ea578063dc1052e214610a0a57600080fd5b8063a6de0c551461095e578063a9059cbb14610974578063a93d02171461099457600080fd5b80638b0414d51161017a57806395d89b411161014957806395d89b41146108ba5780639d0be150146108cf578063a028ea9914610905578063a457c2d71461093e57600080fd5b80638b0414d5146108475780638cd09d50146108675780638da5cb5b146108875780639358928b146108a557600080fd5b80637760fea1116101b65780637760fea1146107c757806378742bcb146107e75780637bffe332146108075780637dea5aab1461082757600080fd5b806370a082311461077c578063715018a61461079c57806373338682146107b157600080fd5b80633bbac579116102c15780635926651d1161025f5780636871c7a81161022e5780636871c7a8146106e057806369ec8e9c146106f6578063704b6c021461072f5780637087a5071461074f57600080fd5b80635926651d1461066057806359633a1c146106805780635ae9e94b146106a05780635fecd926146106c057600080fd5b80634308fa6a1161029b5780634308fa6a146105ec57806349d8ae5e14610602578063524a4da0146106155780635530a3271461064a57600080fd5b80633bbac579146105a15780633eaaf86b146105c1578063425faf96146105d757600080fd5b80631cb9dbba11610339578063313ce56711610308578063313ce5671461053057806335459a3e1461054c578063375632931461056c578063395093511461058157600080fd5b80631cb9dbba146104c257806323b872dd146104d857806323defe35146104f857806330563bd71461050e57600080fd5b80630e0b730e116103755780630e0b730e146104265780630ee685181461045357806318160ddd146104755780631b3554271461048a57600080fd5b806306fdde03146103a7578063095d2d33146103d2578063095ea7b3146103f657600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610b18565b6040516103c99190612653565b60405180910390f35b3480156103de57600080fd5b506103e860095481565b6040519081526020016103c9565b34801561040257600080fd5b506104166104113660046126bd565b610baa565b60405190151581526020016103c9565b34801561043257600080fd5b506103e86104413660046126e9565b60216020526000908152604090205481565b34801561045f57600080fd5b50610468610bc2565b6040516103c9919061274a565b34801561048157600080fd5b50600e546103e8565b34801561049657600080fd5b506014546104aa906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b3480156104ce57600080fd5b506103e860135481565b3480156104e457600080fd5b506104166104f336600461275d565b610c2c565b34801561050457600080fd5b506103e860115481565b34801561051a57600080fd5b5061052e6105293660046126e9565b610c50565b005b34801561053c57600080fd5b50604051601281526020016103c9565b34801561055857600080fd5b5061052e6105673660046126e9565b610c89565b34801561057857600080fd5b5061052e610cc2565b34801561058d57600080fd5b5061041661059c3660046126bd565b610f05565b3480156105ad57600080fd5b506104166105bc3660046126e9565b610f27565b3480156105cd57600080fd5b506103e8600e5481565b3480156105e357600080fd5b5061052e610f45565b3480156105f857600080fd5b506103e860075481565b6103e861061036600461279e565b610fc4565b34801561062157600080fd5b506106356106303660046126e9565b6111e0565b604080519283526020830191909152016103c9565b34801561065657600080fd5b506103e8600f5481565b34801561066c57600080fd5b5061052e61067b3660046126e9565b611288565b34801561068c57600080fd5b5061052e61069b3660046126e9565b611396565b3480156106ac57600080fd5b5061052e6106bb36600461279e565b61154e565b3480156106cc57600080fd5b5061052e6106db3660046126e9565b61156a565b3480156106ec57600080fd5b506103e8600b5481565b34801561070257600080fd5b506104166107113660046126e9565b6001600160a01b03166000908152601c602052604090205460ff1690565b34801561073b57600080fd5b5061052e61074a3660046126e9565b6115b7565b34801561075b57600080fd5b506103e861076a3660046126e9565b60246020526000908152604090205481565b34801561078857600080fd5b506103e86107973660046126e9565b6115e1565b3480156107a857600080fd5b5061052e6115fb565b3480156107bd57600080fd5b506103e860105481565b3480156107d357600080fd5b5061052e6107e23660046126e9565b61160f565b3480156107f357600080fd5b5061052e6108023660046127b7565b61164a565b34801561081357600080fd5b506015546104aa906001600160a01b031681565b34801561083357600080fd5b5061052e61084236600461282c565b6116c9565b34801561085357600080fd5b5061052e6108623660046126e9565b6116e3565b34801561087357600080fd5b5061052e61088236600461279e565b61171c565b34801561089357600080fd5b506005546001600160a01b03166104aa565b3480156108b157600080fd5b506103e8611746565b3480156108c657600080fd5b506103bc611765565b3480156108db57600080fd5b506104aa6108ea3660046126e9565b6025602052600090815260409020546001600160a01b031681565b34801561091157600080fd5b506104166109203660046126e9565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561094a57600080fd5b506104166109593660046126bd565b611774565b34801561096a57600080fd5b506103e860085481565b34801561098057600080fd5b5061041661098f3660046126bd565b6117ef565b3480156109a057600080fd5b506103e86109af3660046126e9565b6117fd565b3480156109c057600080fd5b5061052e6109cf3660046126e9565b611872565b3480156109e057600080fd5b506104aa61dead81565b3480156109f657600080fd5b506019546104aa906001600160a01b031681565b348015610a1657600080fd5b5061052e610a2536600461279e565b6118ab565b348015610a3657600080fd5b506103e8610a4536600461284e565b6118d5565b348015610a5657600080fd5b506103e8610a653660046126e9565b60236020526000908152604090205481565b348015610a8357600080fd5b506103e8610a923660046126e9565b60226020526000908152604090205481565b61052e611900565b348015610ab857600080fd5b506103e860065481565b348015610ace57600080fd5b5061052e610add3660046126e9565b611a57565b348015610aee57600080fd5b506103e860125481565b348015610b0457600080fd5b5061052e610b133660046126e9565b611acd565b606060038054610b2790612887565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5390612887565b8015610ba05780601f10610b7557610100808354040283529160200191610ba0565b820191906000526020600020905b815481529060010190602001808311610b8357829003601f168201915b5050505050905090565b600033610bb8818585611b20565b5060019392505050565b33600090815260266020908152604091829020805483518184028101840190945280845260609392830182828015610ba057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c05575050505050905090565b600033610c3a858285611c44565b610c45858585611cbe565b506001949350505050565b6018546001600160a01b03163314610c6757600080fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b03163314610ca057600080fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b601a54600160a81b900460ff1615610cd957600080fd5b601a805460ff60a81b1916600160a81b179055336000908152601b602052604090205460ff1615610d0957600080fd5b33600090815260266020908152604080832054601c90925282205482919060ff1615610d3457600192505b610d3d336117fd565b91508015610e565760005b81811015610e5457336000908152602660205260408120805483908110610d7157610d716128c2565b60009182526020822001546001600160a01b03169150610d90826117fd565b33600090815260236020526040812080549293508392909190610db49084906128ee565b90915550506001600160a01b03821660009081526024602052604081208054839290610de19084906128ee565b90915550610df1905081866128ee565b94508060136000828254610e0591906128ee565b90915550506010546001600160a01b038316600090815260216020526040902055610e31600185612906565b831415610e3f575050610e54565b50508080610e4c9061291d565b915050610d48565b505b8115610ef357610e663383611ffb565b8160116000828254610e7891906128ee565b90915550503360009081526022602052604081208054849290610e9c9084906128ee565b909155505060105433600081815260216020526040908190209290925590517fb4ab0faacc0308bf282db874520a67cb8357633ffe604ef19250704a17b678a490610eea9085815260200190565b60405180910390a25b5050601a805460ff60a81b1916905550565b600033610bb8818585610f1883836118d5565b610f2291906128ee565b611b20565b6001600160a01b03166000908152601e602052604090205460ff1690565b6019546001600160a01b03163314610f5c57600080fd5b600f54601954610f75906001600160a01b031682611ffb565b80600f6000828254610f879190612906565b909155505060405181815233907f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e9060200160405180910390a250565b604080516002808252606082018352600092839291906020830190803683375050601a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561102d57600080fd5b505afa158015611041573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611065919061294e565b81600081518110611078576110786128c2565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106110ac576110ac6128c2565b6001600160a01b039092166020928302919091019091015260006110d084426128ee565b601a54604051637ff36ab560e01b81529192506000916001600160a01b0390911690637ff36ab5903490611110908590889061dead90899060040161296b565b6000604051808303818588803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261116691908101906129a0565b9050600081600183516111799190612906565b81518110611189576111896128c2565b6020026020010151905060008111156103a257604080513481526020810183905233917f79650a26d9c122dcabbd86157b7bdabd291e5058cef11fc21c572518a1690ee6910160405180910390a295945050505050565b6001600160a01b03811660009081526026602052604081205490805b82811015611282576001600160a01b0384166000908152602660205260409020805461124d919083908110611233576112336128c2565b6000918252602090912001546001600160a01b03166117fd565b61125790836128ee565b9150611264600184612906565b81141561127057611282565b8061127a8161291d565b9150506111fc565b50915091565b61129133610f27565b1580156112a457506112a281610f27565b155b6112ad57600080fd5b336000908152602560205260409020546001600160a01b03828116911614156113165760405162461bcd60e51b815260206004820152601660248201527520b63932b0b23c9030b23232b21030b9902237b737b960511b60448201526064015b60405180910390fd5b33600081815260256020908152604080832080546001600160a01b0387166001600160a01b031991821681179092559084526026835281842080546001818101835582875285872090910180549093168717909255805495855281019092528220839055601280549192909161138d9084906128ee565b90915550505050565b6001600160a01b03811660009081526026602090815260408083203384526001019091529020546114095760405162461bcd60e51b815260206004820152601b60248201527f796f7520617265206e6f7420696e20646f6e6f7273206c697374210000000000604482015260640161130d565b33600081815260256020908152604080832080546001600160a01b031916851790556001600160a01b03851680845260268084528285209585526001860184529184205493529052815490918161145e6128c2565b60009182526020808320909101546001600160a01b03868116845260269092526040909220911690611491600185612906565b815481106114a1576114a16128c2565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591851681526026909152604090208054806114e6576114e6612a5e565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0385168252602681526040808320338452600190810190925282208290556012805491929091611544908490612906565b9091555050505050565b6018546001600160a01b0316331461156557600080fd5b600955565b6018546001600160a01b0316331461158157600080fd5b6001600160a01b03166000908152601e60209081526040808320805460ff19908116909155601b90925290912080549091169055565b6115bf612095565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0316600090815260208052604090205490565b611603612095565b61160d60006120ef565b565b6018546001600160a01b0316331461162657600080fd5b6001600160a01b03166000908152601d60205260409020805460ff19166001179055565b611652612095565b60005b818110156116c4576001601c6000858585818110611675576116756128c2565b905060200201602081019061168a91906126e9565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806116bc8161291d565b915050611655565b505050565b6116d1612095565b80156116e05743600d5542600c555b50565b6018546001600160a01b031633146116fa57600080fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b0316331461173357600080fd5b600a81111561174157600080fd5b600755565b600061175361dead6115e1565b600e546117609190612906565b905090565b606060048054610b2790612887565b6000338161178282866118d5565b9050838110156117e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161130d565b610c458286868403611b20565b600033610bb8818585611cbe565b6001600160a01b038116600090815260216020526040812054601054829161182491612906565b60145490915061183c906001600160a01b03166115e1565b611844611746565b61184e9190612906565b611857846115e1565b6118619083612a74565b61186b9190612a93565b9392505050565b6018546001600160a01b0316331461188957600080fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b031633146118c257600080fd5b600a8111156118d057600080fd5b600655565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611908612095565b601a805460ff60b01b1916600160b01b1790556b033b2e3c9fd0803ce80000006000606461193783605a612a74565b6119419190612a93565b9050600061194f8284612906565b905061195b3083612141565b6119653382612141565b601a5461197d9030906001600160a01b031684611b20565b601a546001600160a01b031663f305d7193430856000806119a66005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611a0957600080fd5b505af1158015611a1d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a429190612ab5565b5050601a805460ff60b01b1916905550505050565b611a5f612095565b6001600160a01b038116611ac45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161130d565b6116e0816120ef565b6018546001600160a01b03163314611ae457600080fd5b601a546001600160a01b0382811691161480611b0d57506014546001600160a01b038281169116145b15611b1757600080fd5b6116e0816121c2565b6001600160a01b038316611b825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161130d565b6001600160a01b038216611be35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161130d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611c5084846118d5565b90506000198114611cb85781811015611cab5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161130d565b611cb88484848403611b20565b50505050565b6001600160a01b0383166000908152601c602052604090205460ff1680611cfd57506001600160a01b0382166000908152601c602052604090205460ff165b15611d5357611d0b826115e1565b611d28576001600b6000828254611d2291906128ee565b90915550505b611d338383836121fe565b611d3c836115e1565b6116c4576001600b60008282546115449190612906565b600d5415801590611d665750600d544310155b611d6f57600080fd5b611d7883610f27565b158015611d8b5750611d8933610f27565b155b8015611d9d5750611d9b82610f27565b155b611da657600080fd5b601a54600160b01b900460ff1680611dc75750601a54600160a01b900460ff165b80611dd457506009548111155b611ddd57600080fd5b6001600160a01b0383166000908152601d602052604090205460ff1615611e5c57600c54611e0e9062278d006128ee565b4211611e5c5760405162461bcd60e51b815260206004820152601a60248201527f7465616d20746f6b656e73206c6f636b65642033302064617973000000000000604482015260640161130d565b600d544311158015611e7b57506014546001600160a01b038481169116145b15611e8957611e89826121c2565b601a54600160a01b900460ff16158015611ea557506000600a54115b8015611ebe57506014546001600160a01b038381169116145b15611ece57611ece600a546122a5565b601454819060009081906001600160a01b0387811691161415611f1e5760095484611ef8876115e1565b611f0291906128ee565b10611f0c57600080fd5b611f1884600654612599565b90935090505b6014546001600160a01b0386811691161415611f54576009548410611f4257600080fd5b611f4e84600754612599565b90935091505b611f5f8686856121fe565b8115611f6f57611f6f86836125c7565b8015611f7f57611f7f86826125c7565b6014546001600160a01b0387811691161415611fb1576001600160a01b0385166000908152601f602052604090204390555b6014546001600160a01b038681169116148015611fe557506001600160a01b0386166000908152601f602052604090205443145b15611ff357611ff3866121c2565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612048576040519150601f19603f3d011682016040523d82523d6000602084013e61204d565b606091505b50509050806116c45760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640161130d565b6005546001600160a01b0316331461160d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161130d565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6b033b2e3cadb136f08f640000600e541061215b57600080fd5b80600e600082825461216d91906128ee565b9091555061217d905082826125ee565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03166000908152601e602090815260408083208054600160ff199182168117909255601b909352922080549091169091179055565b6001600160a01b03831661221157600080fd5b6001600160a01b03821661222457600080fd5b600061222f846115e1565b90508181101561223e57600080fd5b6122488483612630565b61225283836125ee565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161229791815260200190565b60405180910390a350505050565b601a54600160a01b900460ff16156122bc57600080fd5b601a805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110612304576123046128c2565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561235857600080fd5b505afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612390919061294e565b816001815181106123a3576123a36128c2565b6001600160a01b039283166020918202929092010152601a546123c99130911684611b20565b601a5460405163791ac94760e01b815247916001600160a01b03169063791ac94790612402908690600090879030904290600401612ae3565b600060405180830381600087803b15801561241c57600080fd5b505af1158015612430573d6000803e3d6000fd5b50505050600081476124429190612906565b905083600a60008282546124569190612906565b9091555060009050606461246b83603c612a74565b6124759190612a93565b90506000606461248684600a612a74565b6124909190612a93565b9050600060646124a185600a612a74565b6124ab9190612a93565b9050600060646124bc866005612a74565b6124c69190612a93565b905081601060008282546124da91906128ee565b9250508190555080600f60008282546124f391906128ee565b9091555060009050818385612508888a612906565b6125129190612906565b61251c9190612906565b6125269190612906565b9050806008600082825461253a91906128ee565b9091555050601554612555906001600160a01b031682611ffb565b60165461256b906001600160a01b031686611ffb565b601754612581906001600160a01b031685611ffb565b5050601a805460ff60a01b1916905550505050505050565b60008060646125a88486612a74565b6125b29190612a93565b90506125be8185612906565b91509250929050565b80600a60008282546125d991906128ee565b909155506125ea90508230836121fe565b5050565b6001600160a01b03821660009081526020805260409020546126119082906128ee565b6001600160a01b03909216600090815260208052604090209190915550565b6001600160a01b0382166000908152602080526040902054612611908290612906565b600060208083528351808285015260005b8181101561268057858101830151858201604001528201612664565b81811115612692576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116e057600080fd5b600080604083850312156126d057600080fd5b82356126db816126a8565b946020939093013593505050565b6000602082840312156126fb57600080fd5b813561186b816126a8565b600081518084526020808501945080840160005b8381101561273f5781516001600160a01b03168752958201959082019060010161271a565b509495945050505050565b60208152600061186b6020830184612706565b60008060006060848603121561277257600080fd5b833561277d816126a8565b9250602084013561278d816126a8565b929592945050506040919091013590565b6000602082840312156127b057600080fd5b5035919050565b600080602083850312156127ca57600080fd5b823567ffffffffffffffff808211156127e257600080fd5b818501915085601f8301126127f657600080fd5b81358181111561280557600080fd5b8660208260051b850101111561281a57600080fd5b60209290920196919550909350505050565b60006020828403121561283e57600080fd5b8135801515811461186b57600080fd5b6000806040838503121561286157600080fd5b823561286c816126a8565b9150602083013561287c816126a8565b809150509250929050565b600181811c9082168061289b57607f821691505b602082108114156128bc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612901576129016128d8565b500190565b600082821015612918576129186128d8565b500390565b6000600019821415612931576129316128d8565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561296057600080fd5b815161186b816126a8565b8481526080602082015260006129846080830186612706565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156129b357600080fd5b825167ffffffffffffffff808211156129cb57600080fd5b818501915085601f8301126129df57600080fd5b8151818111156129f1576129f1612938565b8060051b604051601f19603f83011681018181108582111715612a1657612a16612938565b604052918252848201925083810185019188831115612a3457600080fd5b938501935b82851015612a5257845184529385019392850192612a39565b98975050505050505050565b634e487b7160e01b600052603160045260246000fd5b6000816000190483118215151615612a8e57612a8e6128d8565b500290565b600082612ab057634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215612aca57600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a060408201526000612b0260a0830186612706565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220d0e4f2e72dcae4ac60647494ca592ca08063adb5fcee687051bd2da75e6547b664736f6c63430008090033

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

000000000000000000000000c797098cda269a746662bcc8a3dec57c37d013860000000000000000000000009c7b34536fa5afbc2038d86d474ae16aad0da6f5

-----Decoded View---------------
Arg [0] : developmentAddr (address): 0xC797098CDA269A746662bcc8A3dEc57c37d01386
Arg [1] : marketingAddr (address): 0x9c7B34536FA5Afbc2038D86d474Ae16aad0Da6f5

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c797098cda269a746662bcc8a3dec57c37d01386
Arg [1] : 0000000000000000000000009c7b34536fa5afbc2038d86d474ae16aad0da6f5


Deployed Bytecode Sourcemap

29074:17256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17738:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29833:45;;;;;;;;;;;;;;;;;;;762:25:1;;;750:2;735:18;29833:45:0;616:177:1;20089:201:0;;;;;;;;;;-1:-1:-1;20089:201:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;20089:201:0;1254:187:1;31167:51:0;;;;;;;;;;-1:-1:-1;31167:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;41119:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;45907:104::-;;;;;;;;;;-1:-1:-1;45989:12:0;;45907:104;;30276:27;;;;;;;;;;-1:-1:-1;30276:27:0;;;;-1:-1:-1;;;;;30276:27:0;;;;;;-1:-1:-1;;;;;2594:32:1;;;2576:51;;2564:2;2549:18;30276:27:0;2430:203:1;30234:33:0;;;;;;;;;;;;;;;;20870:295;;;;;;;;;;-1:-1:-1;20870:295:0;;;;;:::i;:::-;;:::i;30146:31::-;;;;;;;;;;;;;;;;44697:133;;;;;;;;;;-1:-1:-1;44697:133:0;;;;;:::i;:::-;;:::i;:::-;;18700:93;;;;;;;;;;-1:-1:-1;18700:93:0;;18783:2;3501:36:1;;3489:2;3474:18;18700:93:0;3359:184:1;44579:110:0;;;;;;;;;;-1:-1:-1;44579:110:0;;;;;:::i;:::-;;:::i;41919:1222::-;;;;;;;;;;;;;:::i;21574:238::-;;;;;;;;;;-1:-1:-1;21574:238:0;;;;;:::i;:::-;;:::i;33915:102::-;;;;;;;;;;-1:-1:-1;33915:102:0;;;;;:::i;:::-;;:::i;30035:27::-;;;;;;;;;;;;;;;;39333:242;;;;;;;;;;;;;:::i;29752:25::-;;;;;;;;;;;;;;;;38656:641;;;;;;:::i;:::-;;:::i;41253:393::-;;;;;;;;;;-1:-1:-1;41253:393:0;;;;;:::i;:::-;;:::i;:::-;;;;3907:25:1;;;3963:2;3948:18;;3941:34;;;;3880:18;41253:393:0;3733:248:1;30071:27:0;;;;;;;;;;;;;;;;39761:616;;;;;;;;;;-1:-1:-1;39761:616:0;;;;;:::i;:::-;;:::i;40385:726::-;;;;;;;;;;-1:-1:-1;40385:726:0;;;;;:::i;:::-;;:::i;44838:111::-;;;;;;;;;;-1:-1:-1;44838:111:0;;;;;:::i;:::-;;:::i;34338:139::-;;;;;;;;;;-1:-1:-1;34338:139:0;;;;;:::i;:::-;;:::i;29922:23::-;;;;;;;;;;;;;;;;33155:118;;;;;;;;;;-1:-1:-1;33155:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;33242:21:0;33216:4;33242:21;;;:12;:21;;;;;;;;;33155:118;44219:108;;;;;;;;;;-1:-1:-1;44219:108:0;;;;;:::i;:::-;;:::i;31355:52::-;;;;;;;;;;-1:-1:-1;31355:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;45769:130;;;;;;;;;;-1:-1:-1;45769:130:0;;;;;:::i;:::-;;:::i;11158:103::-;;;;;;;;;;;;;:::i;30107:30::-;;;;;;;;;;;;;;;;33627:103;;;;;;;;;;-1:-1:-1;33627:103:0;;;;;:::i;:::-;;:::i;33390:210::-;;;;;;;;;;-1:-1:-1;33390:210:0;;;;;:::i;:::-;;:::i;30312:38::-;;;;;;;;;;-1:-1:-1;30312:38:0;;;;-1:-1:-1;;;;;30312:38:0;;;44957:248;;;;;;;;;;-1:-1:-1;44957:248:0;;;;;:::i;:::-;;:::i;44459:112::-;;;;;;;;;;-1:-1:-1;44459:112:0;;;;;:::i;:::-;;:::i;44077:134::-;;;;;;;;;;-1:-1:-1;44077:134:0;;;;;:::i;:::-;;:::i;10510:87::-;;;;;;;;;;-1:-1:-1;10583:6:0;;-1:-1:-1;;;;;10583:6:0;10510:87;;33005:127;;;;;;;;;;;;;:::i;17957:104::-;;;;;;;;;;;;;:::i;31416:52::-;;;;;;;;;;-1:-1:-1;31416:52:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;31416:52:0;;;33738:116;;;;;;;;;;-1:-1:-1;33738:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;33824:20:0;33798:4;33824:20;;;:11;:20;;;;;;;;;33738:116;22315:436;;;;;;;;;;-1:-1:-1;22315:436:0;;;;;:::i;:::-;;:::i;29798:26::-;;;;;;;;;;;;;;;;19362:193;;;;;;;;;;-1:-1:-1;19362:193:0;;;;;:::i;:::-;;:::i;41654:257::-;;;;;;;;;;-1:-1:-1;41654:257:0;;;;;:::i;:::-;;:::i;44335:116::-;;;;;;;;;;-1:-1:-1;44335:116:0;;;;;:::i;:::-;;:::i;30547:81::-;;;;;;;;;;;;30586:42;30547:81;;30496:42;;;;;;;;;;-1:-1:-1;30496:42:0;;;;-1:-1:-1;;;;;30496:42:0;;;43937:132;;;;;;;;;;-1:-1:-1;43937:132:0;;;;;:::i;:::-;;:::i;19618:151::-;;;;;;;;;;-1:-1:-1;19618:151:0;;;;;:::i;:::-;;:::i;31292:54::-;;;;;;;;;;-1:-1:-1;31292:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;31227:56;;;;;;;;;;-1:-1:-1;31227:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;32491:506;;;:::i;29707:24::-;;;;;;;;;;;;;;;;11416:201;;;;;;;;;;-1:-1:-1;11416:201:0;;;;;:::i;:::-;;:::i;30186:39::-;;;;;;;;;;;;;;;;34162:168;;;;;;;;;;-1:-1:-1;34162:168:0;;;;;:::i;:::-;;:::i;17738:100::-;17792:13;17825:5;17818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17738:100;:::o;20089:201::-;20172:4;9141:10;20228:32;9141:10;20244:7;20253:6;20228:8;:32::i;:::-;-1:-1:-1;20278:4:0;;20089:201;-1:-1:-1;;;20089:201:0:o;41119:126::-;41215:10;41202:24;;;;:12;:24;;;;;;;;;41195:40;;;;;;;;;;;;;;;;;41166:16;;41195:40;;;41202:24;41195:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41195:40:0;;;;;;;;;;;;;;;;;;;;;;41119:126;:::o;20870:295::-;21001:4;9141:10;21059:38;21075:4;9141:10;21090:6;21059:15;:38::i;:::-;21108:27;21118:4;21124:2;21128:6;21108:9;:27::i;:::-;-1:-1:-1;21153:4:0;;20870:295;-1:-1:-1;;;;20870:295:0:o;44697:133::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44784:19:::1;:36:::0;;-1:-1:-1;;;;;;44784:36:0::1;-1:-1:-1::0;;;;;44784:36:0;;;::::1;::::0;;;::::1;::::0;;44697:133::o;44579:110::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44654:15:::1;:25:::0;;-1:-1:-1;;;;;;44654:25:0::1;-1:-1:-1::0;;;;;44654:25:0;;;::::1;::::0;;;::::1;::::0;;44579:110::o;41919:1222::-;29506:11;;-1:-1:-1;;;29506:11:0;;;;29505:12;29497:21;;;;;;29531:11;:18;;-1:-1:-1;;;;29531:18:0;-1:-1:-1;;;29531:18:0;;;42001:10:::1;29531:18:::0;41986:26;;;:14:::1;:26;::::0;;;;;29531:18;41986:26:::1;41985:27;41977:36;;;::::0;::::1;;42105:10;42039:12;42092:24:::0;;;:12:::1;:24;::::0;;;;;;;:40;33242:12;:21;;;;;;42039:12;;42092:40;33242:21;;42145:41:::1;;;42183:1;42175:9;;42145:41;42210:34;42233:10;42210:22;:34::i;:::-;42198:46:::0;-1:-1:-1;42272:3:0;;42269:531:::1;;42298:6;42293:494;42314:1;42310;:5;42293:494;;;42372:10;42343:13;42359:24:::0;;;:12:::1;:24;::::0;;;;:36;;42393:1;;42359:36;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;42359:36:0::1;::::0;-1:-1:-1;42431:29:0::1;42359:36:::0;42431:22:::1;:29::i;:::-;42501:10;42481:31;::::0;;;:19:::1;:31;::::0;;;;:39;;42416:44;;-1:-1:-1;42416:44:0;;42481:31;;;:39:::1;::::0;42416:44;;42481:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;42541:24:0;::::1;;::::0;;;:17:::1;:24;::::0;;;;:32;;42569:4;;42541:24;:32:::1;::::0;42569:4;;42541:32:::1;:::i;:::-;::::0;;;-1:-1:-1;42594:17:0::1;::::0;-1:-1:-1;42607:4:0;42594:17;::::1;:::i;:::-;;;42635:4;42613:18;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;42687:15:0::1;::::0;-1:-1:-1;;;;;42661:23:0;::::1;;::::0;;;:16:::1;:23;::::0;;;;:41;42758:3:::1;42760:1;42758::::0;:3:::1;:::i;:::-;42753:1;:8;42750:20;;;42763:5;;;;42750:20;42322:465;;42317:3;;;;;:::i;:::-;;;;42293:494;;;;42269:531;42815:11:::0;;42812:312:::1;;42844:34;42856:10;42868:9;42844:11;:34::i;:::-;42915:9;42895:16;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;42963:10:0::1;42941:33;::::0;;;:21:::1;:33;::::0;;;;:46;;42978:9;;42941:33;:46:::1;::::0;42978:9;;42941:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;43035:15:0::1;::::0;43021:10:::1;43004:28;::::0;;;:16:::1;:28;::::0;;;;;;:46;;;;43072:38;;::::1;::::0;::::1;::::0;43100:9;762:25:1;;750:2;735:18;;616:177;43072:38:0::1;;;;;;;;42812:312;-1:-1:-1::0;;29576:11:0;:19;;-1:-1:-1;;;;29576:19:0;;;-1:-1:-1;41919:1222:0:o;21574:238::-;21662:4;9141:10;21718:64;9141:10;21734:7;21771:10;21743:25;9141:10;21734:7;21743:9;:25::i;:::-;:38;;;;:::i;:::-;21718:8;:64::i;33915:102::-;-1:-1:-1;;;;;33994:13:0;33968:4;33994:13;;;:4;:13;;;;;;;;;33915:102::o;39333:242::-;29664:19;;-1:-1:-1;;;;;29664:19:0;29650:10;:33;29642:42;;;;;;39413:12:::1;::::0;39450:19:::1;::::0;39438:42:::1;::::0;-1:-1:-1;;;;;39450:19:0::1;39413:12:::0;39438:11:::1;:42::i;:::-;39509:8;39493:12;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;39535:30:0::1;::::0;762:25:1;;;39544:10:0::1;::::0;39535:30:::1;::::0;750:2:1;735:18;39535:30:0::1;;;;;;;39381:194;39333:242::o:0;38656:641::-;38767:16;;;38781:1;38767:16;;;;;;;;38721:7;;;;38767:16;38781:1;38767:16;;;;;;;;-1:-1:-1;;38806:7:0;;:14;;;-1:-1:-1;;;38806:14:0;;;;38743:40;;-1:-1:-1;;;;;;38806:7:0;;;;:12;;-1:-1:-1;38806:14:0;;;;;;;;;;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38796:4;38801:1;38796:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;38796:24:0;;;-1:-1:-1;;;;;38796:24:0;;;;;38851:4;38833;38838:1;38833:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38833:23:0;;;:7;;;;;;;;;;;:23;38869:13;38885:30;38903:12;38885:15;:30;:::i;:::-;38952:7;;:89;;-1:-1:-1;;;38952:89:0;;38869:46;;-1:-1:-1;38928:21:0;;-1:-1:-1;;;;;38952:7:0;;;;:29;;38989:9;;38952:89;;38928:21;;39003:4;;30586:42;;38869:46;;38952:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;38952:89:0;;;;;;;;;;;;:::i;:::-;38928:113;;39054:24;39089:7;39114:1;39097:7;:14;:18;;;;:::i;:::-;39089:27;;;;;;;;:::i;:::-;;;;;;;39054:63;;39151:1;39133:16;:19;39130:122;;;39175:48;;;39195:9;3907:25:1;;3963:2;3948:18;;3941:34;;;39183:10:0;;39175:48;;3880:18:1;39175:48:0;;;;;;;39271:16;38656:641;-1:-1:-1;;;;;38656:641:0:o;41253:393::-;-1:-1:-1;;;;;41360:18:0;;41316:6;41360:18;;;:12;:18;;;;;:34;;41316:6;41407:196;41428:1;41424;:5;41407:196;;;-1:-1:-1;;;;;41522:18:0;;;;;;:12;:18;;;;;:30;;41499:54;;41522:18;41550:1;;41522:30;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;41522:30:0;41499:22;:54::i;:::-;41486:67;;;;:::i;:::-;;-1:-1:-1;41578:3:0;41580:1;41578;:3;:::i;:::-;41573:1;:8;41570:20;;;41583:5;;41570:20;41431:3;;;;:::i;:::-;;;;41407:196;;;;41253:393;;;:::o;39761:616::-;39830:17;39836:10;39830:5;:17::i;:::-;39829:18;:37;;;;;39852:14;39858:7;39852:5;:14::i;:::-;39851:15;39829:37;39821:46;;;;;;39906:10;39888:29;;;;:17;:29;;;;;;-1:-1:-1;;;;;39888:40:0;;;:29;;:40;;39880:75;;;;-1:-1:-1;;;39880:75:0;;8776:2:1;39880:75:0;;;8758:21:1;8815:2;8795:18;;;8788:30;-1:-1:-1;;;8834:18:1;;;8827:52;8896:18;;39880:75:0;;;;;;;;;40050:10;40032:29;;;;:17;:29;;;;;;;;:39;;-1:-1:-1;;;;;40032:39:0;;-1:-1:-1;;;;;;40032:39:0;;;;;;;;40118:21;;;:12;:21;;;;;:47;;40032:39;40118:47;;;;;;;;;;;;;;;;;;;;;;;;40190:37;;40261:47;;;:35;;:47;;;;;:55;;;40338:24;:29;;40032:39;;40338:24;;:29;;40032:39;;40338:29;:::i;:::-;;;;-1:-1:-1;;;;39761:616:0:o;40385:726::-;-1:-1:-1;;;;;40456:21:0;;;;;;:12;:21;;;;;;;;40492:10;40456:47;;:35;;:47;;;;;;40448:91;;;;-1:-1:-1;;;40448:91:0;;9127:2:1;40448:91:0;;;9109:21:1;9166:2;9146:18;;;9139:30;9205:29;9185:18;;;9178:57;9252:18;;40448:91:0;8925:351:1;40448:91:0;40636:10;40604:29;;;;:17;:29;;;;;;;;:42;;-1:-1:-1;;;;;;40604:42:0;;;;;-1:-1:-1;;;;;40671:21:0;;;;;:12;:21;;;;;;:47;;;40604:42;40671:35;;:47;;;;;;40807:21;;;;:37;;40671:47;;40807:37;40900:41;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;40856:21:0;;;;;:12;:21;;;;;;;40900:41;;;40887:9;40900:41;40887:5;:9;:::i;:::-;40856:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;:85;;-1:-1:-1;;;;;;40856:85:0;-1:-1:-1;;;;;40856:85:0;;;;;;40953:21;;;;;:12;:21;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;40953:36:0;;;;;-1:-1:-1;;;;;;40953:36:0;;;;;;;;;-1:-1:-1;;;;;41001:21:0;;;;:12;:21;;;;;;41037:10;41001:47;;40953:36;41001:35;;;:47;;;;;:51;;;41072:24;:29;;40953:36;;41072:24;;:29;;40953:36;;41072:29;:::i;:::-;;;;-1:-1:-1;;;;;40385:726:0:o;44838:111::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44913:12:::1;:26:::0;44838:111::o;34338:139::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;-1:-1:-1;;;;;34402:13:0::1;34418:5;34402:13:::0;;;:4:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;34402:21:0;;::::1;::::0;;;34436:14:::1;:23:::0;;;;;;:31;;;;::::1;::::0;;34338:139::o;44219:108::-;10396:13;:11;:13::i;:::-;44295:12:::1;:22:::0;;-1:-1:-1;;;;;;44295:22:0::1;-1:-1:-1::0;;;;;44295:22:0;;;::::1;::::0;;;::::1;::::0;;44219:108::o;45769:130::-;-1:-1:-1;;;;;45871:18:0;45843:7;45871:18;;;:9;:18;;;;;;;45769:130::o;11158:103::-;10396:13;:11;:13::i;:::-;11223:30:::1;11250:1;11223:18;:30::i;:::-;11158:103::o:0;33627:::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;-1:-1:-1;;;;;33693:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;33693:27:0::1;33716:4;33693:27;::::0;;33627:103::o;33390:210::-;10396:13;:11;:13::i;:::-;33482:9:::1;33478:113;33497:19:::0;;::::1;33478:113;;;33573:4;33545:12;:25;33558:8;;33567:1;33558:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33545:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;33545:25:0;:32;;-1:-1:-1;;33545:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33518:3;::::1;::::0;::::1;:::i;:::-;;;;33478:113;;;;33390:210:::0;;:::o;44957:248::-;10396:13;:11;:13::i;:::-;45038:12:::1;45035:134;;;45089:12;45068:18;:33:::0;45134:15:::1;45118:13;:31:::0;45035:134:::1;44957:248:::0;:::o;44459:112::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44535:16:::1;:26:::0;;-1:-1:-1;;;;;;44535:26:0::1;-1:-1:-1::0;;;;;44535:26:0;;;::::1;::::0;;;::::1;::::0;;44459:112::o;44077:134::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44168:2:::1;44160:4;:10;;44138:33;;;::::0;::::1;;44185:9;:16:::0;44077:134::o;33005:127::-;33055:7;33099:23;30586:42;33099:9;:23::i;:::-;33084:12;;:38;;;;:::i;:::-;33077:45;;33005:127;:::o;17957:104::-;18013:13;18046:7;18039:14;;;;;:::i;22315:436::-;22408:4;9141:10;22408:4;22491:25;9141:10;22508:7;22491:9;:25::i;:::-;22464:52;;22555:15;22535:16;:35;;22527:85;;;;-1:-1:-1;;;22527:85:0;;9615:2:1;22527:85:0;;;9597:21:1;9654:2;9634:18;;;9627:30;9693:34;9673:18;;;9666:62;-1:-1:-1;;;9744:18:1;;;9737:35;9789:19;;22527:85:0;9413:401:1;22527:85:0;22648:60;22657:5;22664:7;22692:15;22673:16;:34;22648:8;:60::i;19362:193::-;19441:4;9141:10;19497:28;9141:10;19514:2;19518:6;19497:9;:28::i;41654:257::-;-1:-1:-1;;;;;41780:22:0;;41720:7;41780:22;;;:16;:22;;;;;;41762:15;;41720:7;;41762:40;;;:::i;:::-;41887:12;;41742:60;;-1:-1:-1;41877:23:0;;-1:-1:-1;;;;;41887:12:0;41877:9;:23::i;:::-;41855:19;:17;:19::i;:::-;:45;;;;:::i;:::-;41835:15;41845:4;41835:9;:15::i;:::-;41823:27;;:9;:27;:::i;:::-;41822:79;;;;:::i;:::-;41815:86;41654:257;-1:-1:-1;;;41654:257:0:o;44335:116::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44413:18:::1;:28:::0;;-1:-1:-1;;;;;;44413:28:0::1;-1:-1:-1::0;;;;;44413:28:0;;;::::1;::::0;;;::::1;::::0;;44335:116::o;43937:132::-;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;44027:2:::1;44019:4;:10;;43997:33;;;::::0;::::1;;44044:8;:15:::0;43937:132::o;19618:151::-;-1:-1:-1;;;;;19734:18:0;;;19707:7;19734:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19618:151::o;32491:506::-;10396:13;:11;:13::i;:::-;29375:15:::1;:22:::0;;-1:-1:-1;;;;29375:22:0::1;-1:-1:-1::0;;;29375:22:0::1;::::0;;32585:17:::2;29375:22:::0;32650:3:::2;32635:11;32585:17:::0;32644:2:::2;32635:11;:::i;:::-;32634:19;;;;:::i;:::-;32615:38:::0;-1:-1:-1;32666:18:0::2;32687:17;32615:38:::0;32687:6;:17:::2;:::i;:::-;32666:38;;32717:30;32731:4;32738:8;32717:5;:30::i;:::-;32760:29;32766:10;32778;32760:5;:29::i;:::-;32834:7;::::0;32802:51:::2;::::0;32819:4:::2;::::0;-1:-1:-1;;;;;32834:7:0::2;32844:8:::0;32802::::2;:51::i;:::-;32866:7;::::0;-1:-1:-1;;;;;32866:7:0::2;:23;32897:9;32932:4;32938:8:::0;32866:7:::2;::::0;32951::::2;10583:6:::0;;-1:-1:-1;;;;;10583:6:0;;10510:87;32951:7:::2;32866:121;::::0;::::2;::::0;;;-1:-1:-1;;;;;;32866:121:0;;;-1:-1:-1;;;;;10573:15:1;;;32866:121:0::2;::::0;::::2;10555:34:1::0;10605:18;;;10598:34;;;;10648:18;;;10641:34;;;;10691:18;;;10684:34;10755:15;;;10734:19;;;10727:44;32959:15:0::2;10787:19:1::0;;;10780:35;10489:19;;32866:121:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;29424:15:0::1;:23:::0;;-1:-1:-1;;;;29424:23:0::1;::::0;;-1:-1:-1;;;;32491:506:0:o;11416:201::-;10396:13;:11;:13::i;:::-;-1:-1:-1;;;;;11505:22:0;::::1;11497:73;;;::::0;-1:-1:-1;;;11497:73:0;;11339:2:1;11497:73:0::1;::::0;::::1;11321:21:1::0;11378:2;11358:18;;;11351:30;11417:34;11397:18;;;11390:62;-1:-1:-1;;;11468:18:1;;;11461:36;11514:19;;11497:73:0::1;11137:402:1::0;11497:73:0::1;11581:28;11600:8;11581:18;:28::i;34162:168::-:0;29169:12;;-1:-1:-1;;;;;29169:12:0;29155:10;:26;29147:35;;;;;;34245:7:::1;::::0;-1:-1:-1;;;;;34226:27:0;;::::1;34245:7:::0;::::1;34226:27;::::0;:54:::1;;-1:-1:-1::0;34268:12:0::1;::::0;-1:-1:-1;;;;;34257:23:0;;::::1;34268:12:::0;::::1;34257:23;34226:54;34223:69;;;34282:8;::::0;::::1;34223:69;34304:16;34312:7;34304;:16::i;26342:380::-:0;-1:-1:-1;;;;;26478:19:0;;26470:68;;;;-1:-1:-1;;;26470:68:0;;11746:2:1;26470:68:0;;;11728:21:1;11785:2;11765:18;;;11758:30;11824:34;11804:18;;;11797:62;-1:-1:-1;;;11875:18:1;;;11868:34;11919:19;;26470:68:0;11544:400:1;26470:68:0;-1:-1:-1;;;;;26557:21:0;;26549:68;;;;-1:-1:-1;;;26549:68:0;;12151:2:1;26549:68:0;;;12133:21:1;12190:2;12170:18;;;12163:30;12229:34;12209:18;;;12202:62;-1:-1:-1;;;12280:18:1;;;12273:32;12322:19;;26549:68:0;11949:398:1;26549:68:0;-1:-1:-1;;;;;26630:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26682:32;;762:25:1;;;26682:32:0;;735:18:1;26682:32:0;;;;;;;26342:380;;;:::o;27013:453::-;27148:24;27175:25;27185:5;27192:7;27175:9;:25::i;:::-;27148:52;;-1:-1:-1;;27215:16:0;:37;27211:248;;27297:6;27277:16;:26;;27269:68;;;;-1:-1:-1;;;27269:68:0;;12554:2:1;27269:68:0;;;12536:21:1;12593:2;12573:18;;;12566:30;12632:31;12612:18;;;12605:59;12681:18;;27269:68:0;12352:353:1;27269:68:0;27381:51;27390:5;27397:7;27425:6;27406:16;:25;27381:8;:51::i;:::-;27137:329;27013:453;;;:::o;34919:2302::-;-1:-1:-1;;;;;33242:21:0;;33216:4;33242:21;;;:12;:21;;;;;;;;35066:49;;;-1:-1:-1;;;;;;33242:21:0;;33216:4;33242:21;;;:12;:21;;;;;;;;35091:24;35062:282;;;35137:20;35147:9;35137;:20::i;:::-;35134:45;;35175:1;35164:8;;:12;;;;;;;:::i;:::-;;;;-1:-1:-1;;35134:45:0;35203:39;35216:6;35224:9;35235:6;35203:12;:39::i;:::-;35262:17;35272:6;35262:9;:17::i;:::-;35259:42;;35298:1;35286:8;;:13;;;;;;;:::i;35062:282::-;35404:18;;:23;;;;:61;;;35447:18;;35431:12;:34;;35404:61;35396:70;;;;;;35488:13;35494:6;35488:5;:13::i;:::-;35487:14;:36;;;;;35506:17;35512:10;35506:5;:17::i;:::-;35505:18;35487:36;:57;;;;;35528:16;35534:9;35528:5;:16::i;:::-;35527:17;35487:57;35479:66;;;;;;35566:15;;-1:-1:-1;;;35566:15:0;;;;;:26;;-1:-1:-1;35585:7:0;;-1:-1:-1;;;35585:7:0;;;;35566:26;:52;;;;35606:12;;35596:6;:22;;35566:52;35558:61;;;;;;-1:-1:-1;;;;;33824:20:0;;33798:4;33824:20;;;:11;:20;;;;;;;;35632:153;;;35701:13;;:39;;35718:21;35701:39;:::i;:::-;35682:15;:59;35674:97;;;;-1:-1:-1;;;35674:97:0;;12912:2:1;35674:97:0;;;12894:21:1;12951:2;12931:18;;;12924:30;12990:28;12970:18;;;12963:56;13036:18;;35674:97:0;12710:350:1;35674:97:0;35876:18;;35860:12;:34;;:60;;;;-1:-1:-1;35908:12:0;;-1:-1:-1;;;;;35898:22:0;;;35908:12;;35898:22;35860:60;35857:113;;;35938:18;35946:9;35938:7;:18::i;:::-;35987:7;;-1:-1:-1;;;35987:7:0;;;;35986:8;:26;;;;;36011:1;35998:10;;:14;35986:26;:55;;;;-1:-1:-1;36029:12:0;;-1:-1:-1;;;;;36016:25:0;;;36029:12;;36016:25;35986:55;35982:109;;;36060:17;36066:10;;36060:5;:17::i;:::-;36243:12;;36146:6;;36131:12;;;;-1:-1:-1;;;;;36233:22:0;;;36243:12;;36233:22;36229:172;;;36310:12;;36303:6;36282:20;36292:9;36282;:20::i;:::-;:27;;;;:::i;:::-;:40;36274:49;;;;;;36362:25;36370:6;36378:8;;36362:7;:25::i;:::-;36340:47;;-1:-1:-1;36340:47:0;-1:-1:-1;36229:172:0;36449:12;;-1:-1:-1;;;;;36436:25:0;;;36449:12;;36436:25;36432:156;;;36495:12;;36488:6;:19;36480:28;;;;;;36548:26;36556:6;36564:9;;36548:7;:26::i;:::-;36525:49;;-1:-1:-1;36525:49:0;-1:-1:-1;36432:156:0;36622:37;36635:6;36643:9;36654:4;36622:12;:37::i;:::-;36709:15;;36706:85;;36742:35;36755:6;36763:13;36742:12;:35::i;:::-;36832:14;;36829:82;;36864:33;36876:6;36884:12;36864:11;:33::i;:::-;37005:12;;-1:-1:-1;;;;;36995:22:0;;;37005:12;;36995:22;36992:94;;;-1:-1:-1;;;;;37035:22:0;;;;;;:11;:22;;;;;37060:12;37035:37;;36992:94;37114:12;;-1:-1:-1;;;;;37101:25:0;;;37114:12;;37101:25;:64;;;;-1:-1:-1;;;;;;37130:19:0;;;;;;:11;:19;;;;;;37153:12;37130:35;37101:64;37098:114;;;37183:15;37191:6;37183:7;:15::i;:::-;35049:2172;;;34919:2302;;;:::o;43149:185::-;43227:9;43242:8;-1:-1:-1;;;;;43242:13:0;43263:6;43242:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43226:48;;;43295:4;43287:37;;;;-1:-1:-1;;;43287:37:0;;13477:2:1;43287:37:0;;;13459:21:1;13516:2;13496:18;;;13489:30;-1:-1:-1;;;13535:18:1;;;13528:50;13595:18;;43287:37:0;13275:344:1;10675:132:0;10583:6;;-1:-1:-1;;;;;10583:6:0;9141:10;10739:23;10731:68;;;;-1:-1:-1;;;10731:68:0;;13826:2:1;10731:68:0;;;13808:21:1;;;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;13956:18;;10731:68:0;13624:356:1;11777:191:0;11870:6;;;-1:-1:-1;;;;;11887:17:0;;;-1:-1:-1;;;;;;11887:17:0;;;;;;;11920:40;;11870:6;;;11887:17;11870:6;;11920:40;;11851:16;;11920:40;11840:128;11777:191;:::o;46019:261::-;46121:17;46106:12;;:32;46098:41;;;;;;46168:6;46152:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;46187:28:0;;-1:-1:-1;46199:7:0;46208:6;46187:11;:28::i;:::-;46233:37;;762:25:1;;;-1:-1:-1;;;;;46233:37:0;;;46250:1;;46233:37;;750:2:1;735:18;46233:37:0;;;;;;;46019:261;;:::o;34025:129::-;-1:-1:-1;;;;;34081:13:0;;;;;:4;:13;;;;;;;;:20;;34097:4;-1:-1:-1;;34081:20:0;;;;;;;;34114:14;:23;;;;;:30;;;;;;;;;;34025:129::o;45256:505::-;-1:-1:-1;;;;;45401:20:0;;45393:29;;;;;;-1:-1:-1;;;;;45443:23:0;;45435:32;;;;;;45484:21;45508:17;45518:6;45508:9;:17::i;:::-;45484:41;;45563:6;45546:13;:23;;45538:32;;;;;;45610;45627:6;45635;45610:16;:32::i;:::-;45668:30;45680:9;45691:6;45668:11;:30::i;:::-;45733:9;-1:-1:-1;;;;;45716:35:0;45725:6;-1:-1:-1;;;;;45716:35:0;;45744:6;45716:35;;;;762:25:1;;750:2;735:18;;616:177;45716:35:0;;;;;;;;45380:381;45256:505;;;:::o;37275:1346::-;29245:7;;-1:-1:-1;;;29245:7:0;;;;29244:8;29236:17;;;;;;29266:7;:14;;-1:-1:-1;;;;29266:14:0;-1:-1:-1;;;29266:14:0;;;37365:16:::1;::::0;;37379:1:::1;37365:16:::0;;;;;::::1;::::0;;-1:-1:-1;;37365:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;37365:16:0::1;37341:40;;37412:4;37394;37399:1;37394:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37394:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;37440:7:::1;::::0;:14:::1;::::0;;-1:-1:-1;;;37440:14:0;;;;:7;;;::::1;::::0;:12:::1;::::0;:14:::1;::::0;;::::1;::::0;37394:7;;37440:14;;;;;:7;:14;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37430:4;37435:1;37430:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37430:24:0;;::::1;:7;::::0;;::::1;::::0;;;;;:24;37499:7:::1;::::0;37467:53:::1;::::0;37484:4:::1;::::0;37499:7:::1;37509:10:::0;37467:8:::1;:53::i;:::-;37587:7;::::0;:199:::1;::::0;-1:-1:-1;;;37587:199:0;;37553:21:::1;::::0;-1:-1:-1;;;;;37587:7:0::1;::::0;:58:::1;::::0;:199:::1;::::0;37662:10;;37533:17:::1;::::0;37707:4;;37736::::1;::::0;37758:15:::1;::::0;37587:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;37800:18;37845:9;37821:21;:33;;;;:::i;:::-;37800:54;;37919:10;37905;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;37972:20:0::1;::::0;-1:-1:-1;38015:3:0::1;37996:15;:10:::0;38009:2:::1;37996:15;:::i;:::-;37995:23;;;;:::i;:::-;37972:46:::0;-1:-1:-1;38031:15:0::1;38069:3;38050:15;:10:::0;38063:2:::1;38050:15;:::i;:::-;38049:23;;;;:::i;:::-;38031:41:::0;-1:-1:-1;38085:22:0::1;38130:3;38111:15;:10:::0;38124:2:::1;38111:15;:::i;:::-;38110:23;;;;:::i;:::-;38085:48:::0;-1:-1:-1;38146:18:0::1;38186:3;38168:14;:10:::0;38181:1:::1;38168:14;:::i;:::-;38167:22;;;;:::i;:::-;38146:43;;38245:14;38226:15;;:33;;;;;;;:::i;:::-;;;;;;;;38288:10;38272:12;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;38311:15:0::1;::::0;-1:-1:-1;38384:10:0;38367:14;38357:7;38329:25:::1;38342:12:::0;38329:10;:25:::1;:::i;:::-;:35;;;;:::i;:::-;:52;;;;:::i;:::-;:65;;;;:::i;:::-;38311:83;;38422:7;38407:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;38476:15:0::1;::::0;38464:37:::1;::::0;-1:-1:-1;;;;;38476:15:0::1;38493:7:::0;38464:11:::1;:37::i;:::-;38526:16;::::0;38514:43:::1;::::0;-1:-1:-1;;;;;38526:16:0::1;38544:12:::0;38514:11:::1;:43::i;:::-;38582:18;::::0;38570:40:::1;::::0;-1:-1:-1;;;;;38582:18:0::1;38602:7:::0;38570:11:::1;:40::i;:::-;-1:-1:-1::0;;29307:7:0;:15;;-1:-1:-1;;;;29307:15:0;;;-1:-1:-1;;;;;;;37275:1346:0:o;43702:210::-;43771:12;;43837:3;43817:16;43826:7;43817:6;:16;:::i;:::-;43816:24;;;;:::i;:::-;43810:30;-1:-1:-1;43860:12:0;43810:30;43860:6;:12;:::i;:::-;43853:19;;43702:210;;;;;:::o;43342:173::-;43436:9;43422:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;43458:47:0;;-1:-1:-1;43471:7:0;43488:4;43495:9;43458:12;:47::i;:::-;43342:173;;:::o;34509:134::-;-1:-1:-1;;;;;34606:18:0;;;;;;:9;:18;;;;;;:27;;34627:6;;34606:27;:::i;:::-;-1:-1:-1;;;;;34585:18:0;;;;;;;:9;:18;;;;;:48;;;;-1:-1:-1;34509:134:0:o;34651:139::-;-1:-1:-1;;;;;34753:18:0;;;;;;:9;:18;;;;;;:27;;34774:6;;34753:27;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:247::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;1698:461::-;1751:3;1789:5;1783:12;1816:6;1811:3;1804:19;1842:4;1871:2;1866:3;1862:12;1855:19;;1908:2;1901:5;1897:14;1929:1;1939:195;1953:6;1950:1;1947:13;1939:195;;;2018:13;;-1:-1:-1;;;;;2014:39:1;2002:52;;2074:12;;;;2109:15;;;;2050:1;1968:9;1939:195;;;-1:-1:-1;2150:3:1;;1698:461;-1:-1:-1;;;;;1698:461:1:o;2164:261::-;2343:2;2332:9;2325:21;2306:4;2363:56;2415:2;2404:9;2400:18;2392:6;2363:56;:::i;2638:456::-;2715:6;2723;2731;2784:2;2772:9;2763:7;2759:23;2755:32;2752:52;;;2800:1;2797;2790:12;2752:52;2839:9;2826:23;2858:31;2883:5;2858:31;:::i;:::-;2908:5;-1:-1:-1;2965:2:1;2950:18;;2937:32;2978:33;2937:32;2978:33;:::i;:::-;2638:456;;3030:7;;-1:-1:-1;;;3084:2:1;3069:18;;;;3056:32;;2638:456::o;3548:180::-;3607:6;3660:2;3648:9;3639:7;3635:23;3631:32;3628:52;;;3676:1;3673;3666:12;3628:52;-1:-1:-1;3699:23:1;;3548:180;-1:-1:-1;3548:180:1:o;3986:615::-;4072:6;4080;4133:2;4121:9;4112:7;4108:23;4104:32;4101:52;;;4149:1;4146;4139:12;4101:52;4189:9;4176:23;4218:18;4259:2;4251:6;4248:14;4245:34;;;4275:1;4272;4265:12;4245:34;4313:6;4302:9;4298:22;4288:32;;4358:7;4351:4;4347:2;4343:13;4339:27;4329:55;;4380:1;4377;4370:12;4329:55;4420:2;4407:16;4446:2;4438:6;4435:14;4432:34;;;4462:1;4459;4452:12;4432:34;4515:7;4510:2;4500:6;4497:1;4493:14;4489:2;4485:23;4481:32;4478:45;4475:65;;;4536:1;4533;4526:12;4475:65;4567:2;4559:11;;;;;4589:6;;-1:-1:-1;3986:615:1;;-1:-1:-1;;;;3986:615:1:o;4830:273::-;4886:6;4939:2;4927:9;4918:7;4914:23;4910:32;4907:52;;;4955:1;4952;4945:12;4907:52;4994:9;4981:23;5047:5;5040:13;5033:21;5026:5;5023:32;5013:60;;5069:1;5066;5059:12;5108:388;5176:6;5184;5237:2;5225:9;5216:7;5212:23;5208:32;5205:52;;;5253:1;5250;5243:12;5205:52;5292:9;5279:23;5311:31;5336:5;5311:31;:::i;:::-;5361:5;-1:-1:-1;5418:2:1;5403:18;;5390:32;5431:33;5390:32;5431:33;:::i;:::-;5483:7;5473:17;;;5108:388;;;;;:::o;5501:380::-;5580:1;5576:12;;;;5623;;;5644:61;;5698:4;5690:6;5686:17;5676:27;;5644:61;5751:2;5743:6;5740:14;5720:18;5717:38;5714:161;;;5797:10;5792:3;5788:20;5785:1;5778:31;5832:4;5829:1;5822:15;5860:4;5857:1;5850:15;5714:161;;5501:380;;;:::o;5886:127::-;5947:10;5942:3;5938:20;5935:1;5928:31;5978:4;5975:1;5968:15;6002:4;5999:1;5992:15;6018:127;6079:10;6074:3;6070:20;6067:1;6060:31;6110:4;6107:1;6100:15;6134:4;6131:1;6124:15;6150:128;6190:3;6221:1;6217:6;6214:1;6211:13;6208:39;;;6227:18;;:::i;:::-;-1:-1:-1;6263:9:1;;6150:128::o;6283:125::-;6323:4;6351:1;6348;6345:8;6342:34;;;6356:18;;:::i;:::-;-1:-1:-1;6393:9:1;;6283:125::o;6413:135::-;6452:3;-1:-1:-1;;6473:17:1;;6470:43;;;6493:18;;:::i;:::-;-1:-1:-1;6540:1:1;6529:13;;6413:135::o;6553:127::-;6614:10;6609:3;6605:20;6602:1;6595:31;6645:4;6642:1;6635:15;6669:4;6666:1;6659:15;6685:251;6755:6;6808:2;6796:9;6787:7;6783:23;6779:32;6776:52;;;6824:1;6821;6814:12;6776:52;6856:9;6850:16;6875:31;6900:5;6875:31;:::i;6941:518::-;7220:6;7209:9;7202:25;7263:3;7258:2;7247:9;7243:18;7236:31;7183:4;7284:57;7336:3;7325:9;7321:19;7313:6;7284:57;:::i;:::-;-1:-1:-1;;;;;7377:32:1;;;;7372:2;7357:18;;7350:60;-1:-1:-1;7441:2:1;7426:18;7419:34;7276:65;6941:518;-1:-1:-1;;6941:518:1:o;7464:1105::-;7559:6;7590:2;7633;7621:9;7612:7;7608:23;7604:32;7601:52;;;7649:1;7646;7639:12;7601:52;7682:9;7676:16;7711:18;7752:2;7744:6;7741:14;7738:34;;;7768:1;7765;7758:12;7738:34;7806:6;7795:9;7791:22;7781:32;;7851:7;7844:4;7840:2;7836:13;7832:27;7822:55;;7873:1;7870;7863:12;7822:55;7902:2;7896:9;7924:2;7920;7917:10;7914:36;;;7930:18;;:::i;:::-;7976:2;7973:1;7969:10;8008:2;8002:9;8071:2;8067:7;8062:2;8058;8054:11;8050:25;8042:6;8038:38;8126:6;8114:10;8111:22;8106:2;8094:10;8091:18;8088:46;8085:72;;;8137:18;;:::i;:::-;8173:2;8166:22;8223:18;;;8257:15;;;;-1:-1:-1;8299:11:1;;;8295:20;;;8327:19;;;8324:39;;;8359:1;8356;8349:12;8324:39;8383:11;;;;8403:135;8419:6;8414:3;8411:15;8403:135;;;8485:10;;8473:23;;8436:12;;;;8516;;;;8403:135;;;8557:6;7464:1105;-1:-1:-1;;;;;;;;7464:1105:1:o;9281:127::-;9342:10;9337:3;9333:20;9330:1;9323:31;9373:4;9370:1;9363:15;9397:4;9394:1;9387:15;9819:168;9859:7;9925:1;9921;9917:6;9913:14;9910:1;9907:21;9902:1;9895:9;9888:17;9884:45;9881:71;;;9932:18;;:::i;:::-;-1:-1:-1;9972:9:1;;9819:168::o;9992:217::-;10032:1;10058;10048:132;;10102:10;10097:3;10093:20;10090:1;10083:31;10137:4;10134:1;10127:15;10165:4;10162:1;10155:15;10048:132;-1:-1:-1;10194:9:1;;9992:217::o;10826:306::-;10914:6;10922;10930;10983:2;10971:9;10962:7;10958:23;10954:32;10951:52;;;10999:1;10996;10989:12;10951:52;11028:9;11022:16;11012:26;;11078:2;11067:9;11063:18;11057:25;11047:35;;11122:2;11111:9;11107:18;11101:25;11091:35;;10826:306;;;;;:::o;13985:582::-;14284:6;14273:9;14266:25;14327:6;14322:2;14311:9;14307:18;14300:34;14370:3;14365:2;14354:9;14350:18;14343:31;14247:4;14391:57;14443:3;14432:9;14428:19;14420:6;14391:57;:::i;:::-;-1:-1:-1;;;;;14484:32:1;;;;14479:2;14464:18;;14457:60;-1:-1:-1;14548:3:1;14533:19;14526:35;14383:65;13985:582;-1:-1:-1;;;13985:582:1:o

Swarm Source

ipfs://d0e4f2e72dcae4ac60647494ca592ca08063adb5fcee687051bd2da75e6547b6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.