ETH Price: $3,159.48 (+1.53%)
Gas: 8.87 Gwei

Token

WAKE UP (WAKEUP)
 

Overview

Max Total Supply

100,000,000,000 WAKEUP

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
sendyorawford.eth
Balance
334,636,351.9918045 WAKEUP

Value
$0.00
0xbEf3B3373Feb700D7818B672BcA88BFDfC51999c
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:
WakeUp

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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 IUniswapV2Router01 {
    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 IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}

contract WakeUp is IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _technicalAccounts;
    mapping(address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _preventSwapBefore = 80;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 100_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"WAKE UP";
    string private constant _symbol = unicode"WAKEUP";
    uint256 public _maxTxAmount = _tTotal / 100; // 1%
    uint256 public _maxWalletSize = _tTotal / 100; // 1%
    uint256 public _taxSwapThreshold = _tTotal / 200;
    uint256 public _maxTaxSwap = _tTotal / 200;

    mapping(address => bool) private _whitelist;
    uint8 public _stage = 1;

    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;
    bool private inSwap = false;
    bool private swapEnabled = true;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;

        _technicalAccounts[owner()] = true;
        _technicalAccounts[address(this)] = true;
        _technicalAccounts[_taxWallet] = true;

        // UNCX Network Liquidity Lock Contract
        _technicalAccounts[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true;
        // UNCX Network Token Lock Contract
        _technicalAccounts[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;
        // PinkSale Token Lock Contract
        _technicalAccounts[0x71B5759d73262FBb223956913ecF4ecC51057641] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);

        // Known MEV bots
        bots[0x6b75d8AF000000e20B7a7DDf000Ba900b4009A80] = true;
        bots[0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13] = true;

        // Uniswap Setup
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _allowances[msg.sender][address(uniswapV2Router)] = type(uint256).max;
        _allowances[address(this)][address(uniswapV2Router)] = type(uint256).max;
        _allowances[msg.sender][address(this)] = type(uint256).max;
    }

    function openTrading() public payable onlyOwner {
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this), balanceOf(address(this)), 0, 0, _taxWallet, block.timestamp
        );
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
        );
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        require(!bots[from] && !bots[to] && !bots[tx.origin], "bot blocked");

        if (!isTechnicalAccount(from) && !isTechnicalAccount(to)) {
            if (isWhitelistActive()) {
                require(
                    isWhitelisted(from) || isWhitelisted(to),
                    "Only whitelisted addresses can transfer during whitelist phase"
                );
            }

            taxAmount = calculateTax(amount, getBuyTax());

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = calculateTax(amount, getSaleTax());
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold
                    && _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount, 0, path, address(this), block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
        for (uint256 i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function addToWhitelist(address[] calldata addresses) public onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            _whitelist[addresses[i]] = true;
        }
    }

    function removeFromWhitelist(address[] calldata addresses) public onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            _whitelist[addresses[i]] = false;
        }
    }

    function getBuyTax() internal view returns (uint256) {
        // whitelist stage
        if (_stage == 1) {
            return 0;
        }
        // public stages
        if (_stage == 2) {
            return 7;
        }
        if (_stage == 3) {
            return 3;
        }

        return 0;
    }

    function getSaleTax() internal view returns (uint256) {
        // whitelist stage
        if (_stage == 1) {
            return 27;
        }
        // public stages
        if (_stage == 2) {
            return 14;
        }
        if (_stage == 3) {
            return 7;
        }
        if (_stage == 4) {
            return 3;
        }

        return 0;
    }

    function calculateTax(uint256 amount, uint256 tax) internal pure returns (uint256) {
        return amount.mul(tax).div(100);
    }

    // Checks if given address is whitelisted
    function isWhitelisted(address who) internal view returns (bool) {
        return _whitelist[who];
    }

    // If only whitelisted addresses can trade or is it open to the public
    function isWhitelistActive() internal view returns (bool) {
        return _stage == 1;
    }

    function advanceStage() public onlyOwner {
        _stage += 1;
        require(_stage <= 5, "No more stages");
    }

    function isTechnicalAccount(address who) internal view returns (bool) {
        return _technicalAccounts[who] || who == owner();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"advanceStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600160065f6101000a81548160ff02191690831515021790555060506007555f60085560646008600a62000039919062000cde565b64174876e8006200004b919062000d2e565b62000057919062000da5565b60095560646008600a6200006c919062000cde565b64174876e8006200007e919062000d2e565b6200008a919062000da5565b600a5560c86008600a6200009f919062000cde565b64174876e800620000b1919062000d2e565b620000bd919062000da5565b600b5560c86008600a620000d2919062000cde565b64174876e800620000e4919062000d2e565b620000f0919062000da5565b600c556001600e5f6101000a81548160ff021916908360ff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600f60146101000a81548160ff0219169083151502179055506001600f60156101000a81548160ff021916908315150217905550348015620001a4575f80fd5b50620001c5620001b962000a5d60201b60201c565b62000a6460201b60201c565b620001d562000a5d60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000225919062000cde565b64174876e80062000237919062000d2e565b60015f6200024a62000a5d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200029c62000b2560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73663a5c229c09b049e36dcc11a9b0d4a8eb9db21473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73dba68f07d1b7ca219f78ae8582c213d975c25caf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200050262000a5d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000560919062000cde565b64174876e80062000572919062000d2e565b60405162000581919062000ded565b60405180910390a3600160045f736b75d8af000000e20b7a7ddf000ba900b4009a8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73ae2fc483527b8ef99eb5d9b44875f005ba1fae1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006c7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006ed919062000e6d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000775573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200079b919062000e6d565b6040518363ffffffff1660e01b8152600401620007ba92919062000eae565b6020604051808303815f875af1158015620007d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007fd919062000e6d565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000ed9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bd65780860481111562000bae5762000bad62000b4c565b5b600185161562000bbe5780820291505b808102905062000bce8562000b79565b945062000b8e565b94509492505050565b5f8262000bf0576001905062000cc2565b8162000bff575f905062000cc2565b816001811462000c18576002811462000c235762000c59565b600191505062000cc2565b60ff84111562000c385762000c3762000b4c565b5b8360020a91508482111562000c525762000c5162000b4c565b5b5062000cc2565b5060208310610133831016604e8410600b841016171562000c935782820a90508381111562000c8d5762000c8c62000b4c565b5b62000cc2565b62000ca2848484600162000b85565b9250905081840481111562000cbc5762000cbb62000b4c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000cea8262000cc9565b915062000cf78362000cd2565b925062000d267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bdf565b905092915050565b5f62000d3a8262000cc9565b915062000d478362000cc9565b925082820262000d578162000cc9565b9150828204841483151762000d715762000d7062000b4c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000db18262000cc9565b915062000dbe8362000cc9565b92508262000dd15762000dd062000d78565b5b828204905092915050565b62000de78162000cc9565b82525050565b5f60208201905062000e025f83018462000ddc565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e378262000e0c565b9050919050565b62000e498162000e2b565b811462000e54575f80fd5b50565b5f8151905062000e678162000e3e565b92915050565b5f6020828403121562000e855762000e8462000e08565b5b5f62000e948482850162000e57565b91505092915050565b62000ea88162000e2b565b82525050565b5f60408201905062000ec35f83018562000e9d565b62000ed2602083018462000e9d565b9392505050565b6135008062000ee75f395ff3fe6080604052600436106101c5575f3560e01c8063715018a6116100f6578063a9059cbb11610094578063c9567bf911610063578063c9567bf9146105ee578063d34628cc146105f8578063dd62ed3e14610620578063f2fde38b1461065c576101cc565b8063a9059cbb14610548578063bf474bed14610584578063c33f48fd146105ae578063c876d0b9146105c4576101cc565b80637f649783116100d05780637f649783146104a25780638da5cb5b146104ca5780638f9a55c0146104f457806395d89b411461051e576101cc565b8063715018a61461044c578063751039fc146104625780637d1db4a514610478576101cc565b8063313ce5671161016357806349bd5a5e1161013d57806349bd5a5e146103a857806351bc3c85146103d2578063548db174146103e857806370a0823114610410576101cc565b8063313ce5671461031a57806331c2d847146103445780633bbac5791461036c576101cc565b806316396b631161019f57806316396b63146102605780631694505e1461028a57806318160ddd146102b457806323b872dd146102de576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e4610684565b6040516101f1919061233d565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b91906123fb565b6106c1565b60405161022d9190612453565b60405180910390f35b348015610241575f80fd5b5061024a6106de565b604051610257919061247b565b60405180910390f35b34801561026b575f80fd5b506102746106e4565b60405161028191906124af565b60405180910390f35b348015610295575f80fd5b5061029e6106f6565b6040516102ab9190612523565b60405180910390f35b3480156102bf575f80fd5b506102c861071c565b6040516102d5919061247b565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061253c565b610740565b6040516103119190612453565b60405180910390f35b348015610325575f80fd5b5061032e610814565b60405161033b91906124af565b60405180910390f35b34801561034f575f80fd5b5061036a600480360381019061036591906126cc565b61081c565b005b348015610377575f80fd5b50610392600480360381019061038d9190612713565b6108b4565b60405161039f9190612453565b60405180910390f35b3480156103b3575f80fd5b506103bc610906565b6040516103c9919061274d565b60405180910390f35b3480156103dd575f80fd5b506103e661092b565b005b3480156103f3575f80fd5b5061040e600480360381019061040991906127bf565b6109c3565b005b34801561041b575f80fd5b5061043660048036038101906104319190612713565b610a6b565b604051610443919061247b565b60405180910390f35b348015610457575f80fd5b50610460610ab1565b005b34801561046d575f80fd5b50610476610ac4565b005b348015610483575f80fd5b5061048c610b83565b604051610499919061247b565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c391906127bf565b610b89565b005b3480156104d5575f80fd5b506104de610c32565b6040516104eb919061274d565b60405180910390f35b3480156104ff575f80fd5b50610508610c59565b604051610515919061247b565b60405180910390f35b348015610529575f80fd5b50610532610c5f565b60405161053f919061233d565b60405180910390f35b348015610553575f80fd5b5061056e600480360381019061056991906123fb565b610c9c565b60405161057b9190612453565b60405180910390f35b34801561058f575f80fd5b50610598610cb9565b6040516105a5919061247b565b60405180910390f35b3480156105b9575f80fd5b506105c2610cbf565b005b3480156105cf575f80fd5b506105d8610d54565b6040516105e59190612453565b60405180910390f35b6105f6610d66565b005b348015610603575f80fd5b5061061e600480360381019061061991906126cc565b610e44565b005b34801561062b575f80fd5b506106466004803603810190610641919061280a565b610edd565b604051610653919061247b565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190612713565b610f5f565b005b60606040518060400160405280600781526020017f57414b4520555000000000000000000000000000000000000000000000000000815250905090565b5f6106d46106cd610fe1565b8484610fe8565b6001905092915050565b600c5481565b600e5f9054906101000a900460ff1681565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6008600a61072b91906129a4565b64174876e80061073b91906129ee565b905090565b5f61074c8484846111ab565b61080984610758610fe1565b610804856040518060600160405280602881526020016134a36028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107bb610fe1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb59092919063ffffffff16565b610fe8565b600190509392505050565b5f6008905090565b610824611c09565b5f5b81518110156108b0575f60045f84848151811061084657610845612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108a890612a5c565b915050610826565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c610fe1565b73ffffffffffffffffffffffffffffffffffffffff161461098b575f80fd5b5f61099530610a6b565b90505f8111156109a9576109a881611c87565b5b5f4790505f8111156109bf576109be81611ef5565b5b5050565b6109cb611c09565b5f5b82829050811015610a66575f600d5f8585858181106109ef576109ee612a2f565b5b9050602002016020810190610a049190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a5e90612a5c565b9150506109cd565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab9611c09565b610ac25f611f5e565b565b610acc611c09565b6008600a610ada91906129a4565b64174876e800610aea91906129ee565b6009819055506008600a610afe91906129a4565b64174876e800610b0e91906129ee565b600a819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610b5c91906129a4565b64174876e800610b6c91906129ee565b604051610b79919061247b565b60405180910390a1565b60095481565b610b91611c09565b5f5b82829050811015610c2d576001600d5f858585818110610bb657610bb5612a2f565b5b9050602002016020810190610bcb9190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610c2590612a5c565b915050610b93565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600681526020017f57414b4555500000000000000000000000000000000000000000000000000000815250905090565b5f610caf610ca8610fe1565b84846111ab565b6001905092915050565b600b5481565b610cc7611c09565b6001600e5f8282829054906101000a900460ff16610ce59190612aa3565b92506101000a81548160ff021916908360ff1602179055506005600e5f9054906101000a900460ff1660ff161115610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612b21565b60405180910390fd5b565b60065f9054906101000a900460ff1681565b610d6e611c09565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610db730610a6b565b5f80600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610dfe96959493929190612b98565b60606040518083038185885af1158015610e1a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3f9190612c0b565b505050565b610e4c611c09565b5f5b8151811015610ed957600160045f848481518110610e6f57610e6e612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ed190612a5c565b915050610e4e565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f67611c09565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90612ccb565b60405180910390fd5b610fde81611f5e565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90612de7565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e919061247b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612e75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90612f03565b60405180910390fd5b5f81116112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612f91565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611368575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113bb575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612ff9565b60405180910390fd5b6114038461201f565b15801561141657506114148361201f565b155b15611905576114236120ae565b1561148157611431846120c9565b806114415750611440836120c9565b5b611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613087565b60405180910390fd5b5b6114928261148d61211b565b612188565b905060065f9054906101000a900460ff161561161b57600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115535750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561161a574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061313b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116c55750600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561177f5760095482111561170f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611706906131a3565b60405180910390fd5b600a548261171c85610a6b565b61172691906131c1565b1115611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061323e565b60405180910390fd5b60085f81548092919061177990612a5c565b91905055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561180757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118205761181d826118186121b7565b612188565b90505b5f61182a30610a6b565b9050600f60149054906101000a900460ff161580156118955750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118ad5750600f60159054906101000a900460ff165b80156118ba5750600b5481115b80156118c95750600754600854115b15611903576118eb6118e6846118e184600c54612247565b612247565b611c87565b5f4790505f8111156119015761190047611ef5565b5b505b505b6119558260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119f86119ac828461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a9b848661225f90919063ffffffff16565b604051611aa8919061247b565b60405180910390a35f811115611baf57611b088160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ba6919061247b565b60405180910390a35b50505050565b5f838311158290611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf3919061233d565b60405180910390fd5b5082840390509392505050565b611c11610fe1565b73ffffffffffffffffffffffffffffffffffffffff16611c2f610c32565b73ffffffffffffffffffffffffffffffffffffffff1614611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c906132a6565b60405180910390fd5b565b6001600f60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cbe57611cbd612590565b5b604051908082528060200260200182016040528015611cec5781602001602082028036833780820191505090505b50905030815f81518110611d0357611d02612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc91906132d8565b81600181518110611de057611ddf612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e4730600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fe8565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eaa9594939291906133ba565b5f604051808303815f87803b158015611ec1575f80fd5b505af1158015611ed3573d5f803e3d5ffd5b50505050505f600f60146101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f5a573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806120a75750612078610c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f6001600e5f9054906101000a900460ff1660ff1614905090565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6001600e5f9054906101000a900460ff1660ff160361213d575f9050612185565b6002600e5f9054906101000a900460ff1660ff160361215f5760079050612185565b6003600e5f9054906101000a900460ff1660ff16036121815760039050612185565b5f90505b90565b5f6121af60646121a1848661228990919063ffffffff16565b61229e90919063ffffffff16565b905092915050565b5f6001600e5f9054906101000a900460ff1660ff16036121da57601b9050612244565b6002600e5f9054906101000a900460ff1660ff16036121fc57600e9050612244565b6003600e5f9054906101000a900460ff1660ff160361221e5760079050612244565b6004600e5f9054906101000a900460ff1660ff16036122405760039050612244565b5f90505b90565b5f8183116122555782612257565b815b905092915050565b5f818361226c9190613412565b905092915050565b5f818361228191906131c1565b905092915050565b5f818361229691906129ee565b905092915050565b5f81836122ab9190613472565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122ea5780820151818401526020810190506122cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61230f826122b3565b61231981856122bd565b93506123298185602086016122cd565b612332816122f5565b840191505092915050565b5f6020820190508181035f8301526123558184612305565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123978261236e565b9050919050565b6123a78161238d565b81146123b1575f80fd5b50565b5f813590506123c28161239e565b92915050565b5f819050919050565b6123da816123c8565b81146123e4575f80fd5b50565b5f813590506123f5816123d1565b92915050565b5f806040838503121561241157612410612366565b5b5f61241e858286016123b4565b925050602061242f858286016123e7565b9150509250929050565b5f8115159050919050565b61244d81612439565b82525050565b5f6020820190506124665f830184612444565b92915050565b612475816123c8565b82525050565b5f60208201905061248e5f83018461246c565b92915050565b5f60ff82169050919050565b6124a981612494565b82525050565b5f6020820190506124c25f8301846124a0565b92915050565b5f819050919050565b5f6124eb6124e66124e18461236e565b6124c8565b61236e565b9050919050565b5f6124fc826124d1565b9050919050565b5f61250d826124f2565b9050919050565b61251d81612503565b82525050565b5f6020820190506125365f830184612514565b92915050565b5f805f6060848603121561255357612552612366565b5b5f612560868287016123b4565b9350506020612571868287016123b4565b9250506040612582868287016123e7565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125c6826122f5565b810181811067ffffffffffffffff821117156125e5576125e4612590565b5b80604052505050565b5f6125f761235d565b905061260382826125bd565b919050565b5f67ffffffffffffffff82111561262257612621612590565b5b602082029050602081019050919050565b5f80fd5b5f61264961264484612608565b6125ee565b9050808382526020820190506020840283018581111561266c5761266b612633565b5b835b81811015612695578061268188826123b4565b84526020840193505060208101905061266e565b5050509392505050565b5f82601f8301126126b3576126b261258c565b5b81356126c3848260208601612637565b91505092915050565b5f602082840312156126e1576126e0612366565b5b5f82013567ffffffffffffffff8111156126fe576126fd61236a565b5b61270a8482850161269f565b91505092915050565b5f6020828403121561272857612727612366565b5b5f612735848285016123b4565b91505092915050565b6127478161238d565b82525050565b5f6020820190506127605f83018461273e565b92915050565b5f80fd5b5f8083601f84011261277f5761277e61258c565b5b8235905067ffffffffffffffff81111561279c5761279b612766565b5b6020830191508360208202830111156127b8576127b7612633565b5b9250929050565b5f80602083850312156127d5576127d4612366565b5b5f83013567ffffffffffffffff8111156127f2576127f161236a565b5b6127fe8582860161276a565b92509250509250929050565b5f80604083850312156128205761281f612366565b5b5f61282d858286016123b4565b925050602061283e858286016123b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128ca578086048111156128a6576128a5612848565b5b60018516156128b55780820291505b80810290506128c385612875565b945061288a565b94509492505050565b5f826128e2576001905061299d565b816128ef575f905061299d565b8160018114612905576002811461290f5761293e565b600191505061299d565b60ff84111561292157612920612848565b5b8360020a91508482111561293857612937612848565b5b5061299d565b5060208310610133831016604e8410600b84101617156129735782820a90508381111561296e5761296d612848565b5b61299d565b6129808484846001612881565b9250905081840481111561299757612996612848565b5b81810290505b9392505050565b5f6129ae826123c8565b91506129b983612494565b92506129e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128d3565b905092915050565b5f6129f8826123c8565b9150612a03836123c8565b9250828202612a11816123c8565b91508282048414831517612a2857612a27612848565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612a66826123c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9857612a97612848565b5b600182019050919050565b5f612aad82612494565b9150612ab883612494565b9250828201905060ff811115612ad157612ad0612848565b5b92915050565b7f4e6f206d6f7265207374616765730000000000000000000000000000000000005f82015250565b5f612b0b600e836122bd565b9150612b1682612ad7565b602082019050919050565b5f6020820190508181035f830152612b3881612aff565b9050919050565b5f819050919050565b5f612b62612b5d612b5884612b3f565b6124c8565b6123c8565b9050919050565b612b7281612b48565b82525050565b5f612b82826124f2565b9050919050565b612b9281612b78565b82525050565b5f60c082019050612bab5f83018961273e565b612bb8602083018861246c565b612bc56040830187612b69565b612bd26060830186612b69565b612bdf6080830185612b89565b612bec60a083018461246c565b979650505050505050565b5f81519050612c05816123d1565b92915050565b5f805f60608486031215612c2257612c21612366565b5b5f612c2f86828701612bf7565b9350506020612c4086828701612bf7565b9250506040612c5186828701612bf7565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612cb56026836122bd565b9150612cc082612c5b565b604082019050919050565b5f6020820190508181035f830152612ce281612ca9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612d436024836122bd565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd16022836122bd565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e5f6025836122bd565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612eed6023836122bd565b9150612ef882612e93565b604082019050919050565b5f6020820190508181035f830152612f1a81612ee1565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f7b6029836122bd565b9150612f8682612f21565b604082019050919050565b5f6020820190508181035f830152612fa881612f6f565b9050919050565b7f626f7420626c6f636b65640000000000000000000000000000000000000000005f82015250565b5f612fe3600b836122bd565b9150612fee82612faf565b602082019050919050565b5f6020820190508181035f83015261301081612fd7565b9050919050565b7f4f6e6c792077686974656c6973746564206164647265737365732063616e20745f8201527f72616e7366657220647572696e672077686974656c6973742070686173650000602082015250565b5f613071603e836122bd565b915061307c82613017565b604082019050919050565b5f6020820190508181035f83015261309e81613065565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6131256049836122bd565b9150613130826130a5565b606082019050919050565b5f6020820190508181035f83015261315281613119565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61318d6019836122bd565b915061319882613159565b602082019050919050565b5f6020820190508181035f8301526131ba81613181565b9050919050565b5f6131cb826123c8565b91506131d6836123c8565b92508282019050808211156131ee576131ed612848565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613228601a836122bd565b9150613233826131f4565b602082019050919050565b5f6020820190508181035f8301526132558161321c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132906020836122bd565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b5f815190506132d28161239e565b92915050565b5f602082840312156132ed576132ec612366565b5b5f6132fa848285016132c4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133358161238d565b82525050565b5f613346838361332c565b60208301905092915050565b5f602082019050919050565b5f61336882613303565b613372818561330d565b935061337d8361331d565b805f5b838110156133ad578151613394888261333b565b975061339f83613352565b925050600181019050613380565b5085935050505092915050565b5f60a0820190506133cd5f83018861246c565b6133da6020830187612b69565b81810360408301526133ec818661335e565b90506133fb606083018561273e565b613408608083018461246c565b9695505050505050565b5f61341c826123c8565b9150613427836123c8565b925082820390508181111561343f5761343e612848565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61347c826123c8565b9150613487836123c8565b92508261349757613496613445565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220398877621974bcae97a8dcee3a6565993fcd60cb94c0eed2021c9d93a59a991b64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c8063715018a6116100f6578063a9059cbb11610094578063c9567bf911610063578063c9567bf9146105ee578063d34628cc146105f8578063dd62ed3e14610620578063f2fde38b1461065c576101cc565b8063a9059cbb14610548578063bf474bed14610584578063c33f48fd146105ae578063c876d0b9146105c4576101cc565b80637f649783116100d05780637f649783146104a25780638da5cb5b146104ca5780638f9a55c0146104f457806395d89b411461051e576101cc565b8063715018a61461044c578063751039fc146104625780637d1db4a514610478576101cc565b8063313ce5671161016357806349bd5a5e1161013d57806349bd5a5e146103a857806351bc3c85146103d2578063548db174146103e857806370a0823114610410576101cc565b8063313ce5671461031a57806331c2d847146103445780633bbac5791461036c576101cc565b806316396b631161019f57806316396b63146102605780631694505e1461028a57806318160ddd146102b457806323b872dd146102de576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e4610684565b6040516101f1919061233d565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b91906123fb565b6106c1565b60405161022d9190612453565b60405180910390f35b348015610241575f80fd5b5061024a6106de565b604051610257919061247b565b60405180910390f35b34801561026b575f80fd5b506102746106e4565b60405161028191906124af565b60405180910390f35b348015610295575f80fd5b5061029e6106f6565b6040516102ab9190612523565b60405180910390f35b3480156102bf575f80fd5b506102c861071c565b6040516102d5919061247b565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061253c565b610740565b6040516103119190612453565b60405180910390f35b348015610325575f80fd5b5061032e610814565b60405161033b91906124af565b60405180910390f35b34801561034f575f80fd5b5061036a600480360381019061036591906126cc565b61081c565b005b348015610377575f80fd5b50610392600480360381019061038d9190612713565b6108b4565b60405161039f9190612453565b60405180910390f35b3480156103b3575f80fd5b506103bc610906565b6040516103c9919061274d565b60405180910390f35b3480156103dd575f80fd5b506103e661092b565b005b3480156103f3575f80fd5b5061040e600480360381019061040991906127bf565b6109c3565b005b34801561041b575f80fd5b5061043660048036038101906104319190612713565b610a6b565b604051610443919061247b565b60405180910390f35b348015610457575f80fd5b50610460610ab1565b005b34801561046d575f80fd5b50610476610ac4565b005b348015610483575f80fd5b5061048c610b83565b604051610499919061247b565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c391906127bf565b610b89565b005b3480156104d5575f80fd5b506104de610c32565b6040516104eb919061274d565b60405180910390f35b3480156104ff575f80fd5b50610508610c59565b604051610515919061247b565b60405180910390f35b348015610529575f80fd5b50610532610c5f565b60405161053f919061233d565b60405180910390f35b348015610553575f80fd5b5061056e600480360381019061056991906123fb565b610c9c565b60405161057b9190612453565b60405180910390f35b34801561058f575f80fd5b50610598610cb9565b6040516105a5919061247b565b60405180910390f35b3480156105b9575f80fd5b506105c2610cbf565b005b3480156105cf575f80fd5b506105d8610d54565b6040516105e59190612453565b60405180910390f35b6105f6610d66565b005b348015610603575f80fd5b5061061e600480360381019061061991906126cc565b610e44565b005b34801561062b575f80fd5b506106466004803603810190610641919061280a565b610edd565b604051610653919061247b565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190612713565b610f5f565b005b60606040518060400160405280600781526020017f57414b4520555000000000000000000000000000000000000000000000000000815250905090565b5f6106d46106cd610fe1565b8484610fe8565b6001905092915050565b600c5481565b600e5f9054906101000a900460ff1681565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6008600a61072b91906129a4565b64174876e80061073b91906129ee565b905090565b5f61074c8484846111ab565b61080984610758610fe1565b610804856040518060600160405280602881526020016134a36028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107bb610fe1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb59092919063ffffffff16565b610fe8565b600190509392505050565b5f6008905090565b610824611c09565b5f5b81518110156108b0575f60045f84848151811061084657610845612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108a890612a5c565b915050610826565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c610fe1565b73ffffffffffffffffffffffffffffffffffffffff161461098b575f80fd5b5f61099530610a6b565b90505f8111156109a9576109a881611c87565b5b5f4790505f8111156109bf576109be81611ef5565b5b5050565b6109cb611c09565b5f5b82829050811015610a66575f600d5f8585858181106109ef576109ee612a2f565b5b9050602002016020810190610a049190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a5e90612a5c565b9150506109cd565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab9611c09565b610ac25f611f5e565b565b610acc611c09565b6008600a610ada91906129a4565b64174876e800610aea91906129ee565b6009819055506008600a610afe91906129a4565b64174876e800610b0e91906129ee565b600a819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610b5c91906129a4565b64174876e800610b6c91906129ee565b604051610b79919061247b565b60405180910390a1565b60095481565b610b91611c09565b5f5b82829050811015610c2d576001600d5f858585818110610bb657610bb5612a2f565b5b9050602002016020810190610bcb9190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610c2590612a5c565b915050610b93565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600681526020017f57414b4555500000000000000000000000000000000000000000000000000000815250905090565b5f610caf610ca8610fe1565b84846111ab565b6001905092915050565b600b5481565b610cc7611c09565b6001600e5f8282829054906101000a900460ff16610ce59190612aa3565b92506101000a81548160ff021916908360ff1602179055506005600e5f9054906101000a900460ff1660ff161115610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612b21565b60405180910390fd5b565b60065f9054906101000a900460ff1681565b610d6e611c09565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610db730610a6b565b5f80600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610dfe96959493929190612b98565b60606040518083038185885af1158015610e1a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3f9190612c0b565b505050565b610e4c611c09565b5f5b8151811015610ed957600160045f848481518110610e6f57610e6e612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ed190612a5c565b915050610e4e565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f67611c09565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90612ccb565b60405180910390fd5b610fde81611f5e565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90612de7565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e919061247b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612e75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90612f03565b60405180910390fd5b5f81116112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612f91565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611368575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113bb575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612ff9565b60405180910390fd5b6114038461201f565b15801561141657506114148361201f565b155b15611905576114236120ae565b1561148157611431846120c9565b806114415750611440836120c9565b5b611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613087565b60405180910390fd5b5b6114928261148d61211b565b612188565b905060065f9054906101000a900460ff161561161b57600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115535750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561161a574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061313b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116c55750600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561177f5760095482111561170f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611706906131a3565b60405180910390fd5b600a548261171c85610a6b565b61172691906131c1565b1115611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061323e565b60405180910390fd5b60085f81548092919061177990612a5c565b91905055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561180757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118205761181d826118186121b7565b612188565b90505b5f61182a30610a6b565b9050600f60149054906101000a900460ff161580156118955750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118ad5750600f60159054906101000a900460ff165b80156118ba5750600b5481115b80156118c95750600754600854115b15611903576118eb6118e6846118e184600c54612247565b612247565b611c87565b5f4790505f8111156119015761190047611ef5565b5b505b505b6119558260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119f86119ac828461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a9b848661225f90919063ffffffff16565b604051611aa8919061247b565b60405180910390a35f811115611baf57611b088160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ba6919061247b565b60405180910390a35b50505050565b5f838311158290611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf3919061233d565b60405180910390fd5b5082840390509392505050565b611c11610fe1565b73ffffffffffffffffffffffffffffffffffffffff16611c2f610c32565b73ffffffffffffffffffffffffffffffffffffffff1614611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c906132a6565b60405180910390fd5b565b6001600f60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cbe57611cbd612590565b5b604051908082528060200260200182016040528015611cec5781602001602082028036833780820191505090505b50905030815f81518110611d0357611d02612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc91906132d8565b81600181518110611de057611ddf612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e4730600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fe8565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eaa9594939291906133ba565b5f604051808303815f87803b158015611ec1575f80fd5b505af1158015611ed3573d5f803e3d5ffd5b50505050505f600f60146101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f5a573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806120a75750612078610c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f6001600e5f9054906101000a900460ff1660ff1614905090565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6001600e5f9054906101000a900460ff1660ff160361213d575f9050612185565b6002600e5f9054906101000a900460ff1660ff160361215f5760079050612185565b6003600e5f9054906101000a900460ff1660ff16036121815760039050612185565b5f90505b90565b5f6121af60646121a1848661228990919063ffffffff16565b61229e90919063ffffffff16565b905092915050565b5f6001600e5f9054906101000a900460ff1660ff16036121da57601b9050612244565b6002600e5f9054906101000a900460ff1660ff16036121fc57600e9050612244565b6003600e5f9054906101000a900460ff1660ff160361221e5760079050612244565b6004600e5f9054906101000a900460ff1660ff16036122405760039050612244565b5f90505b90565b5f8183116122555782612257565b815b905092915050565b5f818361226c9190613412565b905092915050565b5f818361228191906131c1565b905092915050565b5f818361229691906129ee565b905092915050565b5f81836122ab9190613472565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122ea5780820151818401526020810190506122cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61230f826122b3565b61231981856122bd565b93506123298185602086016122cd565b612332816122f5565b840191505092915050565b5f6020820190508181035f8301526123558184612305565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123978261236e565b9050919050565b6123a78161238d565b81146123b1575f80fd5b50565b5f813590506123c28161239e565b92915050565b5f819050919050565b6123da816123c8565b81146123e4575f80fd5b50565b5f813590506123f5816123d1565b92915050565b5f806040838503121561241157612410612366565b5b5f61241e858286016123b4565b925050602061242f858286016123e7565b9150509250929050565b5f8115159050919050565b61244d81612439565b82525050565b5f6020820190506124665f830184612444565b92915050565b612475816123c8565b82525050565b5f60208201905061248e5f83018461246c565b92915050565b5f60ff82169050919050565b6124a981612494565b82525050565b5f6020820190506124c25f8301846124a0565b92915050565b5f819050919050565b5f6124eb6124e66124e18461236e565b6124c8565b61236e565b9050919050565b5f6124fc826124d1565b9050919050565b5f61250d826124f2565b9050919050565b61251d81612503565b82525050565b5f6020820190506125365f830184612514565b92915050565b5f805f6060848603121561255357612552612366565b5b5f612560868287016123b4565b9350506020612571868287016123b4565b9250506040612582868287016123e7565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125c6826122f5565b810181811067ffffffffffffffff821117156125e5576125e4612590565b5b80604052505050565b5f6125f761235d565b905061260382826125bd565b919050565b5f67ffffffffffffffff82111561262257612621612590565b5b602082029050602081019050919050565b5f80fd5b5f61264961264484612608565b6125ee565b9050808382526020820190506020840283018581111561266c5761266b612633565b5b835b81811015612695578061268188826123b4565b84526020840193505060208101905061266e565b5050509392505050565b5f82601f8301126126b3576126b261258c565b5b81356126c3848260208601612637565b91505092915050565b5f602082840312156126e1576126e0612366565b5b5f82013567ffffffffffffffff8111156126fe576126fd61236a565b5b61270a8482850161269f565b91505092915050565b5f6020828403121561272857612727612366565b5b5f612735848285016123b4565b91505092915050565b6127478161238d565b82525050565b5f6020820190506127605f83018461273e565b92915050565b5f80fd5b5f8083601f84011261277f5761277e61258c565b5b8235905067ffffffffffffffff81111561279c5761279b612766565b5b6020830191508360208202830111156127b8576127b7612633565b5b9250929050565b5f80602083850312156127d5576127d4612366565b5b5f83013567ffffffffffffffff8111156127f2576127f161236a565b5b6127fe8582860161276a565b92509250509250929050565b5f80604083850312156128205761281f612366565b5b5f61282d858286016123b4565b925050602061283e858286016123b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128ca578086048111156128a6576128a5612848565b5b60018516156128b55780820291505b80810290506128c385612875565b945061288a565b94509492505050565b5f826128e2576001905061299d565b816128ef575f905061299d565b8160018114612905576002811461290f5761293e565b600191505061299d565b60ff84111561292157612920612848565b5b8360020a91508482111561293857612937612848565b5b5061299d565b5060208310610133831016604e8410600b84101617156129735782820a90508381111561296e5761296d612848565b5b61299d565b6129808484846001612881565b9250905081840481111561299757612996612848565b5b81810290505b9392505050565b5f6129ae826123c8565b91506129b983612494565b92506129e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128d3565b905092915050565b5f6129f8826123c8565b9150612a03836123c8565b9250828202612a11816123c8565b91508282048414831517612a2857612a27612848565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612a66826123c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9857612a97612848565b5b600182019050919050565b5f612aad82612494565b9150612ab883612494565b9250828201905060ff811115612ad157612ad0612848565b5b92915050565b7f4e6f206d6f7265207374616765730000000000000000000000000000000000005f82015250565b5f612b0b600e836122bd565b9150612b1682612ad7565b602082019050919050565b5f6020820190508181035f830152612b3881612aff565b9050919050565b5f819050919050565b5f612b62612b5d612b5884612b3f565b6124c8565b6123c8565b9050919050565b612b7281612b48565b82525050565b5f612b82826124f2565b9050919050565b612b9281612b78565b82525050565b5f60c082019050612bab5f83018961273e565b612bb8602083018861246c565b612bc56040830187612b69565b612bd26060830186612b69565b612bdf6080830185612b89565b612bec60a083018461246c565b979650505050505050565b5f81519050612c05816123d1565b92915050565b5f805f60608486031215612c2257612c21612366565b5b5f612c2f86828701612bf7565b9350506020612c4086828701612bf7565b9250506040612c5186828701612bf7565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612cb56026836122bd565b9150612cc082612c5b565b604082019050919050565b5f6020820190508181035f830152612ce281612ca9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612d436024836122bd565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd16022836122bd565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e5f6025836122bd565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612eed6023836122bd565b9150612ef882612e93565b604082019050919050565b5f6020820190508181035f830152612f1a81612ee1565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f7b6029836122bd565b9150612f8682612f21565b604082019050919050565b5f6020820190508181035f830152612fa881612f6f565b9050919050565b7f626f7420626c6f636b65640000000000000000000000000000000000000000005f82015250565b5f612fe3600b836122bd565b9150612fee82612faf565b602082019050919050565b5f6020820190508181035f83015261301081612fd7565b9050919050565b7f4f6e6c792077686974656c6973746564206164647265737365732063616e20745f8201527f72616e7366657220647572696e672077686974656c6973742070686173650000602082015250565b5f613071603e836122bd565b915061307c82613017565b604082019050919050565b5f6020820190508181035f83015261309e81613065565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6131256049836122bd565b9150613130826130a5565b606082019050919050565b5f6020820190508181035f83015261315281613119565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61318d6019836122bd565b915061319882613159565b602082019050919050565b5f6020820190508181035f8301526131ba81613181565b9050919050565b5f6131cb826123c8565b91506131d6836123c8565b92508282019050808211156131ee576131ed612848565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613228601a836122bd565b9150613233826131f4565b602082019050919050565b5f6020820190508181035f8301526132558161321c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132906020836122bd565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b5f815190506132d28161239e565b92915050565b5f602082840312156132ed576132ec612366565b5b5f6132fa848285016132c4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133358161238d565b82525050565b5f613346838361332c565b60208301905092915050565b5f602082019050919050565b5f61336882613303565b613372818561330d565b935061337d8361331d565b805f5b838110156133ad578151613394888261333b565b975061339f83613352565b925050600181019050613380565b5085935050505092915050565b5f60a0820190506133cd5f83018861246c565b6133da6020830187612b69565b81810360408301526133ec818661335e565b90506133fb606083018561273e565b613408608083018461246c565b9695505050505050565b5f61341c826123c8565b9150613427836123c8565b925082820390508181111561343f5761343e612848565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61347c826123c8565b9150613487836123c8565b92508261349757613496613445565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220398877621974bcae97a8dcee3a6565993fcd60cb94c0eed2021c9d93a59a991b64736f6c63430008140033

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.