ETH Price: $3,362.56 (+0.44%)

Token

An American who Loves Freedom (AALF)
 

Overview

Max Total Supply

1,000,000,000 AALF

Holders

254

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,361,678.711007371325237189 AALF

Value
$0.00
0x98d840b40d060c9805a5b81ed04133a193e0227f
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:
Aalf

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : Aalf.sol
// SPDX-License-Identifier: MIT

// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣲⣶⠒⠷⠶⠤⠴⠦⠤⠤⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣶⠚⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⢌⣛⠶⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢚⠟⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠱⡄⠙⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠖⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣀⠀⣀⣤⣧⠔⠛⠓⠲⠤⢄⣀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣄⣠⣤⣴⣾⣿⣿⣾⡗⠀⢀⣀⢤⠐⠠⠤⣉⠓⠦⣄⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠒⠶⠶⢾⣿⡿⠛⢻⣻⠛⢻⣿⣿⠟⣋⣺⣿⠏⠀⠴⠿⠹⠋⠀⠀⠀⠀⠈⠀⠨⠳⣄⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢐⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣤⠤⠄⠐⢾⣿⣝⠤⣀⢀⡠⣱⣿⣿⣿⣿⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀
// ⠀⠀⠀⠀⠀⠀⢠⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢉⣛⣺⣿⣾⣛⣽⣿⡟⠁⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀
// ⠀⠀⠀⠀⠀⠐⡟⠀⠀⠀⠀⡠⠖⠀⠀⠀⢀⡴⠃⠀⠀⠀⠀⠀⠀⡈⠉⢉⡽⠿⢛⡿⢛⠯⠭⣒⣚⣩⣭⣭⣤⡤⠭⠭⢭⣥⣀⣉⣑⣒⢵⡀⠀⠀⢸⡇
// ⠀⠀⠀⠀⠀⣰⠃⠀⢀⡔⠋⠀⠀⠀⣠⡴⠋⠀⠀⠀⠀⣠⣤⡴⠋⠀⠀⠀⠀⠀⠾⢶⣾⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠳⡀⠀⣸⠃
// ⠀⠀⠀⠀⢰⠟⢀⣴⠏⠀⡀⢀⣴⡿⠋⠀⠀⠀⢀⡴⠟⠋⠁⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣇⠔⠁⠀
// ⠀⠀⠀⠀⣞⣴⣿⠃⢠⣾⣴⣿⠋⠀⠀⠀⠀⠐⠋⠀⠀⠀⠀⠀⢐⣚⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠋⠁⠀⠀⠀
// ⠀⠀⠀⣸⣿⣿⣧⣶⣿⣿⣿⠗⠁⠀⡠⠂⠀⢀⠀⠀⠀⠀⠂⢉⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⡟⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢀⠼⢻⣿⣿⣿⣿⣿⣿⠁⢀⣴⠏⢀⣠⠞⠁⢀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠱⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⣠⣿⣿⣿⣿⣿⣿⣧⣾⡿⣡⣾⣿⠃⣠⡾⠁⠀⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠂⠀⢻⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠈⣽⣿⣿⣿⣿⣿⣿⡟⠉⣰⣿⡿⣡⣾⣿⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⢻⣶⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⣠⣿⣿⣿⣿⣿⣿⣿⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣱⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⢸⣾⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠐⠛⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢫⣿⠏⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⡄⠀⣿⣿⡏⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⣾⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣴⡿⢋⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣤⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠁⠀⡿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⠿⢿⣿⣿⣿⣿⣿⣿⣿⢿⡿⠁⣿⠏⠘⢿⣿⣿⣿⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠿⠋⣿⡿⠋⣸⠟⠁⠀⣾⣿⣿⣿⣿⣿⠟⠁⠈⠀⠀⠹⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠉⠀⠀⠰⠿⣿⣿⠿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡏⠀⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

// https://www.anamericanwholovesfreedom.com
// https://t.me/aalfcoin

pragma solidity ^0.8.23;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    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);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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 IUniswapV2Router02 {
    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 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 Aalf is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public feeWallet;

    uint256 public maxTx;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    uint256 public buyFee;
    uint256 public sellFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaxTx;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event feeWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("An American who Loves Freedom", unicode"AALF") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // mainnet
            );

        excludeFromMaxTx(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTx(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTx = totalSupply * 2 / 100; // 2% of total supply 
        maxWallet = totalSupply * 2 / 100; // 2% of total supply
        swapTokensAtAmount = (totalSupply * 25) / 10000; // 0.25% swap wallet

        buyFee = 40;
        sellFee = 40;

        feeWallet = address(msg.sender);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTx(owner(), true);
        excludeFromMaxTx(address(this), true);
        excludeFromMaxTx(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTx lower than 0.1%"
        );
        maxTx = newNum * (10**18);
    }

    function updatemaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTx(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedmaxTx[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _buyFee
    ) external onlyOwner {
        require(_buyFee <= 42, "Must keep fees at 42% or less");
        buyFee = _buyFee;
    }

    function updateSellFees(
        uint256 _sellFee
    ) external onlyOwner {
        require(_sellFee <= 42, "Must keep fees at 42% or less");
        sellFee = _sellFee;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateFeeWallet(address newWallet) external onlyOwner {
        emit feeWalletUpdated(newWallet, feeWallet);
        feeWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != owner() && 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;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedmaxTx[to]) {
                    require(amount <= maxTx, "Buy transfer amount exceeds the maxTx.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) {
                    require(amount <= maxTx, "Sell transfer amount exceeds the maxTx.");
                }
                else if (!_isExcludedmaxTx[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fee = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fee = amount.mul(sellFee).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fee = amount.mul(buyFee).div(100);
            }

            super._transfer(from, address(this), fee);

            amount -= fee;
        }

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

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

    function manualSwap(uint256 amount) external {
        require(_msgSender() == feeWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }    

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

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

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        ){}catch{}
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;

        (success, ) = address(feeWallet).call{value: ethBalance}("");
    }
}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601d81526020017f416e20416d65726963616e2077686f204c6f7665732046726565646f6d0000008152506040518060400160405280600481526020017f41414c46000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000cd2565b5080600490816200010d919062000cd2565b50505062000130620001246200051960201b60201c565b6200052160201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620005e760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000e23565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000e23565b6040518363ffffffff1660e01b8152600401620002af92919062000e66565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000e23565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e760201b60201c565b6200039f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d160201b60201c565b60006b033b2e3c9fd0803ce800000090506064600282620003c1919062000ec2565b620003cd919062000f3c565b6008819055506064600282620003e4919062000ec2565b620003f0919062000f3c565b600a8190555061271060198262000408919062000ec2565b62000414919062000f3c565b6009819055506028600e819055506028600f8190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048d6200047f6200077260201b60201c565b60016200079c60201b60201c565b620004a03060016200079c60201b60201c565b620004b561dead60016200079c60201b60201c565b620004d7620004c96200077260201b60201c565b6001620005e760201b60201c565b620004ea306001620005e760201b60201c565b620004ff61dead6001620005e760201b60201c565b620005113382620008d660201b60201c565b50506200110c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005f76200051960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200061d6200077260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000676576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066d9062000fd5565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007ac6200051960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007d26200077260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200082b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008229062000fd5565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008ca919062001014565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093f9062001081565b60405180910390fd5b6200095c6000838362000a4e60201b60201c565b8060026000828254620009709190620010a3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009c79190620010a3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a2e9190620010ef565b60405180910390a362000a4a6000838362000a5360201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ada57607f821691505b60208210810362000af05762000aef62000a92565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b1b565b62000b66868362000b1b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bb362000bad62000ba78462000b7e565b62000b88565b62000b7e565b9050919050565b6000819050919050565b62000bcf8362000b92565b62000be762000bde8262000bba565b84845462000b28565b825550505050565b600090565b62000bfe62000bef565b62000c0b81848462000bc4565b505050565b5b8181101562000c335762000c2760008262000bf4565b60018101905062000c11565b5050565b601f82111562000c825762000c4c8162000af6565b62000c578462000b0b565b8101602085101562000c67578190505b62000c7f62000c768562000b0b565b83018262000c10565b50505b505050565b600082821c905092915050565b600062000ca76000198460080262000c87565b1980831691505092915050565b600062000cc2838362000c94565b9150826002028217905092915050565b62000cdd8262000a58565b67ffffffffffffffff81111562000cf95762000cf862000a63565b5b62000d05825462000ac1565b62000d1282828562000c37565b600060209050601f83116001811462000d4a576000841562000d35578287015190505b62000d41858262000cb4565b86555062000db1565b601f19841662000d5a8662000af6565b60005b8281101562000d845784890151825560018201915060208501945060208101905062000d5d565b8683101562000da4578489015162000da0601f89168262000c94565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000deb8262000dbe565b9050919050565b62000dfd8162000dde565b811462000e0957600080fd5b50565b60008151905062000e1d8162000df2565b92915050565b60006020828403121562000e3c5762000e3b62000db9565b5b600062000e4c8482850162000e0c565b91505092915050565b62000e608162000dde565b82525050565b600060408201905062000e7d600083018562000e55565b62000e8c602083018462000e55565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ecf8262000b7e565b915062000edc8362000b7e565b925082820262000eec8162000b7e565b9150828204841483151762000f065762000f0562000e93565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f498262000b7e565b915062000f568362000b7e565b92508262000f695762000f6862000f0d565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fbd60208362000f74565b915062000fca8262000f85565b602082019050919050565b6000602082019050818103600083015262000ff08162000fae565b9050919050565b60008115159050919050565b6200100e8162000ff7565b82525050565b60006020820190506200102b600083018462001003565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001069601f8362000f74565b9150620010768262001031565b602082019050919050565b600060208201905081810360008301526200109c816200105a565b9050919050565b6000620010b08262000b7e565b9150620010bd8362000b7e565b9250828201905080821115620010d857620010d762000e93565b5b92915050565b620010e98162000b7e565b82525050565b6000602082019050620011066000830184620010de565b92915050565b6080516146e66200114460003960008181610b150152818161242b01528181612e3101528181612f120152612f3901526146e66000f3fe60806040526004361061026b5760003560e01c80638da5cb5b11610144578063c876d0b9116100b6578063e6819ba71161007a578063e6819ba714610953578063e884f26014610990578063eba4c333146109bb578063f25f4b56146109e4578063f2fde38b14610a0f578063f8b45b0514610a3857610272565b8063c876d0b91461085a578063d257b34f14610885578063d4c989d3146108c2578063dd62ed3e146108eb578063e2f456051461092857610272565b8063a9059cbb11610108578063a9059cbb1461073a578063b5cc50b714610777578063b62496f5146107a0578063b70143c9146107dd578063bbc0c74214610806578063c02466681461083157610272565b80638da5cb5b14610655578063924de9b71461068057806395d89b41146106a95780639a7a23d6146106d4578063a457c2d7146106fd57610272565b806349bd5a5e116101dd57806370a08231116101a157806370a082311461056b578063715018a6146105a857806371fc4688146105bf5780637437681e146105e8578063751039fc146106135780638a8c523c1461063e57610272565b806349bd5a5e146104845780634a62bb65146104af5780634fbee193146104da57806366718524146105175780636ddd17131461054057610272565b806323b872dd1161022f57806323b872dd1461035e57806327c8f8351461039b5780632b14ca56146103c6578063313ce567146103f1578063395093511461041c578063470624021461045957610272565b806306fdde0314610277578063095ea7b3146102a25780631694505e146102df57806318160ddd1461030a578063203e727e1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a63565b60405161029991906133e6565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906134a1565b610af5565b6040516102d691906134fc565b60405180910390f35b3480156102eb57600080fd5b506102f4610b13565b6040516103019190613576565b60405180910390f35b34801561031657600080fd5b5061031f610b37565b60405161032c91906135a0565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906135bb565b610b41565b005b34801561036a57600080fd5b50610385600480360381019061038091906135e8565b610c50565b60405161039291906134fc565b60405180910390f35b3480156103a757600080fd5b506103b0610d48565b6040516103bd919061364a565b60405180910390f35b3480156103d257600080fd5b506103db610d4e565b6040516103e891906135a0565b60405180910390f35b3480156103fd57600080fd5b50610406610d54565b6040516104139190613681565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906134a1565b610d5d565b60405161045091906134fc565b60405180910390f35b34801561046557600080fd5b5061046e610e09565b60405161047b91906135a0565b60405180910390f35b34801561049057600080fd5b50610499610e0f565b6040516104a6919061364a565b60405180910390f35b3480156104bb57600080fd5b506104c4610e35565b6040516104d191906134fc565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061369c565b610e48565b60405161050e91906134fc565b60405180910390f35b34801561052357600080fd5b5061053e6004803603810190610539919061369c565b610e9e565b005b34801561054c57600080fd5b50610555610fda565b60405161056291906134fc565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d919061369c565b610fed565b60405161059f91906135a0565b60405180910390f35b3480156105b457600080fd5b506105bd611035565b005b3480156105cb57600080fd5b506105e660048036038101906105e191906135bb565b6110bd565b005b3480156105f457600080fd5b506105fd611187565b60405161060a91906135a0565b60405180910390f35b34801561061f57600080fd5b5061062861118d565b60405161063591906134fc565b60405180910390f35b34801561064a57600080fd5b5061065361122d565b005b34801561066157600080fd5b5061066a6112e1565b604051610677919061364a565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a291906136f5565b61130b565b005b3480156106b557600080fd5b506106be6113a4565b6040516106cb91906133e6565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613722565b611436565b005b34801561070957600080fd5b50610724600480360381019061071f91906134a1565b611550565b60405161073191906134fc565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906134a1565b61163b565b60405161076e91906134fc565b60405180910390f35b34801561078357600080fd5b5061079e600480360381019061079991906135bb565b611659565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061369c565b611768565b6040516107d491906134fc565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff91906135bb565b611788565b005b34801561081257600080fd5b5061081b61184c565b60405161082891906134fc565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190613722565b61185f565b005b34801561086657600080fd5b5061086f611984565b60405161087c91906134fc565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906135bb565b611997565b6040516108b991906134fc565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190613722565b611aec565b005b3480156108f757600080fd5b50610912600480360381019061090d9190613762565b611bc3565b60405161091f91906135a0565b60405180910390f35b34801561093457600080fd5b5061093d611c4a565b60405161094a91906135a0565b60405180910390f35b34801561095f57600080fd5b5061097a6004803603810190610975919061369c565b611c50565b60405161098791906134fc565b60405180910390f35b34801561099c57600080fd5b506109a5611c70565b6040516109b291906134fc565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd91906135bb565b611d10565b005b3480156109f057600080fd5b506109f9611dda565b604051610a06919061364a565b60405180910390f35b348015610a1b57600080fd5b50610a366004803603810190610a31919061369c565b611e00565b005b348015610a4457600080fd5b50610a4d611ef7565b604051610a5a91906135a0565b60405180910390f35b606060038054610a72906137d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e906137d1565b8015610aeb5780601f10610ac057610100808354040283529160200191610aeb565b820191906000526020600020905b815481529060010190602001808311610ace57829003601f168201915b5050505050905090565b6000610b09610b02611efd565b8484611f05565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610b49611efd565b73ffffffffffffffffffffffffffffffffffffffff16610b676112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb49061384e565b60405180910390fd5b670de0b6b3a76400006103e86001610bd3610b37565b610bdd919061389d565b610be7919061390e565b610bf1919061390e565b811015610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a9061398b565b60405180910390fd5b670de0b6b3a764000081610c47919061389d565b60088190555050565b6000610c5d8484846120ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca8611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613a1d565b60405180910390fd5b610d3c85610d34611efd565b858403611f05565b60019150509392505050565b61dead81565b600f5481565b60006012905090565b6000610dff610d6a611efd565b848460016000610d78611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfa9190613a3d565b611f05565b6001905092915050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ea6611efd565b73ffffffffffffffffffffffffffffffffffffffff16610ec46112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f119061384e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5deb5ef622431f0df5a39b72dd556892f68ba42aa0f3aaf0800e166ce866492860405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61103d611efd565b73ffffffffffffffffffffffffffffffffffffffff1661105b6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a89061384e565b60405180910390fd5b6110bb6000612c2b565b565b6110c5611efd565b73ffffffffffffffffffffffffffffffffffffffff166110e36112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061384e565b60405180910390fd5b602a81111561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613abd565b60405180910390fd5b80600e8190555050565b60085481565b6000611197611efd565b73ffffffffffffffffffffffffffffffffffffffff166111b56112e1565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112029061384e565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611235611efd565b73ffffffffffffffffffffffffffffffffffffffff166112536112e1565b73ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a09061384e565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611313611efd565b73ffffffffffffffffffffffffffffffffffffffff166113316112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e9061384e565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113b3906137d1565b80601f01602080910402602001604051908101604052809291908181526020018280546113df906137d1565b801561142c5780601f106114015761010080835404028352916020019161142c565b820191906000526020600020905b81548152906001019060200180831161140f57829003601f168201915b5050505050905090565b61143e611efd565b73ffffffffffffffffffffffffffffffffffffffff1661145c6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061384e565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990613b4f565b60405180910390fd5b61154c8282612cf1565b5050565b6000806001600061155f611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613be1565b60405180910390fd5b611630611627611efd565b85858403611f05565b600191505092915050565b600061164f611648611efd565b84846120ce565b6001905092915050565b611661611efd565b73ffffffffffffffffffffffffffffffffffffffff1661167f6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061384e565b60405180910390fd5b670de0b6b3a76400006103e860056116eb610b37565b6116f5919061389d565b6116ff919061390e565b611709919061390e565b81101561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613c73565b60405180910390fd5b670de0b6b3a76400008161175f919061389d565b600a8190555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c9611efd565b73ffffffffffffffffffffffffffffffffffffffff16146117e957600080fd5b6117f230610fed565b81111580156118015750600081115b611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790613cdf565b60405180910390fd5b61184981612d92565b50565b600b60019054906101000a900460ff1681565b611867611efd565b73ffffffffffffffffffffffffffffffffffffffff166118856112e1565b73ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061384e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161197891906134fc565b60405180910390a25050565b600d60009054906101000a900460ff1681565b60006119a1611efd565b73ffffffffffffffffffffffffffffffffffffffff166119bf6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c9061384e565b60405180910390fd5b620186a06001611a23610b37565b611a2d919061389d565b611a37919061390e565b821015611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613d71565b60405180910390fd5b6103e86005611a86610b37565b611a90919061389d565b611a9a919061390e565b821115611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390613e03565b60405180910390fd5b8160098190555060019050919050565b611af4611efd565b73ffffffffffffffffffffffffffffffffffffffff16611b126112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f9061384e565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000611c7a611efd565b73ffffffffffffffffffffffffffffffffffffffff16611c986112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce59061384e565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611d18611efd565b73ffffffffffffffffffffffffffffffffffffffff16611d366112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061384e565b60405180910390fd5b602a811115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613abd565b60405180910390fd5b80600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e08611efd565b73ffffffffffffffffffffffffffffffffffffffff16611e266112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061384e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613e95565b60405180910390fd5b611ef481612c2b565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613f27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613fb9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c191906135a0565b60405180910390a3505050565b600081036120e7576120e283836000612fc9565b612c26565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bc906140dd565b60405180910390fd5b600b60009054906101000a900460ff161561288a576121e26112e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561225057506122206112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122895750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122c3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122dc5750600660149054906101000a900460ff16155b1561288957600b60019054906101000a900460ff166123d657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123965750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90614149565b60405180910390fd5b5b600d60009054906101000a900460ff16156125a0576123f36112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561247a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d45750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561259f5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255190614201565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126435750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ea5760085481111561268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614293565b60405180910390fd5b600a5461269983610fed565b826126a49190613a3d565b11156126e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dc906142ff565b60405180910390fd5b612888565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561278d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127dc576008548111156127d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ce90614391565b60405180910390fd5b612887565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661288657600a5461283983610fed565b826128449190613a3d565b1115612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c906142ff565b60405180910390fd5b5b5b5b5b5b600061289530610fed565b9050600060095482101590508080156128ba5750600b60029054906101000a900460ff165b80156128d35750600660149054906101000a900460ff16155b80156129295750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561297f5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129d55750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a19576001600660146101000a81548160ff0219169083151502179055506129fd613248565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612acf5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ad957600090505b60008115612c1657601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b3c57506000600f54115b15612b7057612b696064612b5b600f548861332090919063ffffffff16565b61333690919063ffffffff16565b9050612bfc565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bcb57506000600e54115b15612bfb57612bf86064612bea600e548861332090919063ffffffff16565b61333690919063ffffffff16565b90505b5b612c07873083612fc9565b8085612c1391906143b1565b94505b612c21878787612fc9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115612daf57612dae6143e5565b5b604051908082528060200260200182016040528015612ddd5781602001602082028036833780820191505090505b5090503081600081518110612df557612df4614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe9190614458565b81600181518110612ed257612ed1614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f37307f000000000000000000000000000000000000000000000000000000000000000084611f05565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f9995949392919061457e565b600060405180830381600087803b158015612fb357600080fd5b505af1925050508015612fc4575060015b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309e906140dd565b60405180910390fd5b6130b283838361334c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312f9061464a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131cb9190613a3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161322f91906135a0565b60405180910390a3613242848484613351565b50505050565b600061325330610fed565b905060006014600954613266919061389d565b82111561327f57601460095461327c919061389d565b91505b61328882612d92565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132d39061469b565b60006040518083038185875af1925050503d8060008114613310576040519150601f19603f3d011682016040523d82523d6000602084013e613315565b606091505b505080925050505050565b6000818361332e919061389d565b905092915050565b60008183613344919061390e565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613390578082015181840152602081019050613375565b60008484015250505050565b6000601f19601f8301169050919050565b60006133b882613356565b6133c28185613361565b93506133d2818560208601613372565b6133db8161339c565b840191505092915050565b6000602082019050818103600083015261340081846133ad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134388261340d565b9050919050565b6134488161342d565b811461345357600080fd5b50565b6000813590506134658161343f565b92915050565b6000819050919050565b61347e8161346b565b811461348957600080fd5b50565b60008135905061349b81613475565b92915050565b600080604083850312156134b8576134b7613408565b5b60006134c685828601613456565b92505060206134d78582860161348c565b9150509250929050565b60008115159050919050565b6134f6816134e1565b82525050565b600060208201905061351160008301846134ed565b92915050565b6000819050919050565b600061353c6135376135328461340d565b613517565b61340d565b9050919050565b600061354e82613521565b9050919050565b600061356082613543565b9050919050565b61357081613555565b82525050565b600060208201905061358b6000830184613567565b92915050565b61359a8161346b565b82525050565b60006020820190506135b56000830184613591565b92915050565b6000602082840312156135d1576135d0613408565b5b60006135df8482850161348c565b91505092915050565b60008060006060848603121561360157613600613408565b5b600061360f86828701613456565b935050602061362086828701613456565b92505060406136318682870161348c565b9150509250925092565b6136448161342d565b82525050565b600060208201905061365f600083018461363b565b92915050565b600060ff82169050919050565b61367b81613665565b82525050565b60006020820190506136966000830184613672565b92915050565b6000602082840312156136b2576136b1613408565b5b60006136c084828501613456565b91505092915050565b6136d2816134e1565b81146136dd57600080fd5b50565b6000813590506136ef816136c9565b92915050565b60006020828403121561370b5761370a613408565b5b6000613719848285016136e0565b91505092915050565b6000806040838503121561373957613738613408565b5b600061374785828601613456565b9250506020613758858286016136e0565b9150509250929050565b6000806040838503121561377957613778613408565b5b600061378785828601613456565b925050602061379885828601613456565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137e957607f821691505b6020821081036137fc576137fb6137a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613838602083613361565b915061384382613802565b602082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a88261346b565b91506138b38361346b565b92508282026138c18161346b565b915082820484148315176138d8576138d761386e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139198261346b565b91506139248361346b565b925082613934576139336138df565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3125600082015250565b6000613975602083613361565b91506139808261393f565b602082019050919050565b600060208201905081810360008301526139a481613968565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a07602883613361565b9150613a12826139ab565b604082019050919050565b60006020820190508181036000830152613a36816139fa565b9050919050565b6000613a488261346b565b9150613a538361346b565b9250828201905080821115613a6b57613a6a61386e565b5b92915050565b7f4d757374206b656570206665657320617420343225206f72206c657373000000600082015250565b6000613aa7601d83613361565b9150613ab282613a71565b602082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613b39603983613361565b9150613b4482613add565b604082019050919050565b60006020820190508181036000830152613b6881613b2c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bcb602583613361565b9150613bd682613b6f565b604082019050919050565b60006020820190508181036000830152613bfa81613bbe565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c5d602483613361565b9150613c6882613c01565b604082019050919050565b60006020820190508181036000830152613c8c81613c50565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000613cc9600c83613361565b9150613cd482613c93565b602082019050919050565b60006020820190508181036000830152613cf881613cbc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613d5b603583613361565b9150613d6682613cff565b604082019050919050565b60006020820190508181036000830152613d8a81613d4e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613ded603483613361565b9150613df882613d91565b604082019050919050565b60006020820190508181036000830152613e1c81613de0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e7f602683613361565b9150613e8a82613e23565b604082019050919050565b60006020820190508181036000830152613eae81613e72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f11602483613361565b9150613f1c82613eb5565b604082019050919050565b60006020820190508181036000830152613f4081613f04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fa3602283613361565b9150613fae82613f47565b604082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614035602583613361565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006140c7602383613361565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614133601683613361565b915061413e826140fd565b602082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006141eb604983613361565b91506141f682614169565b606082019050919050565b6000602082019050818103600083015261421a816141de565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b600061427d602683613361565b915061428882614221565b604082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006142e9601383613361565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b600061437b602783613361565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b60006143bc8261346b565b91506143c78361346b565b92508282039050818111156143df576143de61386e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144528161343f565b92915050565b60006020828403121561446e5761446d613408565b5b600061447c84828501614443565b91505092915050565b6000819050919050565b60006144aa6144a56144a084614485565b613517565b61346b565b9050919050565b6144ba8161448f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f58161342d565b82525050565b600061450783836144ec565b60208301905092915050565b6000602082019050919050565b600061452b826144c0565b61453581856144cb565b9350614540836144dc565b8060005b8381101561457157815161455888826144fb565b975061456383614513565b925050600181019050614544565b5085935050505092915050565b600060a0820190506145936000830188613591565b6145a060208301876144b1565b81810360408301526145b28186614520565b90506145c1606083018561363b565b6145ce6080830184613591565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614634602683613361565b915061463f826145d8565b604082019050919050565b6000602082019050818103600083015261466381614627565b9050919050565b600081905092915050565b50565b600061468560008361466a565b915061469082614675565b600082019050919050565b60006146a682614678565b915081905091905056fea26469706673582212207d51b527c25ec260592f42405c7c4d53048b491dcd05d44f056e1f5d7e32f18e64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80638da5cb5b11610144578063c876d0b9116100b6578063e6819ba71161007a578063e6819ba714610953578063e884f26014610990578063eba4c333146109bb578063f25f4b56146109e4578063f2fde38b14610a0f578063f8b45b0514610a3857610272565b8063c876d0b91461085a578063d257b34f14610885578063d4c989d3146108c2578063dd62ed3e146108eb578063e2f456051461092857610272565b8063a9059cbb11610108578063a9059cbb1461073a578063b5cc50b714610777578063b62496f5146107a0578063b70143c9146107dd578063bbc0c74214610806578063c02466681461083157610272565b80638da5cb5b14610655578063924de9b71461068057806395d89b41146106a95780639a7a23d6146106d4578063a457c2d7146106fd57610272565b806349bd5a5e116101dd57806370a08231116101a157806370a082311461056b578063715018a6146105a857806371fc4688146105bf5780637437681e146105e8578063751039fc146106135780638a8c523c1461063e57610272565b806349bd5a5e146104845780634a62bb65146104af5780634fbee193146104da57806366718524146105175780636ddd17131461054057610272565b806323b872dd1161022f57806323b872dd1461035e57806327c8f8351461039b5780632b14ca56146103c6578063313ce567146103f1578063395093511461041c578063470624021461045957610272565b806306fdde0314610277578063095ea7b3146102a25780631694505e146102df57806318160ddd1461030a578063203e727e1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a63565b60405161029991906133e6565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906134a1565b610af5565b6040516102d691906134fc565b60405180910390f35b3480156102eb57600080fd5b506102f4610b13565b6040516103019190613576565b60405180910390f35b34801561031657600080fd5b5061031f610b37565b60405161032c91906135a0565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906135bb565b610b41565b005b34801561036a57600080fd5b50610385600480360381019061038091906135e8565b610c50565b60405161039291906134fc565b60405180910390f35b3480156103a757600080fd5b506103b0610d48565b6040516103bd919061364a565b60405180910390f35b3480156103d257600080fd5b506103db610d4e565b6040516103e891906135a0565b60405180910390f35b3480156103fd57600080fd5b50610406610d54565b6040516104139190613681565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906134a1565b610d5d565b60405161045091906134fc565b60405180910390f35b34801561046557600080fd5b5061046e610e09565b60405161047b91906135a0565b60405180910390f35b34801561049057600080fd5b50610499610e0f565b6040516104a6919061364a565b60405180910390f35b3480156104bb57600080fd5b506104c4610e35565b6040516104d191906134fc565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061369c565b610e48565b60405161050e91906134fc565b60405180910390f35b34801561052357600080fd5b5061053e6004803603810190610539919061369c565b610e9e565b005b34801561054c57600080fd5b50610555610fda565b60405161056291906134fc565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d919061369c565b610fed565b60405161059f91906135a0565b60405180910390f35b3480156105b457600080fd5b506105bd611035565b005b3480156105cb57600080fd5b506105e660048036038101906105e191906135bb565b6110bd565b005b3480156105f457600080fd5b506105fd611187565b60405161060a91906135a0565b60405180910390f35b34801561061f57600080fd5b5061062861118d565b60405161063591906134fc565b60405180910390f35b34801561064a57600080fd5b5061065361122d565b005b34801561066157600080fd5b5061066a6112e1565b604051610677919061364a565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a291906136f5565b61130b565b005b3480156106b557600080fd5b506106be6113a4565b6040516106cb91906133e6565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613722565b611436565b005b34801561070957600080fd5b50610724600480360381019061071f91906134a1565b611550565b60405161073191906134fc565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906134a1565b61163b565b60405161076e91906134fc565b60405180910390f35b34801561078357600080fd5b5061079e600480360381019061079991906135bb565b611659565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061369c565b611768565b6040516107d491906134fc565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff91906135bb565b611788565b005b34801561081257600080fd5b5061081b61184c565b60405161082891906134fc565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190613722565b61185f565b005b34801561086657600080fd5b5061086f611984565b60405161087c91906134fc565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906135bb565b611997565b6040516108b991906134fc565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190613722565b611aec565b005b3480156108f757600080fd5b50610912600480360381019061090d9190613762565b611bc3565b60405161091f91906135a0565b60405180910390f35b34801561093457600080fd5b5061093d611c4a565b60405161094a91906135a0565b60405180910390f35b34801561095f57600080fd5b5061097a6004803603810190610975919061369c565b611c50565b60405161098791906134fc565b60405180910390f35b34801561099c57600080fd5b506109a5611c70565b6040516109b291906134fc565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd91906135bb565b611d10565b005b3480156109f057600080fd5b506109f9611dda565b604051610a06919061364a565b60405180910390f35b348015610a1b57600080fd5b50610a366004803603810190610a31919061369c565b611e00565b005b348015610a4457600080fd5b50610a4d611ef7565b604051610a5a91906135a0565b60405180910390f35b606060038054610a72906137d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e906137d1565b8015610aeb5780601f10610ac057610100808354040283529160200191610aeb565b820191906000526020600020905b815481529060010190602001808311610ace57829003601f168201915b5050505050905090565b6000610b09610b02611efd565b8484611f05565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610b49611efd565b73ffffffffffffffffffffffffffffffffffffffff16610b676112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb49061384e565b60405180910390fd5b670de0b6b3a76400006103e86001610bd3610b37565b610bdd919061389d565b610be7919061390e565b610bf1919061390e565b811015610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a9061398b565b60405180910390fd5b670de0b6b3a764000081610c47919061389d565b60088190555050565b6000610c5d8484846120ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca8611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613a1d565b60405180910390fd5b610d3c85610d34611efd565b858403611f05565b60019150509392505050565b61dead81565b600f5481565b60006012905090565b6000610dff610d6a611efd565b848460016000610d78611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfa9190613a3d565b611f05565b6001905092915050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ea6611efd565b73ffffffffffffffffffffffffffffffffffffffff16610ec46112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f119061384e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5deb5ef622431f0df5a39b72dd556892f68ba42aa0f3aaf0800e166ce866492860405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61103d611efd565b73ffffffffffffffffffffffffffffffffffffffff1661105b6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a89061384e565b60405180910390fd5b6110bb6000612c2b565b565b6110c5611efd565b73ffffffffffffffffffffffffffffffffffffffff166110e36112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061384e565b60405180910390fd5b602a81111561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613abd565b60405180910390fd5b80600e8190555050565b60085481565b6000611197611efd565b73ffffffffffffffffffffffffffffffffffffffff166111b56112e1565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112029061384e565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611235611efd565b73ffffffffffffffffffffffffffffffffffffffff166112536112e1565b73ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a09061384e565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611313611efd565b73ffffffffffffffffffffffffffffffffffffffff166113316112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e9061384e565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113b3906137d1565b80601f01602080910402602001604051908101604052809291908181526020018280546113df906137d1565b801561142c5780601f106114015761010080835404028352916020019161142c565b820191906000526020600020905b81548152906001019060200180831161140f57829003601f168201915b5050505050905090565b61143e611efd565b73ffffffffffffffffffffffffffffffffffffffff1661145c6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061384e565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990613b4f565b60405180910390fd5b61154c8282612cf1565b5050565b6000806001600061155f611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613be1565b60405180910390fd5b611630611627611efd565b85858403611f05565b600191505092915050565b600061164f611648611efd565b84846120ce565b6001905092915050565b611661611efd565b73ffffffffffffffffffffffffffffffffffffffff1661167f6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061384e565b60405180910390fd5b670de0b6b3a76400006103e860056116eb610b37565b6116f5919061389d565b6116ff919061390e565b611709919061390e565b81101561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613c73565b60405180910390fd5b670de0b6b3a76400008161175f919061389d565b600a8190555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c9611efd565b73ffffffffffffffffffffffffffffffffffffffff16146117e957600080fd5b6117f230610fed565b81111580156118015750600081115b611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790613cdf565b60405180910390fd5b61184981612d92565b50565b600b60019054906101000a900460ff1681565b611867611efd565b73ffffffffffffffffffffffffffffffffffffffff166118856112e1565b73ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061384e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161197891906134fc565b60405180910390a25050565b600d60009054906101000a900460ff1681565b60006119a1611efd565b73ffffffffffffffffffffffffffffffffffffffff166119bf6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c9061384e565b60405180910390fd5b620186a06001611a23610b37565b611a2d919061389d565b611a37919061390e565b821015611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613d71565b60405180910390fd5b6103e86005611a86610b37565b611a90919061389d565b611a9a919061390e565b821115611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390613e03565b60405180910390fd5b8160098190555060019050919050565b611af4611efd565b73ffffffffffffffffffffffffffffffffffffffff16611b126112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f9061384e565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000611c7a611efd565b73ffffffffffffffffffffffffffffffffffffffff16611c986112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce59061384e565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611d18611efd565b73ffffffffffffffffffffffffffffffffffffffff16611d366112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061384e565b60405180910390fd5b602a811115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613abd565b60405180910390fd5b80600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e08611efd565b73ffffffffffffffffffffffffffffffffffffffff16611e266112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061384e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613e95565b60405180910390fd5b611ef481612c2b565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613f27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613fb9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c191906135a0565b60405180910390a3505050565b600081036120e7576120e283836000612fc9565b612c26565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bc906140dd565b60405180910390fd5b600b60009054906101000a900460ff161561288a576121e26112e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561225057506122206112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122895750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122c3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122dc5750600660149054906101000a900460ff16155b1561288957600b60019054906101000a900460ff166123d657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123965750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90614149565b60405180910390fd5b5b600d60009054906101000a900460ff16156125a0576123f36112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561247a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d45750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561259f5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255190614201565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126435750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ea5760085481111561268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614293565b60405180910390fd5b600a5461269983610fed565b826126a49190613a3d565b11156126e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dc906142ff565b60405180910390fd5b612888565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561278d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127dc576008548111156127d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ce90614391565b60405180910390fd5b612887565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661288657600a5461283983610fed565b826128449190613a3d565b1115612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c906142ff565b60405180910390fd5b5b5b5b5b5b600061289530610fed565b9050600060095482101590508080156128ba5750600b60029054906101000a900460ff165b80156128d35750600660149054906101000a900460ff16155b80156129295750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561297f5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129d55750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a19576001600660146101000a81548160ff0219169083151502179055506129fd613248565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612acf5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ad957600090505b60008115612c1657601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b3c57506000600f54115b15612b7057612b696064612b5b600f548861332090919063ffffffff16565b61333690919063ffffffff16565b9050612bfc565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bcb57506000600e54115b15612bfb57612bf86064612bea600e548861332090919063ffffffff16565b61333690919063ffffffff16565b90505b5b612c07873083612fc9565b8085612c1391906143b1565b94505b612c21878787612fc9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115612daf57612dae6143e5565b5b604051908082528060200260200182016040528015612ddd5781602001602082028036833780820191505090505b5090503081600081518110612df557612df4614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe9190614458565b81600181518110612ed257612ed1614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f37307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f05565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f9995949392919061457e565b600060405180830381600087803b158015612fb357600080fd5b505af1925050508015612fc4575060015b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309e906140dd565b60405180910390fd5b6130b283838361334c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312f9061464a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131cb9190613a3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161322f91906135a0565b60405180910390a3613242848484613351565b50505050565b600061325330610fed565b905060006014600954613266919061389d565b82111561327f57601460095461327c919061389d565b91505b61328882612d92565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132d39061469b565b60006040518083038185875af1925050503d8060008114613310576040519150601f19603f3d011682016040523d82523d6000602084013e613315565b606091505b505080925050505050565b6000818361332e919061389d565b905092915050565b60008183613344919061390e565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613390578082015181840152602081019050613375565b60008484015250505050565b6000601f19601f8301169050919050565b60006133b882613356565b6133c28185613361565b93506133d2818560208601613372565b6133db8161339c565b840191505092915050565b6000602082019050818103600083015261340081846133ad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134388261340d565b9050919050565b6134488161342d565b811461345357600080fd5b50565b6000813590506134658161343f565b92915050565b6000819050919050565b61347e8161346b565b811461348957600080fd5b50565b60008135905061349b81613475565b92915050565b600080604083850312156134b8576134b7613408565b5b60006134c685828601613456565b92505060206134d78582860161348c565b9150509250929050565b60008115159050919050565b6134f6816134e1565b82525050565b600060208201905061351160008301846134ed565b92915050565b6000819050919050565b600061353c6135376135328461340d565b613517565b61340d565b9050919050565b600061354e82613521565b9050919050565b600061356082613543565b9050919050565b61357081613555565b82525050565b600060208201905061358b6000830184613567565b92915050565b61359a8161346b565b82525050565b60006020820190506135b56000830184613591565b92915050565b6000602082840312156135d1576135d0613408565b5b60006135df8482850161348c565b91505092915050565b60008060006060848603121561360157613600613408565b5b600061360f86828701613456565b935050602061362086828701613456565b92505060406136318682870161348c565b9150509250925092565b6136448161342d565b82525050565b600060208201905061365f600083018461363b565b92915050565b600060ff82169050919050565b61367b81613665565b82525050565b60006020820190506136966000830184613672565b92915050565b6000602082840312156136b2576136b1613408565b5b60006136c084828501613456565b91505092915050565b6136d2816134e1565b81146136dd57600080fd5b50565b6000813590506136ef816136c9565b92915050565b60006020828403121561370b5761370a613408565b5b6000613719848285016136e0565b91505092915050565b6000806040838503121561373957613738613408565b5b600061374785828601613456565b9250506020613758858286016136e0565b9150509250929050565b6000806040838503121561377957613778613408565b5b600061378785828601613456565b925050602061379885828601613456565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137e957607f821691505b6020821081036137fc576137fb6137a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613838602083613361565b915061384382613802565b602082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a88261346b565b91506138b38361346b565b92508282026138c18161346b565b915082820484148315176138d8576138d761386e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139198261346b565b91506139248361346b565b925082613934576139336138df565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3125600082015250565b6000613975602083613361565b91506139808261393f565b602082019050919050565b600060208201905081810360008301526139a481613968565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a07602883613361565b9150613a12826139ab565b604082019050919050565b60006020820190508181036000830152613a36816139fa565b9050919050565b6000613a488261346b565b9150613a538361346b565b9250828201905080821115613a6b57613a6a61386e565b5b92915050565b7f4d757374206b656570206665657320617420343225206f72206c657373000000600082015250565b6000613aa7601d83613361565b9150613ab282613a71565b602082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613b39603983613361565b9150613b4482613add565b604082019050919050565b60006020820190508181036000830152613b6881613b2c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bcb602583613361565b9150613bd682613b6f565b604082019050919050565b60006020820190508181036000830152613bfa81613bbe565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c5d602483613361565b9150613c6882613c01565b604082019050919050565b60006020820190508181036000830152613c8c81613c50565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000613cc9600c83613361565b9150613cd482613c93565b602082019050919050565b60006020820190508181036000830152613cf881613cbc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613d5b603583613361565b9150613d6682613cff565b604082019050919050565b60006020820190508181036000830152613d8a81613d4e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613ded603483613361565b9150613df882613d91565b604082019050919050565b60006020820190508181036000830152613e1c81613de0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e7f602683613361565b9150613e8a82613e23565b604082019050919050565b60006020820190508181036000830152613eae81613e72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f11602483613361565b9150613f1c82613eb5565b604082019050919050565b60006020820190508181036000830152613f4081613f04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fa3602283613361565b9150613fae82613f47565b604082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614035602583613361565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006140c7602383613361565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614133601683613361565b915061413e826140fd565b602082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006141eb604983613361565b91506141f682614169565b606082019050919050565b6000602082019050818103600083015261421a816141de565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b600061427d602683613361565b915061428882614221565b604082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006142e9601383613361565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b600061437b602783613361565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b60006143bc8261346b565b91506143c78361346b565b92508282039050818111156143df576143de61386e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144528161343f565b92915050565b60006020828403121561446e5761446d613408565b5b600061447c84828501614443565b91505092915050565b6000819050919050565b60006144aa6144a56144a084614485565b613517565b61346b565b9050919050565b6144ba8161448f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f58161342d565b82525050565b600061450783836144ec565b60208301905092915050565b6000602082019050919050565b600061452b826144c0565b61453581856144cb565b9350614540836144dc565b8060005b8381101561457157815161455888826144fb565b975061456383614513565b925050600181019050614544565b5085935050505092915050565b600060a0820190506145936000830188613591565b6145a060208301876144b1565b81810360408301526145b28186614520565b90506145c1606083018561363b565b6145ce6080830184613591565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614634602683613361565b915061463f826145d8565b604082019050919050565b6000602082019050818103600083015261466381614627565b9050919050565b600081905092915050565b50565b600061468560008361466a565b915061469082614675565b600082019050919050565b60006146a682614678565b915081905091905056fea26469706673582212207d51b527c25ec260592f42405c7c4d53048b491dcd05d44f056e1f5d7e32f18e64736f6c63430008170033

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.