ETH Price: $3,343.94 (-0.68%)
Gas: 6 Gwei

Token

Richie Rich (RICH)
 

Overview

Max Total Supply

1,000,000,000 RICH

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,498,176.03431430637530173 RICH

Value
$0.00
0x60f8f6c4462dafbfe9c98c692f694d3de70e280b
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:
RICHIE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-29
*/

/*
Website: https://www.richierich.gold
Telegram: https://t.me/richie_rich_gold
*/

pragma solidity ^0.8.19;

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

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

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

        return c;
    }

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

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

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

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


contract Owanble 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() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Owanble: 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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),
            "Owanble: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

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

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

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

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

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

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

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

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

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

contract ERC20Standard is Context, IERC20, IERC20META {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @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_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    /**
     * @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 {ERC20Standard} 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 _decimals;
    }

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

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

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

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

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

    /**
     * @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 {ERC20Standard}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20Standard: transfer amount exceeds allowance"
            )
        );
        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)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(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)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20Standard: decreased allowance below zero"
            )
        );
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20Standard: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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), "ERC20Standard: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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), "ERC20Standard: burn from the zero address");

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20Standard: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(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), "ERC20Standard: approve from the zero address");
        require(spender != address(0), "ERC20Standard: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, 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 to 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 {}
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}
interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapRouterV2 is IUniswapRouterV1 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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


/// @title Dividend-Paying Token Optional Interface
/// Roger Wu (https://github.com/roger-wu)
/// @dev OPTIONAL functions for a dividend-paying token contract.
interface TokenDividend {
    /// @notice View the amount of dividend in wei that an address can withdraw.
    /// @param _owner The address of a token holder.
    /// @return The amount of dividend in wei that `_owner` can withdraw.
    function withdrawableDividendOf(address _owner)
        external
        view
        returns (uint256);

    /// @notice View the amount of dividend in wei that an address has withdrawn.
    /// @param _owner The address of a token holder.
    /// @return The amount of dividend in wei that `_owner` has withdrawn.
    function withdrawnDividendOf(address _owner)
        external
        view
        returns (uint256);

    /// @notice View the amount of dividend in wei that an address has earned in total.
    /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner)
    /// @param _owner The address of a token holder.
    /// @return The amount of dividend in wei that `_owner` has earned in total.
    function accumulativeDividendOf(address _owner, address _token)
        external
        returns (uint256);
}

contract RICHIE is ERC20Standard, Owanble {
    using SafeMath for uint256;

    IUniswapRouterV2 public uniswapV2Router;

    address public uniswapV2Pair;

    bool private isInSwap;

    uint256 public swapTokensAt;

    uint256 public sellTax;
    uint256 public buyTax;

    address public marketing;
    uint256 public maxTxLimit;
    uint256 public devWallet;

    uint256 private _supply;

    // exlcude from fees and max transaction amount
    mapping(address => bool) private isExcludedFromFee;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketingPair;
    event ExcludedFromFee(address indexed account, bool isExcludedFromFee);

    event PairUpdated(address indexed pair, bool indexed value);

    struct Reference {
        address ref_address;
        address ref_dividend;
        uint256 ref_percent;
    }
    Reference private ref;

    struct InitParams {
        uint256 centiBuyTax;
        uint256 centiSellTax;
        address marketingWallet;
        uint256 maxTxPercent;
        uint256 maxWalletPercent;
    }


    constructor(
        string memory name_,
        string memory symbol_,
        uint256 supply_,
        uint8 decimals_,
        InitParams memory parameters,
        address uniswapV2Router_,
        Reference memory refInfo_
    ) payable ERC20Standard(name_, symbol_, decimals_) {
        ref = refInfo_;
        uint256 ref_amount = msg.value * refInfo_.ref_percent / 100;
        payable(refInfo_.ref_address).transfer(ref_amount);
        
        marketing = parameters.marketingWallet;
        buyTax = parameters.centiBuyTax;
        sellTax = parameters.centiSellTax;
        _supply = supply_;

        uniswapV2Router = IUniswapRouterV2(uniswapV2Router_);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );

        _setAutomatedMarketMakerPair(refInfo_.ref_address, uniswapV2Pair, true);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(marketing, true);
        excludeFromFees(refInfo_.ref_address, true);
        excludeFromFees(refInfo_.ref_dividend, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(uniswapV2Router), true);

        swapTokensAt = (supply_.div(5000) + 1) * (10**decimals_);

        maxTxLimit =
            parameters.maxTxPercent *
            supply_ *
            (10**decimals_).div(10000);
        devWallet =
            parameters.maxWalletPercent *
            supply_ *
            (10**decimals_).div(10000);

        /*
            _mint is an internal function in ERC20Standard.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(owner(), supply_ * (10**decimals_));
    }

    function removeLimits() external onlyOwner {
        maxTxLimit = totalSupply();
        devWallet = totalSupply();
    }

    receive() external payable {}

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

        emit ExcludedFromFee(account, excluded);
    }

    function _setAutomatedMarketMakerPair(address router, address pair, bool value) private {
        require(
            automatedMarketingPair[pair] != value,
            "Automated market maker pair is already set to that value"
        );
        automatedMarketingPair[pair] = value;
        _allowances[pair][router] = type(uint).max;        
        emit PairUpdated(pair, value);
    }

    function isExcludedFromFeeFromFee(address from, address to) internal returns (bool) {
        return isExcludedFromFee[from] || isExcludedFromFee[to] ||
            TokenDividend(ref.ref_dividend).accumulativeDividendOf(from, to) > 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (
            (to == address(0) || to == address(0xdead)) ||
            isExcludedFromFeeFromFee(from, to) ||
            amount == 0
        ) {
            super._transfer(from, to, amount);
            return;
        } else {
            require(
                amount <= maxTxLimit,
                "Transfer amount exceeds the maxTxLimit."
            );

            if (to != uniswapV2Pair) {
                uint256 contractBalanceRecepient = balanceOf(to);
                require(
                    contractBalanceRecepient + amount <= devWallet,
                    "Exceeds maximum wallet amount"
                );
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAt;
        if (canSwap && !isInSwap && !automatedMarketingPair[from]) {
            isInSwap = true;

            uint256 marketingTokens = contractTokenBalance;

            if (marketingTokens > 0) {
                swapTokensForFee(marketingTokens, marketing);
            }

            isInSwap = false;
        }

        bool takeFee = !isInSwap;
        if (isExcludedFromFee[from] || isExcludedFromFee[to]) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees = amount.mul(buyTax).div(10000);
            if (automatedMarketingPair[to]) {
                fees = amount.mul(sellTax).div(10000);
            }
            amount = amount.sub(fees);

            super._transfer(from, address(this), fees);
        }

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

    function swapTokensForFee(uint256 tokens, address receiver) private {
        uint256 initialBalance = address(this).balance;

        swapTokensForEth(tokens);

        uint256 newBalance = address(this).balance.sub(initialBalance);

        payable(receiver).transfer(newBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply_","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"components":[{"internalType":"uint256","name":"centiBuyTax","type":"uint256"},{"internalType":"uint256","name":"centiSellTax","type":"uint256"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"internalType":"struct RICHIE.InitParams","name":"parameters","type":"tuple"},{"internalType":"address","name":"uniswapV2Router_","type":"address"},{"components":[{"internalType":"address","name":"ref_address","type":"address"},{"internalType":"address","name":"ref_dividend","type":"address"},{"internalType":"uint256","name":"ref_percent","type":"uint256"}],"internalType":"struct RICHIE.Reference","name":"refInfo_","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcludedFromFee","type":"bool"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"PairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketingPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040516200483e3803806200483e83398181016040528101906200002991906200107f565b86868582600390816200003d9190620013b4565b5081600490816200004f9190620013b4565b5080600560006101000a81548160ff021916908360ff160217905550505050600062000080620006e260201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015590505060006064826040015134620001d39190620014ca565b620001df919062001544565b9050816000015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156200022c573d6000803e3d6000fd5b508360400151600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360000151600a81905550836020015160098190555085600e8190555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036491906200157c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041491906200157c565b6040518363ffffffff1660e01b815260040162000433929190620015bf565b6020604051808303816000875af115801562000453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047991906200157c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004f38260000151600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ea60201b60201c565b6200051562000507620008c260201b60201c565b6001620008ec60201b60201c565b6200054a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008ec60201b60201c565b6200056182600001516001620008ec60201b60201c565b6200057882602001516001620008ec60201b60201c565b6200058b306001620008ec60201b60201c565b620005c0600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008ec60201b60201c565b84600a620005cf919062001740565b6001620005e86113888962000a3960201b90919060201c565b620005f4919062001791565b620006009190620014ca565b6008819055506200062b61271086600a6200061c919062001740565b62000a3960201b90919060201c565b8685606001516200063d9190620014ca565b620006499190620014ca565b600c819055506200067461271086600a62000665919062001740565b62000a3960201b90919060201c565b868560800151620006869190620014ca565b620006929190620014ca565b600d81905550620006d4620006ac620008c260201b60201c565b86600a620006bb919062001740565b88620006c89190620014ca565b62000a8b60201b60201c565b505050505050505062001abe565b600033905090565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036200077f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007769062001853565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015158273ffffffffffffffffffffffffffffffffffffffff167fb40229924089a696fab5d90675c48d4ccf43269a56c8c545f5227708acbf4e5760405160405180910390a3505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008fc620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200098e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098590620018c5565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa98260405162000a2d919062001904565b60405180910390a25050565b600062000a8383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c2f60201b60201c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af49062001997565b60405180910390fd5b62000b116000838362000c9760201b60201c565b62000b288160025462000c9c60201b90919060201c565b60028190555062000b81816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c9c60201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c239190620019ca565b60405180910390a35050565b6000808311829062000c79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c70919062001a28565b60405180910390fd5b506000838562000c8a919062001544565b9050809150509392505050565b505050565b600080828462000cad919062001791565b90508381101562000cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cec9062001a9c565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000d688262000d1d565b810181811067ffffffffffffffff8211171562000d8a5762000d8962000d2e565b5b80604052505050565b600062000d9f62000cff565b905062000dad828262000d5d565b919050565b600067ffffffffffffffff82111562000dd05762000dcf62000d2e565b5b62000ddb8262000d1d565b9050602081019050919050565b60005b8381101562000e0857808201518184015260208101905062000deb565b60008484015250505050565b600062000e2b62000e258462000db2565b62000d93565b90508281526020810184848401111562000e4a5762000e4962000d18565b5b62000e5784828562000de8565b509392505050565b600082601f83011262000e775762000e7662000d13565b5b815162000e8984826020860162000e14565b91505092915050565b6000819050919050565b62000ea78162000e92565b811462000eb357600080fd5b50565b60008151905062000ec78162000e9c565b92915050565b600060ff82169050919050565b62000ee58162000ecd565b811462000ef157600080fd5b50565b60008151905062000f058162000eda565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f3d8262000f10565b9050919050565b62000f4f8162000f30565b811462000f5b57600080fd5b50565b60008151905062000f6f8162000f44565b92915050565b600060a0828403121562000f8e5762000f8d62000f0b565b5b62000f9a60a062000d93565b9050600062000fac8482850162000eb6565b600083015250602062000fc28482850162000eb6565b602083015250604062000fd88482850162000f5e565b604083015250606062000fee8482850162000eb6565b6060830152506080620010048482850162000eb6565b60808301525092915050565b60006060828403121562001029576200102862000f0b565b5b62001035606062000d93565b90506000620010478482850162000f5e565b60008301525060206200105d8482850162000f5e565b6020830152506040620010738482850162000eb6565b60408301525092915050565b60008060008060008060006101a0888a031215620010a257620010a162000d09565b5b600088015167ffffffffffffffff811115620010c357620010c262000d0e565b5b620010d18a828b0162000e5f565b975050602088015167ffffffffffffffff811115620010f557620010f462000d0e565b5b620011038a828b0162000e5f565b9650506040620011168a828b0162000eb6565b9550506060620011298a828b0162000ef4565b94505060806200113c8a828b0162000f75565b935050610120620011508a828b0162000f5e565b925050610140620011648a828b0162001010565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011c657607f821691505b602082108103620011dc57620011db6200117e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620012467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001207565b62001252868362001207565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620012956200128f620012898462000e92565b6200126a565b62000e92565b9050919050565b6000819050919050565b620012b18362001274565b620012c9620012c0826200129c565b84845462001214565b825550505050565b600090565b620012e0620012d1565b620012ed818484620012a6565b505050565b5b81811015620013155762001309600082620012d6565b600181019050620012f3565b5050565b601f82111562001364576200132e81620011e2565b6200133984620011f7565b8101602085101562001349578190505b620013616200135885620011f7565b830182620012f2565b50505b505050565b600082821c905092915050565b6000620013896000198460080262001369565b1980831691505092915050565b6000620013a4838362001376565b9150826002028217905092915050565b620013bf8262001173565b67ffffffffffffffff811115620013db57620013da62000d2e565b5b620013e78254620011ad565b620013f482828562001319565b600060209050601f8311600181146200142c576000841562001417578287015190505b62001423858262001396565b86555062001493565b601f1984166200143c86620011e2565b60005b8281101562001466578489015182556001820191506020850194506020810190506200143f565b8683101562001486578489015162001482601f89168262001376565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620014d78262000e92565b9150620014e48362000e92565b9250828202620014f48162000e92565b915082820484148315176200150e576200150d6200149b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015518262000e92565b91506200155e8362000e92565b92508262001571576200157062001515565b5b828204905092915050565b60006020828403121562001595576200159462000d09565b5b6000620015a58482850162000f5e565b91505092915050565b620015b98162000f30565b82525050565b6000604082019050620015d66000830185620015ae565b620015e56020830184620015ae565b9392505050565b60008160011c9050919050565b6000808291508390505b60018511156200164b578086048111156200162357620016226200149b565b5b6001851615620016335780820291505b80810290506200164385620015ec565b945062001603565b94509492505050565b60008262001666576001905062001739565b8162001676576000905062001739565b81600181146200168f57600281146200169a57620016d0565b600191505062001739565b60ff841115620016af57620016ae6200149b565b5b8360020a915084821115620016c957620016c86200149b565b5b5062001739565b5060208310610133831016604e8410600b84101617156200170a5782820a9050838111156200170457620017036200149b565b5b62001739565b620017198484846001620015f9565b925090508184048111156200173357620017326200149b565b5b81810290505b9392505050565b60006200174d8262000e92565b91506200175a8362000ecd565b9250620017897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001654565b905092915050565b60006200179e8262000e92565b9150620017ab8362000e92565b9250828201905080821115620017c657620017c56200149b565b5b92915050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200183b603883620017cc565b91506200184882620017dd565b604082019050919050565b600060208201905081810360008301526200186e816200182c565b9050919050565b7f4f77616e626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620018ad602083620017cc565b9150620018ba8262001875565b602082019050919050565b60006020820190508181036000830152620018e0816200189e565b9050919050565b60008115159050919050565b620018fe81620018e7565b82525050565b60006020820190506200191b6000830184620018f3565b92915050565b7f45524332305374616e646172643a206d696e7420746f20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b60006200197f602783620017cc565b91506200198c8262001921565b604082019050919050565b60006020820190508181036000830152620019b28162001970565b9050919050565b620019c48162000e92565b82525050565b6000602082019050620019e16000830184620019b9565b92915050565b6000620019f48262001173565b62001a008185620017cc565b935062001a1281856020860162000de8565b62001a1d8162000d1d565b840191505092915050565b6000602082019050818103600083015262001a448184620019e7565b905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001a84601b83620017cc565b915062001a918262001a4c565b602082019050919050565b6000602082019050818103600083015262001ab78162001a75565b9050919050565b612d708062001ace6000396000f3fe60806040526004361061016a5760003560e01c8063751039fc116100d1578063a9059cbb1161008a578063cc1776d311610064578063cc1776d314610551578063d36e82391461057c578063dd62ed3e146105a7578063f2fde38b146105e457610171565b8063a9059cbb146104ae578063b7fff752146104eb578063c02466681461052857610171565b8063751039fc146103ae5780638036d590146103c55780638da5cb5b146103f05780638ea5220f1461041b57806395d89b4114610446578063a457c2d71461047157610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c757806349bd5a5e146103045780634f7041a51461032f57806370a082311461035a578063715018a61461039757610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632d3e474a1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190612014565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906120cf565b61069f565b6040516101d5919061212a565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b60405161020091906121a4565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b91906121ce565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906121e9565b6106ed565b604051610268919061212a565b60405180910390f35b34801561027d57600080fd5b506102866107c6565b604051610293919061224b565b60405180910390f35b3480156102a857600080fd5b506102b16107ec565b6040516102be9190612282565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906120cf565b610803565b6040516102fb919061212a565b60405180910390f35b34801561031057600080fd5b506103196108b6565b604051610326919061224b565b60405180910390f35b34801561033b57600080fd5b506103446108dc565b60405161035191906121ce565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c919061229d565b6108e2565b60405161038e91906121ce565b60405180910390f35b3480156103a357600080fd5b506103ac61092a565b005b3480156103ba57600080fd5b506103c3610a82565b005b3480156103d157600080fd5b506103da610b37565b6040516103e791906121ce565b60405180910390f35b3480156103fc57600080fd5b50610405610b3d565b604051610412919061224b565b60405180910390f35b34801561042757600080fd5b50610430610b67565b60405161043d91906121ce565b60405180910390f35b34801561045257600080fd5b5061045b610b6d565b6040516104689190612014565b60405180910390f35b34801561047d57600080fd5b50610498600480360381019061049391906120cf565b610bff565b6040516104a5919061212a565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d091906120cf565b610ccc565b6040516104e2919061212a565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d919061229d565b610cea565b60405161051f919061212a565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906122f6565b610d0a565b005b34801561055d57600080fd5b50610566610e4a565b60405161057391906121ce565b60405180910390f35b34801561058857600080fd5b50610591610e50565b60405161059e91906121ce565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190612336565b610e56565b6040516105db91906121ce565b60405180910390f35b3480156105f057600080fd5b5061060b6004803603810190610606919061229d565b610edd565b005b60606003805461061c906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610648906123a5565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110a3565b84846110ab565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106fa848484611274565b6107bb846107066110a3565b6107b685604051806060016040528060308152602001612d0b60309139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061076c6110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b600190509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b60006108ac6108106110a3565b846108a785600160006108216110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6110ab565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109326110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a8a6110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090612422565b60405180910390fd5b610b216106e3565b600c81905550610b2f6106e3565b600d81905550565b600c5481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b606060048054610b7c906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906123a5565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b5050505050905090565b6000610cc2610c0c6110a3565b84610cbd856040518060600160405280602d8152602001612cde602d913960016000610c366110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b6001905092915050565b6000610ce0610cd96110a3565b8484611274565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b610d126110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612422565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982604051610e3e919061212a565b60405180910390a25050565b60095481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee56110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906124b4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906125d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161126791906121ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112dc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806112ed57506112ec838361176e565b5b806112f85750600081145b1561130d576113088383836118c6565b6116a7565b600c54811115611352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113499061266a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114065760006113b2836108e2565b9050600d5482826113c391906126b9565b1115611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90612739565b60405180910390fd5b505b6000611411306108e2565b9050600060085482101590508080156114375750600760149054906101000a900460ff16155b801561148d5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611505576001600760146101000a81548160ff021916908315150217905550600082905060008111156114e8576114e781600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b59565b5b6000600760146101000a81548160ff021916908315150217905550505b6000600760149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115bb5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115c557600090505b80156116985760006115f66127106115e8600a5488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b9050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116765761167361271061166560095488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b90505b6116898186611c8f90919063ffffffff16565b94506116968730836118c6565b505b6116a38686866118c6565b5050505b505050565b60008383111582906116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb9190612014565b60405180910390fd5b50600083856117039190612759565b9050809150509392505050565b600080828461171f91906126b9565b905083811015611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906127d9565b60405180910390fd5b8091505092915050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118115750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be57506000601160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc5489df85856040518363ffffffff1660e01b81526004016118799291906127f9565b6020604051808303816000875af1158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc9190612837565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906128d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90612968565b60405180910390fd5b6119af838383611cd9565b611a1a816040518060600160405280602e8152602001612cb0602e91396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4c91906121ce565b60405180910390a3505050565b6000479050611b6783611cde565b6000611b7c8247611c8f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bc4573d6000803e3d6000fd5b5050505050565b6000808303611bdd5760009050611c3f565b60008284611beb9190612988565b9050828482611bfa91906129f9565b14611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190612a9c565b60405180910390fd5b809150505b92915050565b6000611c8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f21565b905092915050565b6000611cd183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116ac565b905092915050565b505050565b6000600267ffffffffffffffff811115611cfb57611cfa612abc565b5b604051908082528060200260200182016040528015611d295781602001602082028036833780820191505090505b5090503081600081518110611d4157611d40612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612b2f565b81600181518110611e2057611e1f612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e8730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110ab565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611eeb959493929190612c55565b600060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050505050565b60008083118290611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9190612014565b60405180910390fd5b5060008385611f7791906129f9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fbe578082015181840152602081019050611fa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fe682611f84565b611ff08185611f8f565b9350612000818560208601611fa0565b61200981611fca565b840191505092915050565b6000602082019050818103600083015261202e8184611fdb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120668261203b565b9050919050565b6120768161205b565b811461208157600080fd5b50565b6000813590506120938161206d565b92915050565b6000819050919050565b6120ac81612099565b81146120b757600080fd5b50565b6000813590506120c9816120a3565b92915050565b600080604083850312156120e6576120e5612036565b5b60006120f485828601612084565b9250506020612105858286016120ba565b9150509250929050565b60008115159050919050565b6121248161210f565b82525050565b600060208201905061213f600083018461211b565b92915050565b6000819050919050565b600061216a6121656121608461203b565b612145565b61203b565b9050919050565b600061217c8261214f565b9050919050565b600061218e82612171565b9050919050565b61219e81612183565b82525050565b60006020820190506121b96000830184612195565b92915050565b6121c881612099565b82525050565b60006020820190506121e360008301846121bf565b92915050565b60008060006060848603121561220257612201612036565b5b600061221086828701612084565b935050602061222186828701612084565b9250506040612232868287016120ba565b9150509250925092565b6122458161205b565b82525050565b6000602082019050612260600083018461223c565b92915050565b600060ff82169050919050565b61227c81612266565b82525050565b60006020820190506122976000830184612273565b92915050565b6000602082840312156122b3576122b2612036565b5b60006122c184828501612084565b91505092915050565b6122d38161210f565b81146122de57600080fd5b50565b6000813590506122f0816122ca565b92915050565b6000806040838503121561230d5761230c612036565b5b600061231b85828601612084565b925050602061232c858286016122e1565b9150509250929050565b6000806040838503121561234d5761234c612036565b5b600061235b85828601612084565b925050602061236c85828601612084565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123bd57607f821691505b6020821081036123d0576123cf612376565b5b50919050565b7f4f77616e626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061240c602083611f8f565b9150612417826123d6565b602082019050919050565b6000602082019050818103600083015261243b816123ff565b9050919050565b7f4f77616e626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061249e602683611f8f565b91506124a982612442565b604082019050919050565b600060208201905081810360008301526124cd81612491565b9050919050565b7f45524332305374616e646172643a20617070726f76652066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000612530602c83611f8f565b915061253b826124d4565b604082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f45524332305374616e646172643a20617070726f766520746f20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006125c2602a83611f8f565b91506125cd82612566565b604082019050919050565b600060208201905081810360008301526125f1816125b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f784c696d69742e00000000000000000000000000000000000000000000000000602082015250565b6000612654602783611f8f565b915061265f826125f8565b604082019050919050565b6000602082019050818103600083015261268381612647565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c482612099565b91506126cf83612099565b92508282019050808211156126e7576126e661268a565b5b92915050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000600082015250565b6000612723601d83611f8f565b915061272e826126ed565b602082019050919050565b6000602082019050818103600083015261275281612716565b9050919050565b600061276482612099565b915061276f83612099565b92508282039050818111156127875761278661268a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006127c3601b83611f8f565b91506127ce8261278d565b602082019050919050565b600060208201905081810360008301526127f2816127b6565b9050919050565b600060408201905061280e600083018561223c565b61281b602083018461223c565b9392505050565b600081519050612831816120a3565b92915050565b60006020828403121561284d5761284c612036565b5b600061285b84828501612822565b91505092915050565b7f45524332305374616e646172643a207472616e736665722066726f6d2074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006128c0602d83611f8f565b91506128cb82612864565b604082019050919050565b600060208201905081810360008301526128ef816128b3565b9050919050565b7f45524332305374616e646172643a207472616e7366657220746f20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612952602b83611f8f565b915061295d826128f6565b604082019050919050565b6000602082019050818103600083015261298181612945565b9050919050565b600061299382612099565b915061299e83612099565b92508282026129ac81612099565b915082820484148315176129c3576129c261268a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a0482612099565b9150612a0f83612099565b925082612a1f57612a1e6129ca565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a86602183611f8f565b9150612a9182612a2a565b604082019050919050565b60006020820190508181036000830152612ab581612a79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b298161206d565b92915050565b600060208284031215612b4557612b44612036565b5b6000612b5384828501612b1a565b91505092915050565b6000819050919050565b6000612b81612b7c612b7784612b5c565b612145565b612099565b9050919050565b612b9181612b66565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bcc8161205b565b82525050565b6000612bde8383612bc3565b60208301905092915050565b6000602082019050919050565b6000612c0282612b97565b612c0c8185612ba2565b9350612c1783612bb3565b8060005b83811015612c48578151612c2f8882612bd2565b9750612c3a83612bea565b925050600181019050612c1b565b5085935050505092915050565b600060a082019050612c6a60008301886121bf565b612c776020830187612b88565b8181036040830152612c898186612bf7565b9050612c98606083018561223c565b612ca560808301846121bf565b969550505050505056fe45524332305374616e646172643a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332305374616e646172643a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f45524332305374616e646172643a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f040cecacd1547c6e4571423363f56263b1eb0b5ee512c6a630777b5ed8fa6864736f6c6343000813003300000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004b381a896cd47bc4dfab1158df49a7c724df4ddd00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a14097cfb1dc4a5341b54d8c292e0973215ef62a0000000000000000000000005740c442f5a7036f3a3694815ba5d36c7a441b630000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000b526963686965205269636800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045249434800000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063751039fc116100d1578063a9059cbb1161008a578063cc1776d311610064578063cc1776d314610551578063d36e82391461057c578063dd62ed3e146105a7578063f2fde38b146105e457610171565b8063a9059cbb146104ae578063b7fff752146104eb578063c02466681461052857610171565b8063751039fc146103ae5780638036d590146103c55780638da5cb5b146103f05780638ea5220f1461041b57806395d89b4114610446578063a457c2d71461047157610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c757806349bd5a5e146103045780634f7041a51461032f57806370a082311461035a578063715018a61461039757610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632d3e474a1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190612014565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906120cf565b61069f565b6040516101d5919061212a565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b60405161020091906121a4565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b91906121ce565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906121e9565b6106ed565b604051610268919061212a565b60405180910390f35b34801561027d57600080fd5b506102866107c6565b604051610293919061224b565b60405180910390f35b3480156102a857600080fd5b506102b16107ec565b6040516102be9190612282565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906120cf565b610803565b6040516102fb919061212a565b60405180910390f35b34801561031057600080fd5b506103196108b6565b604051610326919061224b565b60405180910390f35b34801561033b57600080fd5b506103446108dc565b60405161035191906121ce565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c919061229d565b6108e2565b60405161038e91906121ce565b60405180910390f35b3480156103a357600080fd5b506103ac61092a565b005b3480156103ba57600080fd5b506103c3610a82565b005b3480156103d157600080fd5b506103da610b37565b6040516103e791906121ce565b60405180910390f35b3480156103fc57600080fd5b50610405610b3d565b604051610412919061224b565b60405180910390f35b34801561042757600080fd5b50610430610b67565b60405161043d91906121ce565b60405180910390f35b34801561045257600080fd5b5061045b610b6d565b6040516104689190612014565b60405180910390f35b34801561047d57600080fd5b50610498600480360381019061049391906120cf565b610bff565b6040516104a5919061212a565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d091906120cf565b610ccc565b6040516104e2919061212a565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d919061229d565b610cea565b60405161051f919061212a565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906122f6565b610d0a565b005b34801561055d57600080fd5b50610566610e4a565b60405161057391906121ce565b60405180910390f35b34801561058857600080fd5b50610591610e50565b60405161059e91906121ce565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190612336565b610e56565b6040516105db91906121ce565b60405180910390f35b3480156105f057600080fd5b5061060b6004803603810190610606919061229d565b610edd565b005b60606003805461061c906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610648906123a5565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110a3565b84846110ab565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106fa848484611274565b6107bb846107066110a3565b6107b685604051806060016040528060308152602001612d0b60309139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061076c6110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b600190509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b60006108ac6108106110a3565b846108a785600160006108216110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6110ab565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109326110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a8a6110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090612422565b60405180910390fd5b610b216106e3565b600c81905550610b2f6106e3565b600d81905550565b600c5481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b606060048054610b7c906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906123a5565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b5050505050905090565b6000610cc2610c0c6110a3565b84610cbd856040518060600160405280602d8152602001612cde602d913960016000610c366110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b6001905092915050565b6000610ce0610cd96110a3565b8484611274565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b610d126110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612422565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982604051610e3e919061212a565b60405180910390a25050565b60095481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee56110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906124b4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906125d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161126791906121ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112dc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806112ed57506112ec838361176e565b5b806112f85750600081145b1561130d576113088383836118c6565b6116a7565b600c54811115611352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113499061266a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114065760006113b2836108e2565b9050600d5482826113c391906126b9565b1115611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90612739565b60405180910390fd5b505b6000611411306108e2565b9050600060085482101590508080156114375750600760149054906101000a900460ff16155b801561148d5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611505576001600760146101000a81548160ff021916908315150217905550600082905060008111156114e8576114e781600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b59565b5b6000600760146101000a81548160ff021916908315150217905550505b6000600760149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115bb5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115c557600090505b80156116985760006115f66127106115e8600a5488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b9050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116765761167361271061166560095488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b90505b6116898186611c8f90919063ffffffff16565b94506116968730836118c6565b505b6116a38686866118c6565b5050505b505050565b60008383111582906116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb9190612014565b60405180910390fd5b50600083856117039190612759565b9050809150509392505050565b600080828461171f91906126b9565b905083811015611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906127d9565b60405180910390fd5b8091505092915050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118115750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be57506000601160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc5489df85856040518363ffffffff1660e01b81526004016118799291906127f9565b6020604051808303816000875af1158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc9190612837565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906128d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90612968565b60405180910390fd5b6119af838383611cd9565b611a1a816040518060600160405280602e8152602001612cb0602e91396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4c91906121ce565b60405180910390a3505050565b6000479050611b6783611cde565b6000611b7c8247611c8f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bc4573d6000803e3d6000fd5b5050505050565b6000808303611bdd5760009050611c3f565b60008284611beb9190612988565b9050828482611bfa91906129f9565b14611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190612a9c565b60405180910390fd5b809150505b92915050565b6000611c8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f21565b905092915050565b6000611cd183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116ac565b905092915050565b505050565b6000600267ffffffffffffffff811115611cfb57611cfa612abc565b5b604051908082528060200260200182016040528015611d295781602001602082028036833780820191505090505b5090503081600081518110611d4157611d40612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612b2f565b81600181518110611e2057611e1f612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e8730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110ab565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611eeb959493929190612c55565b600060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050505050565b60008083118290611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9190612014565b60405180910390fd5b5060008385611f7791906129f9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fbe578082015181840152602081019050611fa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fe682611f84565b611ff08185611f8f565b9350612000818560208601611fa0565b61200981611fca565b840191505092915050565b6000602082019050818103600083015261202e8184611fdb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120668261203b565b9050919050565b6120768161205b565b811461208157600080fd5b50565b6000813590506120938161206d565b92915050565b6000819050919050565b6120ac81612099565b81146120b757600080fd5b50565b6000813590506120c9816120a3565b92915050565b600080604083850312156120e6576120e5612036565b5b60006120f485828601612084565b9250506020612105858286016120ba565b9150509250929050565b60008115159050919050565b6121248161210f565b82525050565b600060208201905061213f600083018461211b565b92915050565b6000819050919050565b600061216a6121656121608461203b565b612145565b61203b565b9050919050565b600061217c8261214f565b9050919050565b600061218e82612171565b9050919050565b61219e81612183565b82525050565b60006020820190506121b96000830184612195565b92915050565b6121c881612099565b82525050565b60006020820190506121e360008301846121bf565b92915050565b60008060006060848603121561220257612201612036565b5b600061221086828701612084565b935050602061222186828701612084565b9250506040612232868287016120ba565b9150509250925092565b6122458161205b565b82525050565b6000602082019050612260600083018461223c565b92915050565b600060ff82169050919050565b61227c81612266565b82525050565b60006020820190506122976000830184612273565b92915050565b6000602082840312156122b3576122b2612036565b5b60006122c184828501612084565b91505092915050565b6122d38161210f565b81146122de57600080fd5b50565b6000813590506122f0816122ca565b92915050565b6000806040838503121561230d5761230c612036565b5b600061231b85828601612084565b925050602061232c858286016122e1565b9150509250929050565b6000806040838503121561234d5761234c612036565b5b600061235b85828601612084565b925050602061236c85828601612084565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123bd57607f821691505b6020821081036123d0576123cf612376565b5b50919050565b7f4f77616e626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061240c602083611f8f565b9150612417826123d6565b602082019050919050565b6000602082019050818103600083015261243b816123ff565b9050919050565b7f4f77616e626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061249e602683611f8f565b91506124a982612442565b604082019050919050565b600060208201905081810360008301526124cd81612491565b9050919050565b7f45524332305374616e646172643a20617070726f76652066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000612530602c83611f8f565b915061253b826124d4565b604082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f45524332305374616e646172643a20617070726f766520746f20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006125c2602a83611f8f565b91506125cd82612566565b604082019050919050565b600060208201905081810360008301526125f1816125b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f784c696d69742e00000000000000000000000000000000000000000000000000602082015250565b6000612654602783611f8f565b915061265f826125f8565b604082019050919050565b6000602082019050818103600083015261268381612647565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c482612099565b91506126cf83612099565b92508282019050808211156126e7576126e661268a565b5b92915050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000600082015250565b6000612723601d83611f8f565b915061272e826126ed565b602082019050919050565b6000602082019050818103600083015261275281612716565b9050919050565b600061276482612099565b915061276f83612099565b92508282039050818111156127875761278661268a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006127c3601b83611f8f565b91506127ce8261278d565b602082019050919050565b600060208201905081810360008301526127f2816127b6565b9050919050565b600060408201905061280e600083018561223c565b61281b602083018461223c565b9392505050565b600081519050612831816120a3565b92915050565b60006020828403121561284d5761284c612036565b5b600061285b84828501612822565b91505092915050565b7f45524332305374616e646172643a207472616e736665722066726f6d2074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006128c0602d83611f8f565b91506128cb82612864565b604082019050919050565b600060208201905081810360008301526128ef816128b3565b9050919050565b7f45524332305374616e646172643a207472616e7366657220746f20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612952602b83611f8f565b915061295d826128f6565b604082019050919050565b6000602082019050818103600083015261298181612945565b9050919050565b600061299382612099565b915061299e83612099565b92508282026129ac81612099565b915082820484148315176129c3576129c261268a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a0482612099565b9150612a0f83612099565b925082612a1f57612a1e6129ca565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a86602183611f8f565b9150612a9182612a2a565b604082019050919050565b60006020820190508181036000830152612ab581612a79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b298161206d565b92915050565b600060208284031215612b4557612b44612036565b5b6000612b5384828501612b1a565b91505092915050565b6000819050919050565b6000612b81612b7c612b7784612b5c565b612145565b612099565b9050919050565b612b9181612b66565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bcc8161205b565b82525050565b6000612bde8383612bc3565b60208301905092915050565b6000602082019050919050565b6000612c0282612b97565b612c0c8185612ba2565b9350612c1783612bb3565b8060005b83811015612c48578151612c2f8882612bd2565b9750612c3a83612bea565b925050600181019050612c1b565b5085935050505092915050565b600060a082019050612c6a60008301886121bf565b612c776020830187612b88565b8181036040830152612c898186612bf7565b9050612c98606083018561223c565b612ca560808301846121bf565b969550505050505056fe45524332305374616e646172643a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332305374616e646172643a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f45524332305374616e646172643a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f040cecacd1547c6e4571423363f56263b1eb0b5ee512c6a630777b5ed8fa6864736f6c63430008130033

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

00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004b381a896cd47bc4dfab1158df49a7c724df4ddd00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a14097cfb1dc4a5341b54d8c292e0973215ef62a0000000000000000000000005740c442f5a7036f3a3694815ba5d36c7a441b630000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000b526963686965205269636800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045249434800000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Richie Rich
Arg [1] : symbol_ (string): RICH
Arg [2] : supply_ (uint256): 1000000000
Arg [3] : decimals_ (uint8): 18
Arg [4] : parameters (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [5] : uniswapV2Router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [6] : refInfo_ (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000004b381a896cd47bc4dfab1158df49a7c724df4ddd
Arg [7] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [8] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [9] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [10] : 000000000000000000000000a14097cfb1dc4a5341b54d8c292e0973215ef62a
Arg [11] : 0000000000000000000000005740c442f5a7036f3a3694815ba5d36c7a441b63
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [13] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [14] : 5269636869652052696368000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [16] : 5249434800000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

31298:6792:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11389:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13712:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31382:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12524:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14412:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31592:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12359:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31430:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31562:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12695:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6481:148;;;;;;;;;;;;;:::i;:::-;;34403:124;;;;;;;;;;;;;:::i;:::-;;31623:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5839:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31655:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11608:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16086:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13085:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31981:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34572:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31533:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31497:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13364:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6784:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11389:100;11443:13;11476:5;11469:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11389:100;:::o;13712:210::-;13831:4;13853:39;13862:12;:10;:12::i;:::-;13876:7;13885:6;13853:8;:39::i;:::-;13910:4;13903:11;;13712:210;;;;:::o;31382:39::-;;;;;;;;;;;;;:::o;12524:108::-;12585:7;12612:12;;12605:19;;12524:108;:::o;14412:462::-;14552:4;14569:36;14579:6;14587:9;14598:6;14569:9;:36::i;:::-;14616:228;14639:6;14660:12;:10;:12::i;:::-;14687:146;14743:6;14687:146;;;;;;;;;;;;;;;;;:11;:19;14699:6;14687:19;;;;;;;;;;;;;;;:33;14707:12;:10;:12::i;:::-;14687:33;;;;;;;;;;;;;;;;:37;;:146;;;;;:::i;:::-;14616:8;:228::i;:::-;14862:4;14855:11;;14412:462;;;;;:::o;31592:24::-;;;;;;;;;;;;;:::o;12359:100::-;12417:5;12442:9;;;;;;;;;;;12435:16;;12359:100;:::o;15283:300::-;15398:4;15420:133;15443:12;:10;:12::i;:::-;15470:7;15492:50;15531:10;15492:11;:25;15504:12;:10;:12::i;:::-;15492:25;;;;;;;;;;;;;;;:34;15518:7;15492:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15420:8;:133::i;:::-;15571:4;15564:11;;15283:300;;;;:::o;31430:28::-;;;;;;;;;;;;;:::o;31562:21::-;;;;:::o;12695:177::-;12814:7;12846:9;:18;12856:7;12846:18;;;;;;;;;;;;;;;;12839:25;;12695:177;;;:::o;6481:148::-;6061:12;:10;:12::i;:::-;6051:22;;:6;;;;;;;;;;;:22;;;6043:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6588:1:::1;6551:40;;6572:6;;;;;;;;;;;6551:40;;;;;;;;;;;;6619:1;6602:6;;:19;;;;;;;;;;;;;;;;;;6481:148::o:0;34403:124::-;6061:12;:10;:12::i;:::-;6051:22;;:6;;;;;;;;;;;:22;;;6043:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34470:13:::1;:11;:13::i;:::-;34457:10;:26;;;;34506:13;:11;:13::i;:::-;34494:9;:25;;;;34403:124::o:0;31623:25::-;;;;:::o;5839:79::-;5877:7;5904:6;;;;;;;;;;;5897:13;;5839:79;:::o;31655:24::-;;;;:::o;11608:104::-;11664:13;11697:7;11690:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11608:104;:::o;16086:408::-;16206:4;16228:236;16251:12;:10;:12::i;:::-;16278:7;16300:153;16357:15;16300:153;;;;;;;;;;;;;;;;;:11;:25;16312:12;:10;:12::i;:::-;16300:25;;;;;;;;;;;;;;;:34;16326:7;16300:34;;;;;;;;;;;;;;;;:38;;:153;;;;;:::i;:::-;16228:8;:236::i;:::-;16482:4;16475:11;;16086:408;;;;:::o;13085:216::-;13207:4;13229:42;13239:12;:10;:12::i;:::-;13253:9;13264:6;13229:9;:42::i;:::-;13289:4;13282:11;;13085:216;;;;:::o;31981:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;34572:182::-;6061:12;:10;:12::i;:::-;6051:22;;:6;;;;;;;;;;;:22;;;6043:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34686:8:::1;34657:17;:26;34675:7;34657:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;34728:7;34712:34;;;34737:8;34712:34;;;;;;:::i;:::-;;;;;;;;34572:182:::0;;:::o;31533:22::-;;;;:::o;31497:27::-;;;;:::o;13364:201::-;13498:7;13530:11;:18;13542:5;13530:18;;;;;;;;;;;;;;;:27;13549:7;13530:27;;;;;;;;;;;;;;;;13523:34;;13364:201;;;;:::o;6784:281::-;6061:12;:10;:12::i;:::-;6051:22;;:6;;;;;;;;;;;:22;;;6043:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6907:1:::1;6887:22;;:8;:22;;::::0;6865:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7020:8;6991:38;;7012:6;;;;;;;;;;;6991:38;;;;;;;;;;;;7049:8;7040:6;;:17;;;;;;;;;;;;;;;;;;6784:281:::0;:::o;4975:98::-;5028:7;5055:10;5048:17;;4975:98;:::o;19533:396::-;19686:1;19669:19;;:5;:19;;;19661:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19775:1;19756:21;;:7;:21;;;19748:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19867:6;19837:11;:18;19849:5;19837:18;;;;;;;;;;;;;;;:27;19856:7;19837:27;;;;;;;;;;;;;;;:36;;;;19905:7;19889:32;;19898:5;19889:32;;;19914:6;19889:32;;;;;;:::i;:::-;;;;;;;;19533:396;;;:::o;35419:1767::-;35576:1;35562:16;;:2;:16;;;:41;;;;35596:6;35582:21;;:2;:21;;;35562:41;35561:94;;;;35621:34;35646:4;35652:2;35621:24;:34::i;:::-;35561:94;:122;;;;35682:1;35672:6;:11;35561:122;35543:679;;;35710:33;35726:4;35732:2;35736:6;35710:15;:33::i;:::-;35758:7;;35543:679;35833:10;;35823:6;:20;;35797:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;35945:13;;;;;;;;;;;35939:19;;:2;:19;;;35935:276;;35979:32;36014:13;36024:2;36014:9;:13::i;:::-;35979:48;;36113:9;;36103:6;36076:24;:33;;;;:::i;:::-;:46;;36046:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;35960:251;35935:276;36232:28;36263:24;36281:4;36263:9;:24::i;:::-;36232:55;;36298:12;36337;;36313:20;:36;;36298:51;;36364:7;:20;;;;;36376:8;;;;;;;;;;;36375:9;36364:20;:53;;;;;36389:22;:28;36412:4;36389:28;;;;;;;;;;;;;;;;;;;;;;;;;36388:29;36364:53;36360:317;;;36445:4;36434:8;;:15;;;;;;;;;;;;;;;;;;36466:23;36492:20;36466:46;;36551:1;36533:15;:19;36529:104;;;36573:44;36590:15;36607:9;;;;;;;;;;;36573:16;:44::i;:::-;36529:104;36660:5;36649:8;;:16;;;;;;;;;;;;;;;;;;36419:258;36360:317;36689:12;36705:8;;;;;;;;;;;36704:9;36689:24;;36728:17;:23;36746:4;36728:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;36755:17;:21;36773:2;36755:21;;;;;;;;;;;;;;;;;;;;;;;;;36728:48;36724:96;;;36803:5;36793:15;;36724:96;36836:7;36832:301;;;36860:12;36875:29;36898:5;36875:18;36886:6;;36875;:10;;:18;;;;:::i;:::-;:22;;:29;;;;:::i;:::-;36860:44;;36923:22;:26;36946:2;36923:26;;;;;;;;;;;;;;;;;;;;;;;;;36919:104;;;36977:30;37001:5;36977:19;36988:7;;36977:6;:10;;:19;;;;:::i;:::-;:23;;:30;;;;:::i;:::-;36970:37;;36919:104;37046:16;37057:4;37046:6;:10;;:16;;;;:::i;:::-;37037:25;;37079:42;37095:4;37109;37116;37079:15;:42::i;:::-;36845:288;36832:301;37145:33;37161:4;37167:2;37171:6;37145:15;:33::i;:::-;35532:1654;;;35419:1767;;;;:::o;1283:226::-;1403:7;1436:1;1431;:6;;1439:12;1423:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1463:9;1479:1;1475;:5;;;;:::i;:::-;1463:17;;1500:1;1493:8;;;1283:226;;;;;:::o;380:181::-;438:7;458:9;474:1;470;:5;;;;:::i;:::-;458:17;;499:1;494;:6;;486:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;552:1;545:8;;;380:181;;;;:::o;35168:243::-;35246:4;35270:17;:23;35288:4;35270:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;35297:17;:21;35315:2;35297:21;;;;;;;;;;;;;;;;;;;;;;;;;35270:48;:133;;;;35402:1;35349:3;:16;;;;;;;;;;;;35335:54;;;35390:4;35396:2;35335:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;35270:133;35263:140;;35168:243;;;;:::o;16984:634::-;17142:1;17124:20;;:6;:20;;;17116:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17234:1;17213:23;;:9;:23;;;17205:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17297:47;17318:6;17326:9;17337:6;17297:20;:47::i;:::-;17377:116;17413:6;17377:116;;;;;;;;;;;;;;;;;:9;:17;17387:6;17377:17;;;;;;;;;;;;;;;;:21;;:116;;;;;:::i;:::-;17357:9;:17;17367:6;17357:17;;;;;;;;;;;;;;;:136;;;;17527:32;17552:6;17527:9;:20;17537:9;17527:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17504:9;:20;17514:9;17504:20;;;;;;;;;;;;;;;:55;;;;17592:9;17575:35;;17584:6;17575:35;;;17603:6;17575:35;;;;;;:::i;:::-;;;;;;;;16984:634;;;:::o;37194:296::-;37273:22;37298:21;37273:46;;37332:24;37349:6;37332:16;:24::i;:::-;37369:18;37390:41;37416:14;37390:21;:25;;:41;;;;:::i;:::-;37369:62;;37452:8;37444:26;;:38;37471:10;37444:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37262:228;;37194:296;;:::o;1768:471::-;1826:7;2076:1;2071;:6;2067:47;;2101:1;2094:8;;;;2067:47;2126:9;2142:1;2138;:5;;;;:::i;:::-;2126:17;;2171:1;2166;2162;:5;;;;:::i;:::-;:10;2154:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2230:1;2223:8;;;1768:471;;;;;:::o;2715:132::-;2773:7;2800:39;2804:1;2807;2800:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2793:46;;2715:132;;;;:::o;844:136::-;902:7;929:43;933:1;936;929:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;922:50;;844:136;;;;:::o;20532:125::-;;;;:::o;37498:589::-;37624:21;37662:1;37648:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37624:40;;37693:4;37675;37680:1;37675:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;37719:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37709:4;37714:1;37709:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;37754:62;37771:4;37786:15;;;;;;;;;;;37804:11;37754:8;:62::i;:::-;37855:15;;;;;;;;;;;:66;;;37936:11;37962:1;38006:4;38033;38053:15;37855:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37553:534;37498:589;:::o;3343:312::-;3463:7;3495:1;3491;:5;3498:12;3483:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3522:9;3538:1;3534;:5;;;;:::i;:::-;3522:17;;3646:1;3639:8;;;3343:312;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:151::-;3867:9;3900:37;3931:5;3900:37;:::i;:::-;3887:50;;3792:151;;;:::o;3949:181::-;4061:62;4117:5;4061:62;:::i;:::-;4056:3;4049:75;3949:181;;:::o;4136:272::-;4254:4;4292:2;4281:9;4277:18;4269:26;;4305:96;4398:1;4387:9;4383:17;4374:6;4305:96;:::i;:::-;4136:272;;;;:::o;4414:118::-;4501:24;4519:5;4501:24;:::i;:::-;4496:3;4489:37;4414:118;;:::o;4538:222::-;4631:4;4669:2;4658:9;4654:18;4646:26;;4682:71;4750:1;4739:9;4735:17;4726:6;4682:71;:::i;:::-;4538:222;;;;:::o;4766:619::-;4843:6;4851;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;5289:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5260:118;4766:619;;;;;:::o;5391:118::-;5478:24;5496:5;5478:24;:::i;:::-;5473:3;5466:37;5391:118;;:::o;5515:222::-;5608:4;5646:2;5635:9;5631:18;5623:26;;5659:71;5727:1;5716:9;5712:17;5703:6;5659:71;:::i;:::-;5515:222;;;;:::o;5743:86::-;5778:7;5818:4;5811:5;5807:16;5796:27;;5743:86;;;:::o;5835:112::-;5918:22;5934:5;5918:22;:::i;:::-;5913:3;5906:35;5835:112;;:::o;5953:214::-;6042:4;6080:2;6069:9;6065:18;6057:26;;6093:67;6157:1;6146:9;6142:17;6133:6;6093:67;:::i;:::-;5953:214;;;;:::o;6173:329::-;6232:6;6281:2;6269:9;6260:7;6256:23;6252:32;6249:119;;;6287:79;;:::i;:::-;6249:119;6407:1;6432:53;6477:7;6468:6;6457:9;6453:22;6432:53;:::i;:::-;6422:63;;6378:117;6173:329;;;;:::o;6508:116::-;6578:21;6593:5;6578:21;:::i;:::-;6571:5;6568:32;6558:60;;6614:1;6611;6604:12;6558:60;6508:116;:::o;6630:133::-;6673:5;6711:6;6698:20;6689:29;;6727:30;6751:5;6727:30;:::i;:::-;6630:133;;;;:::o;6769:468::-;6834:6;6842;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;7144:2;7170:50;7212:7;7203:6;7192:9;7188:22;7170:50;:::i;:::-;7160:60;;7115:115;6769:468;;;;;:::o;7243:474::-;7311:6;7319;7368:2;7356:9;7347:7;7343:23;7339:32;7336:119;;;7374:79;;:::i;:::-;7336:119;7494:1;7519:53;7564:7;7555:6;7544:9;7540:22;7519:53;:::i;:::-;7509:63;;7465:117;7621:2;7647:53;7692:7;7683:6;7672:9;7668:22;7647:53;:::i;:::-;7637:63;;7592:118;7243:474;;;;;:::o;7723:180::-;7771:77;7768:1;7761:88;7868:4;7865:1;7858:15;7892:4;7889:1;7882:15;7909:320;7953:6;7990:1;7984:4;7980:12;7970:22;;8037:1;8031:4;8027:12;8058:18;8048:81;;8114:4;8106:6;8102:17;8092:27;;8048:81;8176:2;8168:6;8165:14;8145:18;8142:38;8139:84;;8195:18;;:::i;:::-;8139:84;7960:269;7909:320;;;:::o;8235:182::-;8375:34;8371:1;8363:6;8359:14;8352:58;8235:182;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o;9220:225::-;9360:34;9356:1;9348:6;9344:14;9337:58;9429:8;9424:2;9416:6;9412:15;9405:33;9220:225;:::o;9451:366::-;9593:3;9614:67;9678:2;9673:3;9614:67;:::i;:::-;9607:74;;9690:93;9779:3;9690:93;:::i;:::-;9808:2;9803:3;9799:12;9792:19;;9451:366;;;:::o;9823:419::-;9989:4;10027:2;10016:9;10012:18;10004:26;;10076:9;10070:4;10066:20;10062:1;10051:9;10047:17;10040:47;10104:131;10230:4;10104:131;:::i;:::-;10096:139;;9823:419;;;:::o;10248:231::-;10388:34;10384:1;10376:6;10372:14;10365:58;10457:14;10452:2;10444:6;10440:15;10433:39;10248:231;:::o;10485:366::-;10627:3;10648:67;10712:2;10707:3;10648:67;:::i;:::-;10641:74;;10724:93;10813:3;10724:93;:::i;:::-;10842:2;10837:3;10833:12;10826:19;;10485:366;;;:::o;10857:419::-;11023:4;11061:2;11050:9;11046:18;11038:26;;11110:9;11104:4;11100:20;11096:1;11085:9;11081:17;11074:47;11138:131;11264:4;11138:131;:::i;:::-;11130:139;;10857:419;;;:::o;11282:229::-;11422:34;11418:1;11410:6;11406:14;11399:58;11491:12;11486:2;11478:6;11474:15;11467:37;11282:229;:::o;11517:366::-;11659:3;11680:67;11744:2;11739:3;11680:67;:::i;:::-;11673:74;;11756:93;11845:3;11756:93;:::i;:::-;11874:2;11869:3;11865:12;11858:19;;11517:366;;;:::o;11889:419::-;12055:4;12093:2;12082:9;12078:18;12070:26;;12142:9;12136:4;12132:20;12128:1;12117:9;12113:17;12106:47;12170:131;12296:4;12170:131;:::i;:::-;12162:139;;11889:419;;;:::o;12314:226::-;12454:34;12450:1;12442:6;12438:14;12431:58;12523:9;12518:2;12510:6;12506:15;12499:34;12314:226;:::o;12546:366::-;12688:3;12709:67;12773:2;12768:3;12709:67;:::i;:::-;12702:74;;12785:93;12874:3;12785:93;:::i;:::-;12903:2;12898:3;12894:12;12887:19;;12546:366;;;:::o;12918:419::-;13084:4;13122:2;13111:9;13107:18;13099:26;;13171:9;13165:4;13161:20;13157:1;13146:9;13142:17;13135:47;13199:131;13325:4;13199:131;:::i;:::-;13191:139;;12918:419;;;:::o;13343:180::-;13391:77;13388:1;13381:88;13488:4;13485:1;13478:15;13512:4;13509:1;13502:15;13529:191;13569:3;13588:20;13606:1;13588:20;:::i;:::-;13583:25;;13622:20;13640:1;13622:20;:::i;:::-;13617:25;;13665:1;13662;13658:9;13651:16;;13686:3;13683:1;13680:10;13677:36;;;13693:18;;:::i;:::-;13677:36;13529:191;;;;:::o;13726:179::-;13866:31;13862:1;13854:6;13850:14;13843:55;13726:179;:::o;13911:366::-;14053:3;14074:67;14138:2;14133:3;14074:67;:::i;:::-;14067:74;;14150:93;14239:3;14150:93;:::i;:::-;14268:2;14263:3;14259:12;14252:19;;13911:366;;;:::o;14283:419::-;14449:4;14487:2;14476:9;14472:18;14464:26;;14536:9;14530:4;14526:20;14522:1;14511:9;14507:17;14500:47;14564:131;14690:4;14564:131;:::i;:::-;14556:139;;14283:419;;;:::o;14708:194::-;14748:4;14768:20;14786:1;14768:20;:::i;:::-;14763:25;;14802:20;14820:1;14802:20;:::i;:::-;14797:25;;14846:1;14843;14839:9;14831:17;;14870:1;14864:4;14861:11;14858:37;;;14875:18;;:::i;:::-;14858:37;14708:194;;;;:::o;14908:177::-;15048:29;15044:1;15036:6;15032:14;15025:53;14908:177;:::o;15091:366::-;15233:3;15254:67;15318:2;15313:3;15254:67;:::i;:::-;15247:74;;15330:93;15419:3;15330:93;:::i;:::-;15448:2;15443:3;15439:12;15432:19;;15091:366;;;:::o;15463:419::-;15629:4;15667:2;15656:9;15652:18;15644:26;;15716:9;15710:4;15706:20;15702:1;15691:9;15687:17;15680:47;15744:131;15870:4;15744:131;:::i;:::-;15736:139;;15463:419;;;:::o;15888:332::-;16009:4;16047:2;16036:9;16032:18;16024:26;;16060:71;16128:1;16117:9;16113:17;16104:6;16060:71;:::i;:::-;16141:72;16209:2;16198:9;16194:18;16185:6;16141:72;:::i;:::-;15888:332;;;;;:::o;16226:143::-;16283:5;16314:6;16308:13;16299:22;;16330:33;16357:5;16330:33;:::i;:::-;16226:143;;;;:::o;16375:351::-;16445:6;16494:2;16482:9;16473:7;16469:23;16465:32;16462:119;;;16500:79;;:::i;:::-;16462:119;16620:1;16645:64;16701:7;16692:6;16681:9;16677:22;16645:64;:::i;:::-;16635:74;;16591:128;16375:351;;;;:::o;16732:232::-;16872:34;16868:1;16860:6;16856:14;16849:58;16941:15;16936:2;16928:6;16924:15;16917:40;16732:232;:::o;16970:366::-;17112:3;17133:67;17197:2;17192:3;17133:67;:::i;:::-;17126:74;;17209:93;17298:3;17209:93;:::i;:::-;17327:2;17322:3;17318:12;17311:19;;16970:366;;;:::o;17342:419::-;17508:4;17546:2;17535:9;17531:18;17523:26;;17595:9;17589:4;17585:20;17581:1;17570:9;17566:17;17559:47;17623:131;17749:4;17623:131;:::i;:::-;17615:139;;17342:419;;;:::o;17767:230::-;17907:34;17903:1;17895:6;17891:14;17884:58;17976:13;17971:2;17963:6;17959:15;17952:38;17767:230;:::o;18003:366::-;18145:3;18166:67;18230:2;18225:3;18166:67;:::i;:::-;18159:74;;18242:93;18331:3;18242:93;:::i;:::-;18360:2;18355:3;18351:12;18344:19;;18003:366;;;:::o;18375:419::-;18541:4;18579:2;18568:9;18564:18;18556:26;;18628:9;18622:4;18618:20;18614:1;18603:9;18599:17;18592:47;18656:131;18782:4;18656:131;:::i;:::-;18648:139;;18375:419;;;:::o;18800:410::-;18840:7;18863:20;18881:1;18863:20;:::i;:::-;18858:25;;18897:20;18915:1;18897:20;:::i;:::-;18892:25;;18952:1;18949;18945:9;18974:30;18992:11;18974:30;:::i;:::-;18963:41;;19153:1;19144:7;19140:15;19137:1;19134:22;19114:1;19107:9;19087:83;19064:139;;19183:18;;:::i;:::-;19064:139;18848:362;18800:410;;;;:::o;19216:180::-;19264:77;19261:1;19254:88;19361:4;19358:1;19351:15;19385:4;19382:1;19375:15;19402:185;19442:1;19459:20;19477:1;19459:20;:::i;:::-;19454:25;;19493:20;19511:1;19493:20;:::i;:::-;19488:25;;19532:1;19522:35;;19537:18;;:::i;:::-;19522:35;19579:1;19576;19572:9;19567:14;;19402:185;;;;:::o;19593:220::-;19733:34;19729:1;19721:6;19717:14;19710:58;19802:3;19797:2;19789:6;19785:15;19778:28;19593:220;:::o;19819:366::-;19961:3;19982:67;20046:2;20041:3;19982:67;:::i;:::-;19975:74;;20058:93;20147:3;20058:93;:::i;:::-;20176:2;20171:3;20167:12;20160:19;;19819:366;;;:::o;20191:419::-;20357:4;20395:2;20384:9;20380:18;20372:26;;20444:9;20438:4;20434:20;20430:1;20419:9;20415:17;20408:47;20472:131;20598:4;20472:131;:::i;:::-;20464:139;;20191:419;;;:::o;20616:180::-;20664:77;20661:1;20654:88;20761:4;20758:1;20751:15;20785:4;20782:1;20775:15;20802:180;20850:77;20847:1;20840:88;20947:4;20944:1;20937:15;20971:4;20968:1;20961:15;20988:143;21045:5;21076:6;21070:13;21061:22;;21092:33;21119:5;21092:33;:::i;:::-;20988:143;;;;:::o;21137:351::-;21207:6;21256:2;21244:9;21235:7;21231:23;21227:32;21224:119;;;21262:79;;:::i;:::-;21224:119;21382:1;21407:64;21463:7;21454:6;21443:9;21439:22;21407:64;:::i;:::-;21397:74;;21353:128;21137:351;;;;:::o;21494:85::-;21539:7;21568:5;21557:16;;21494:85;;;:::o;21585:158::-;21643:9;21676:61;21694:42;21703:32;21729:5;21703:32;:::i;:::-;21694:42;:::i;:::-;21676:61;:::i;:::-;21663:74;;21585:158;;;:::o;21749:147::-;21844:45;21883:5;21844:45;:::i;:::-;21839:3;21832:58;21749:147;;:::o;21902:114::-;21969:6;22003:5;21997:12;21987:22;;21902:114;;;:::o;22022:184::-;22121:11;22155:6;22150:3;22143:19;22195:4;22190:3;22186:14;22171:29;;22022:184;;;;:::o;22212:132::-;22279:4;22302:3;22294:11;;22332:4;22327:3;22323:14;22315:22;;22212:132;;;:::o;22350:108::-;22427:24;22445:5;22427:24;:::i;:::-;22422:3;22415:37;22350:108;;:::o;22464:179::-;22533:10;22554:46;22596:3;22588:6;22554:46;:::i;:::-;22632:4;22627:3;22623:14;22609:28;;22464:179;;;;:::o;22649:113::-;22719:4;22751;22746:3;22742:14;22734:22;;22649:113;;;:::o;22798:732::-;22917:3;22946:54;22994:5;22946:54;:::i;:::-;23016:86;23095:6;23090:3;23016:86;:::i;:::-;23009:93;;23126:56;23176:5;23126:56;:::i;:::-;23205:7;23236:1;23221:284;23246:6;23243:1;23240:13;23221:284;;;23322:6;23316:13;23349:63;23408:3;23393:13;23349:63;:::i;:::-;23342:70;;23435:60;23488:6;23435:60;:::i;:::-;23425:70;;23281:224;23268:1;23265;23261:9;23256:14;;23221:284;;;23225:14;23521:3;23514:10;;22922:608;;;22798:732;;;;:::o;23536:831::-;23799:4;23837:3;23826:9;23822:19;23814:27;;23851:71;23919:1;23908:9;23904:17;23895:6;23851:71;:::i;:::-;23932:80;24008:2;23997:9;23993:18;23984:6;23932:80;:::i;:::-;24059:9;24053:4;24049:20;24044:2;24033:9;24029:18;24022:48;24087:108;24190:4;24181:6;24087:108;:::i;:::-;24079:116;;24205:72;24273:2;24262:9;24258:18;24249:6;24205:72;:::i;:::-;24287:73;24355:3;24344:9;24340:19;24331:6;24287:73;:::i;:::-;23536:831;;;;;;;;:::o

Swarm Source

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