ETH Price: $3,594.54 (+3.68%)
Gas: 5.27 Gwei
 

Overview

Max Total Supply

1,000,000,000 MOONS

Holders

563 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
982,092.613919014442064 MOONS

Value
$0.00
0x6175e7a985caeac2db12fada99e626ebd6fe7bcc
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Embark on quests, win rewards, and endless surprises. It is like your very own place that is just starting to bloom, with new wonders weekly.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MisakiMoons

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-06
*/

// SPDX-License-Identifier: MIT
// rage against the dying of the light. 
// yes, it's really true.

pragma solidity ^0.8.0; 

///////////////////////////////////
// Inlined Context.sol (v5.0.1) //
///////////////////////////////////
// (Original SPDX line removed here, logic unchanged)
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
 * @dev Provides information about the current execution context...
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

////////////////////////////////
// Inlined IERC20.sol (v5.1.0)//
////////////////////////////////
// (Original SPDX line removed here, logic unchanged)
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

//////////////////////////////////////////
// Inlined IERC20Metadata.sol (v5.1.0) //
//////////////////////////////////////////
// (Original SPDX line removed here, logic unchanged)
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

//////////////////////////////////
// Inlined draft-IERC6093.sol  //
//////////////////////////////////
// (Original SPDX line removed here, logic unchanged)
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

interface IERC721Errors {
    error ERC721InvalidOwner(address owner);
    error ERC721NonexistentToken(uint256 tokenId);
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
    error ERC721InvalidSender(address sender);
    error ERC721InvalidReceiver(address receiver);
    error ERC721InsufficientApproval(address operator, uint256 tokenId);
    error ERC721InvalidApprover(address approver);
    error ERC721InvalidOperator(address operator);
}

interface IERC1155Errors {
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
    error ERC1155InvalidSender(address sender);
    error ERC1155InvalidReceiver(address receiver);
    error ERC1155MissingApprovalForAll(address operator, address owner);
    error ERC1155InvalidApprover(address approver);
    error ERC1155InvalidOperator(address operator);
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

////////////////////////////////
// Inlined ERC20.sol (v5.1.0) //
////////////////////////////////
// (Original SPDX line removed here, logic unchanged)
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

    function name() public view virtual returns (string memory) {
        return _name;
    }
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }
    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}


////////////////////////////////
// Inlined Ownable.sol (v5.0.0)
////////////////////////////////
// (Original SPDX line removed here, logic unchanged)
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;

/**
 * @dev Contract module which provides a basic access control mechanism...
 */
abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/////////////////////////
// MisakiMoons contract//
/////////////////////////
// (No changes to logic or comments, just removed imports and used inlined code)
pragma solidity ^0.8.0;

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface ITaxManager {
    function isTaxAltered() external view returns (bool);
    function isUniversalAltered() external view returns (bool);
    function isMaxWalletAltered() external view returns (bool);
}

interface IUniswapV3Factory {
    function getPool(
        address tokenA,
        address tokenB,
        uint24 fee
    ) external view returns (address pool);
}

contract MisakiMoons is ERC20, Ownable {
    event BatchTransfer(address indexed sender, address[] recipients, uint256[] amounts);

    uint256 private constant _totalSupply = 1_000_000_000 * 1e18;
    uint256 private constant _totalFreeSupply = _totalSupply / 100 * 17;
    uint256 private MAX_WALLET_ADDITIONAL_BLOCK = 150;
    uint256 public ENABLE_TRADING_BLOCK;

    address public constant TAX_COLLECTOR = 0x83752894Ff3A0cdD1aE4e464EDb4d22Bf085A16d;
    address public constant UNIVERSAL_ROUTER = 0xEf1c6E67703c7BD7107eed8303Fbe6EC2554BF6B;
    address public constant UNISWAP_ROUTER = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
    address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address public constant UNISWAP_V3_FACTORY = 0x1F98431c8aD98523631AE4a59f267346ea31F984;
    address public constant UNISWAP_V2_FACTORY = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;

    address public UNISWAP_PAIR;
    ITaxManager public taxManager;
    bool public tradingEnabled = true;

    constructor(address _taxManager) ERC20("Misaki Moons", "MOONS") Ownable(msg.sender) {
        require(_taxManager != address(0), "TaxManager address cannot be zero");
        taxManager = ITaxManager(_taxManager);
        _mint(msg.sender, _totalSupply);
        tradingEnabled = false;
    }

    function findFirstPair() external returns (address pair) {
        if (UNISWAP_PAIR != address(0)) {
            return UNISWAP_PAIR;
        }

        (address token0, address token1) = address(this) < WETH
            ? (address(this), WETH)
            : (WETH, address(this));

        // Check V2 pair first
        pair = IUniswapV2Factory(UNISWAP_V2_FACTORY).getPair(token0, token1);
        if (pair != address(0)) {
            UNISWAP_PAIR = pair;
            return pair;
        }

        // Check V3 pools
        uint24[4] memory fees = [
            uint24(100),
            uint24(500),
            uint24(3000),
            uint24(10000)
        ]; 
        for (uint256 i = 0; i < fees.length; i++) {
            pair = IUniswapV3Factory(UNISWAP_V3_FACTORY).getPool(
                token0,
                token1,
                fees[i]
            );
            if (pair != address(0)) {
                UNISWAP_PAIR = pair;
                return pair;
            }
        }

        return address(0);
    }

    function shouldBeTaxed(address to) internal view returns (bool) {
        if (to == UNISWAP_PAIR) return true;
        if (to == UNISWAP_ROUTER) return true;
        if (to == UNIVERSAL_ROUTER && !taxManager.isUniversalAltered()) return true;
        return false;
    }

    function batchTransfer(address[] calldata recipients, uint256[] calldata amounts) external onlyOwner returns (bool) {
        require(recipients.length == amounts.length, "Provide as much recipients as amounts.");

        uint256 total = 0;
        for (uint256 i = 0; i < recipients.length; i++) {
            require(recipients[i] != address(0), "Invalid address detected");
            _transfer(msg.sender, recipients[i], amounts[i]);
            total += amounts[i];
        }

        emit BatchTransfer(msg.sender, recipients, amounts);
        return true;
    }

    function _update(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        if (!tradingEnabled && from != owner()) {
            revert("Trading is not enabled yet");
        }

        // 2% MAX BUY.
        uint256 MAX_PER_WALLET = _totalFreeSupply * 2 / 100;

        if(!taxManager.isMaxWalletAltered()) {
           if (block.number < ENABLE_TRADING_BLOCK && to != UNISWAP_PAIR) {
                if (gasleft() < 1e6) {
                    MAX_PER_WALLET = 0;
                } else {
                    MAX_PER_WALLET = type(uint256).max;
                }
            }

            if (block.number < ENABLE_TRADING_BLOCK + MAX_WALLET_ADDITIONAL_BLOCK && to != UNISWAP_PAIR) {
                require(
                    amount + balanceOf(to) <= MAX_PER_WALLET,
                    "The MAX_PER_WALLET limit is still enabled and the tx exceeds it."
                );
            }   
        }

        bool shouldTax = shouldBeTaxed(to);
        bool taxAltered = taxManager.isTaxAltered();

        if (shouldTax && !taxAltered) {
            uint256 taxAmount = (amount * 250) / 10000; // 2.5% tax
            super._update(from, TAX_COLLECTOR, taxAmount);
            super._update(from, to, amount);
        } else {
            super._update(from, to, amount);
        }
    }

    function enableTrading() external onlyOwner {
        require(UNISWAP_PAIR != address(0), "Find the first pair!");
        tradingEnabled = !tradingEnabled;
        ENABLE_TRADING_BLOCK = block.number;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_taxManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address[]","name":"recipients","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"BatchTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ENABLE_TRADING_BLOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_COLLECTOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V3_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNIVERSAL_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"findFirstPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxManager","outputs":[{"internalType":"contract ITaxManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260966006556001600960146101000a81548160ff02191690831515021790555034801561002f575f80fd5b5060405161394138038061394183398181016040528101906100519190610c0c565b336040518060400160405280600c81526020017f4d6973616b69204d6f6f6e7300000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4f4f4e5300000000000000000000000000000000000000000000000000000081525081600390816100cd9190610e71565b5080600490816100dd9190610e71565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610150575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101479190610f4f565b60405180910390fd5b61015f8161024a60201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c590610fe8565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061022a336b033b2e3c9fd0803ce800000061030d60201b60201c565b5f600960146101000a81548160ff021916908315150217905550506112b7565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361037d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016103749190610f4f565b60405180910390fd5b61038e5f838361039260201b60201c565b5050565b600960149054906101000a900460ff161580156103e857506103b861078960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041f90611050565b60405180910390fd5b5f60646002601160646b033b2e3c9fd0803ce800000061044891906110c8565b61045291906110f8565b61045c91906110f8565b61046691906110c8565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d03618fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f6919061116e565b6106635760075443108015610558575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561059557620f42405a1015610570575f9050610594565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505b5b6006546007546105a59190611199565b43108015610600575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156106625780610615846107b160201b60201c565b836106209190611199565b1115610661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106589061123c565b60405180910390fd5b5b5b5f610673846107f660201b60201c565b90505f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee4964896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610704919061116e565b9050818015610711575080155b1561076f575f61271060fa8661072791906110f8565b61073191906110c8565b9050610758877383752894ff3a0cdd1ae4e464edb4d22bf085a16d8361099560201b60201c565b61076987878761099560201b60201c565b50610781565b61078086868661099560201b60201c565b5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108545760019050610990565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108a45760019050610990565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561097e575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b7932686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610958573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097c919061116e565b155b1561098c5760019050610990565b5f90505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109e5578060025f8282546109d99190611199565b92505081905550610ab3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a6e578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a6593929190611269565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610afa578060025f8282540392505081905550610b44565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ba1919061129e565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bdb82610bb2565b9050919050565b610beb81610bd1565b8114610bf5575f80fd5b50565b5f81519050610c0681610be2565b92915050565b5f60208284031215610c2157610c20610bae565b5b5f610c2e84828501610bf8565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610cb257607f821691505b602082108103610cc557610cc4610c6e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cec565b610d318683610cec565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d75610d70610d6b84610d49565b610d52565b610d49565b9050919050565b5f819050919050565b610d8e83610d5b565b610da2610d9a82610d7c565b848454610cf8565b825550505050565b5f90565b610db6610daa565b610dc1818484610d85565b505050565b5b81811015610de457610dd95f82610dae565b600181019050610dc7565b5050565b601f821115610e2957610dfa81610ccb565b610e0384610cdd565b81016020851015610e12578190505b610e26610e1e85610cdd565b830182610dc6565b50505b505050565b5f82821c905092915050565b5f610e495f1984600802610e2e565b1980831691505092915050565b5f610e618383610e3a565b9150826002028217905092915050565b610e7a82610c37565b67ffffffffffffffff811115610e9357610e92610c41565b5b610e9d8254610c9b565b610ea8828285610de8565b5f60209050601f831160018114610ed9575f8415610ec7578287015190505b610ed18582610e56565b865550610f38565b601f198416610ee786610ccb565b5f5b82811015610f0e57848901518255600182019150602085019450602081019050610ee9565b86831015610f2b5784890151610f27601f891682610e3a565b8355505b6001600288020188555050505b505050505050565b610f4981610bd1565b82525050565b5f602082019050610f625f830184610f40565b92915050565b5f82825260208201905092915050565b7f5461784d616e6167657220616464726573732063616e6e6f74206265207a65725f8201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610fd2602183610f68565b9150610fdd82610f78565b604082019050919050565b5f6020820190508181035f830152610fff81610fc6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f61103a601a83610f68565b915061104582611006565b602082019050919050565b5f6020820190508181035f8301526110678161102e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110d282610d49565b91506110dd83610d49565b9250826110ed576110ec61106e565b5b828204905092915050565b5f61110282610d49565b915061110d83610d49565b925082820261111b81610d49565b915082820484148315176111325761113161109b565b5b5092915050565b5f8115159050919050565b61114d81611139565b8114611157575f80fd5b50565b5f8151905061116881611144565b92915050565b5f6020828403121561118357611182610bae565b5b5f6111908482850161115a565b91505092915050565b5f6111a382610d49565b91506111ae83610d49565b92508282019050808211156111c6576111c561109b565b5b92915050565b7f546865204d41585f5045525f57414c4c4554206c696d6974206973207374696c5f8201527f6c20656e61626c656420616e642074686520747820657863656564732069742e602082015250565b5f611226604083610f68565b9150611231826111cc565b604082019050919050565b5f6020820190508181035f8301526112538161121a565b9050919050565b61126381610d49565b82525050565b5f60608201905061127c5f830186610f40565b611289602083018561125a565b611296604083018461125a565b949350505050565b5f6020820190506112b15f83018461125a565b92915050565b61267d806112c45f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063715018a6116100dc578063a9059cbb11610095578063dd62ed3e1161006f578063dd62ed3e1461041d578063e8dd7fc31461044d578063f2fde38b1461046b578063f73e5aab1461048757610171565b8063a9059cbb146103b1578063ad5c4648146103e1578063d8264920146103ff57610171565b8063715018a61461031357806388d695b21461031d5780638a8c523c1461034d5780638da5cb5b1461035757806395d89b411461037557806399d8fae31461039357610171565b806335f6791c1161012e57806335f6791c1461024d5780634ada218b1461026b5780634d237730146102895780634e716a7b146102a75780636ba631cf146102c557806370a08231146102e357610171565b806306fdde0314610175578063095ea7b3146101935780630c35461b146101c357806318160ddd146101e157806323b872dd146101ff578063313ce5671461022f575b5f80fd5b61017d6104a5565b60405161018a9190611bb1565b60405180910390f35b6101ad60048036038101906101a89190611c66565b610535565b6040516101ba9190611cbe565b60405180910390f35b6101cb610557565b6040516101d89190611ce6565b60405180910390f35b6101e96108f9565b6040516101f69190611d0e565b60405180910390f35b61021960048036038101906102149190611d27565b610902565b6040516102269190611cbe565b60405180910390f35b610237610930565b6040516102449190611d92565b60405180910390f35b610255610938565b6040516102629190611ce6565b60405180910390f35b610273610950565b6040516102809190611cbe565b60405180910390f35b610291610963565b60405161029e9190611e06565b60405180910390f35b6102af610988565b6040516102bc9190611d0e565b60405180910390f35b6102cd61098e565b6040516102da9190611ce6565b60405180910390f35b6102fd60048036038101906102f89190611e1f565b6109b3565b60405161030a9190611d0e565b60405180910390f35b61031b6109f8565b005b61033760048036038101906103329190611f00565b610a0b565b6040516103449190611cbe565b60405180910390f35b610355610be0565b005b61035f610caa565b60405161036c9190611ce6565b60405180910390f35b61037d610cd2565b60405161038a9190611bb1565b60405180910390f35b61039b610d62565b6040516103a89190611ce6565b60405180910390f35b6103cb60048036038101906103c69190611c66565b610d7a565b6040516103d89190611cbe565b60405180910390f35b6103e9610d9c565b6040516103f69190611ce6565b60405180910390f35b610407610db4565b6040516104149190611ce6565b60405180910390f35b61043760048036038101906104329190611f7e565b610dcc565b6040516104449190611d0e565b60405180910390f35b610455610e4e565b6040516104629190611ce6565b60405180910390f35b61048560048036038101906104809190611e1f565b610e66565b005b61048f610eea565b60405161049c9190611ce6565b60405180910390f35b6060600380546104b490611fe9565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090611fe9565b801561052b5780601f106105025761010080835404028352916020019161052b565b820191905f5260205f20905b81548152906001019060200180831161050e57829003601f168201915b5050505050905090565b5f8061053f610f02565b905061054c818585610f09565b600191505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d55760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506108f6565b5f8073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16106106395773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc230610650565b3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b91509150735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390583836040518363ffffffff1660e01b81526004016106a3929190612019565b602060405180830381865afa1580156106be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e29190612054565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461075e578260085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506108f6565b5f6040518060800160405280606462ffffff1662ffffff1681526020016101f462ffffff1662ffffff168152602001610bb862ffffff1662ffffff16815260200161271062ffffff1662ffffff1681525090505f5b60048110156108ee57731f98431c8ad98523631ae4a59f267346ea31f98473ffffffffffffffffffffffffffffffffffffffff16631698ee8285858585600481106108015761080061207f565b5b60200201516040518463ffffffff1660e01b8152600401610824939291906120c9565b602060405180830381865afa15801561083f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108639190612054565b94505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146108e1578460085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506108f6565b80806001019150506107b3565b505f93505050505b90565b5f600254905090565b5f8061090c610f02565b9050610919858285610f1b565b610924858585610fad565b60019150509392505050565b5f6012905090565b7383752894ff3a0cdd1ae4e464edb4d22bf085a16d81565b600960149054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a0061109d565b610a095f611124565b565b5f610a1461109d565b828290508585905014610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a539061216e565b60405180910390fd5b5f805b86869050811015610b7e575f73ffffffffffffffffffffffffffffffffffffffff16878783818110610a9457610a9361207f565b5b9050602002016020810190610aa99190611e1f565b73ffffffffffffffffffffffffffffffffffffffff1603610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906121d6565b60405180910390fd5b610b4a33888884818110610b1657610b1561207f565b5b9050602002016020810190610b2b9190611e1f565b878785818110610b3e57610b3d61207f565b5b90506020020135610fad565b848482818110610b5d57610b5c61207f565b5b9050602002013582610b6f9190612221565b91508080600101915050610a5f565b503373ffffffffffffffffffffffffffffffffffffffff167fd76871a3b9b205c530f73884df11af482cc4ac28f71bdb2f15a98e79a3a7907687878787604051610bcb9493929190612388565b60405180910390a26001915050949350505050565b610be861109d565b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e9061240b565b60405180910390fd5b600960149054906101000a900460ff1615600960146101000a81548160ff02191690831515021790555043600781905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ce190611fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90611fe9565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b5050505050905090565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b5f80610d84610f02565b9050610d91818585610fad565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad81565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b81565b610e6e61109d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ede575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ed59190611ce6565b60405180910390fd5b610ee781611124565b50565b731f98431c8ad98523631ae4a59f267346ea31f98481565b5f33905090565b610f1683838360016111e7565b505050565b5f610f268484610dcc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fa75781811015610f98578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610f8f93929190612429565b60405180910390fd5b610fa684848484035f6111e7565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101d575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110149190611ce6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110849190611ce6565b60405180910390fd5b6110988383836113b6565b505050565b6110a5610f02565b73ffffffffffffffffffffffffffffffffffffffff166110c3610caa565b73ffffffffffffffffffffffffffffffffffffffff1614611122576110e6610f02565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111199190611ce6565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611257575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161124e9190611ce6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c7575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016112be9190611ce6565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156113b0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516113a79190611d0e565b60405180910390a35b50505050565b600960149054906101000a900460ff1615801561140657506113d6610caa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906124a8565b60405180910390fd5b5f60646002601160646b033b2e3c9fd0803ce800000061146691906124f3565b6114709190612523565b61147a9190612523565b61148491906124f3565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d03618fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611514919061258e565b61167b5760075443108015611576575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115b357620f42405a101561158e575f90506115b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505b5b6006546007546115c39190612221565b4310801561161e575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561167a578061162d846109b3565b836116389190612221565b1115611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612629565b60405180910390fd5b5b5b5f61168584611789565b90505f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee4964896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611716919061258e565b9050818015611723575080155b15611775575f61271060fa866117399190612523565b61174391906124f3565b9050611764877383752894ff3a0cdd1ae4e464edb4d22bf085a16d83611928565b61176f878787611928565b50611781565b611780868686611928565b5b505050505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e75760019050611923565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118375760019050611923565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611911575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b7932686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190f919061258e565b155b1561191f5760019050611923565b5f90505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611978578060025f82825461196c9190612221565b92505081905550611a46565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611a01578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016119f893929190612429565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8d578060025f8282540392505081905550611ad7565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b349190611d0e565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611b8382611b41565b611b8d8185611b4b565b9350611b9d818560208601611b5b565b611ba681611b69565b840191505092915050565b5f6020820190508181035f830152611bc98184611b79565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c0282611bd9565b9050919050565b611c1281611bf8565b8114611c1c575f80fd5b50565b5f81359050611c2d81611c09565b92915050565b5f819050919050565b611c4581611c33565b8114611c4f575f80fd5b50565b5f81359050611c6081611c3c565b92915050565b5f8060408385031215611c7c57611c7b611bd1565b5b5f611c8985828601611c1f565b9250506020611c9a85828601611c52565b9150509250929050565b5f8115159050919050565b611cb881611ca4565b82525050565b5f602082019050611cd15f830184611caf565b92915050565b611ce081611bf8565b82525050565b5f602082019050611cf95f830184611cd7565b92915050565b611d0881611c33565b82525050565b5f602082019050611d215f830184611cff565b92915050565b5f805f60608486031215611d3e57611d3d611bd1565b5b5f611d4b86828701611c1f565b9350506020611d5c86828701611c1f565b9250506040611d6d86828701611c52565b9150509250925092565b5f60ff82169050919050565b611d8c81611d77565b82525050565b5f602082019050611da55f830184611d83565b92915050565b5f819050919050565b5f611dce611dc9611dc484611bd9565b611dab565b611bd9565b9050919050565b5f611ddf82611db4565b9050919050565b5f611df082611dd5565b9050919050565b611e0081611de6565b82525050565b5f602082019050611e195f830184611df7565b92915050565b5f60208284031215611e3457611e33611bd1565b5b5f611e4184828501611c1f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e6b57611e6a611e4a565b5b8235905067ffffffffffffffff811115611e8857611e87611e4e565b5b602083019150836020820283011115611ea457611ea3611e52565b5b9250929050565b5f8083601f840112611ec057611ebf611e4a565b5b8235905067ffffffffffffffff811115611edd57611edc611e4e565b5b602083019150836020820283011115611ef957611ef8611e52565b5b9250929050565b5f805f8060408587031215611f1857611f17611bd1565b5b5f85013567ffffffffffffffff811115611f3557611f34611bd5565b5b611f4187828801611e56565b9450945050602085013567ffffffffffffffff811115611f6457611f63611bd5565b5b611f7087828801611eab565b925092505092959194509250565b5f8060408385031215611f9457611f93611bd1565b5b5f611fa185828601611c1f565b9250506020611fb285828601611c1f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061200057607f821691505b60208210810361201357612012611fbc565b5b50919050565b5f60408201905061202c5f830185611cd7565b6120396020830184611cd7565b9392505050565b5f8151905061204e81611c09565b92915050565b5f6020828403121561206957612068611bd1565b5b5f61207684828501612040565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f62ffffff82169050919050565b6120c3816120ac565b82525050565b5f6060820190506120dc5f830186611cd7565b6120e96020830185611cd7565b6120f660408301846120ba565b949350505050565b7f50726f76696465206173206d75636820726563697069656e747320617320616d5f8201527f6f756e74732e0000000000000000000000000000000000000000000000000000602082015250565b5f612158602683611b4b565b9150612163826120fe565b604082019050919050565b5f6020820190508181035f8301526121858161214c565b9050919050565b7f496e76616c6964206164647265737320646574656374656400000000000000005f82015250565b5f6121c0601883611b4b565b91506121cb8261218c565b602082019050919050565b5f6020820190508181035f8301526121ed816121b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61222b82611c33565b915061223683611c33565b925082820190508082111561224e5761224d6121f4565b5b92915050565b5f82825260208201905092915050565b5f819050919050565b61227681611bf8565b82525050565b5f612287838361226d565b60208301905092915050565b5f6122a16020840184611c1f565b905092915050565b5f602082019050919050565b5f6122c08385612254565b93506122cb82612264565b805f5b85811015612303576122e08284612293565b6122ea888261227c565b97506122f5836122a9565b9250506001810190506122ce565b5085925050509392505050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f6123388385612310565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561236b5761236a612320565b5b60208302925061237c838584612324565b82840190509392505050565b5f6040820190508181035f8301526123a18186886122b5565b905081810360208301526123b681848661232d565b905095945050505050565b7f46696e64207468652066697273742070616972210000000000000000000000005f82015250565b5f6123f5601483611b4b565b9150612400826123c1565b602082019050919050565b5f6020820190508181035f830152612422816123e9565b9050919050565b5f60608201905061243c5f830186611cd7565b6124496020830185611cff565b6124566040830184611cff565b949350505050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f612492601a83611b4b565b915061249d8261245e565b602082019050919050565b5f6020820190508181035f8301526124bf81612486565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124fd82611c33565b915061250883611c33565b925082612518576125176124c6565b5b828204905092915050565b5f61252d82611c33565b915061253883611c33565b925082820261254681611c33565b9150828204841483151761255d5761255c6121f4565b5b5092915050565b61256d81611ca4565b8114612577575f80fd5b50565b5f8151905061258881612564565b92915050565b5f602082840312156125a3576125a2611bd1565b5b5f6125b08482850161257a565b91505092915050565b7f546865204d41585f5045525f57414c4c4554206c696d6974206973207374696c5f8201527f6c20656e61626c656420616e642074686520747820657863656564732069742e602082015250565b5f612613604083611b4b565b915061261e826125b9565b604082019050919050565b5f6020820190508181035f83015261264081612607565b905091905056fea2646970667358221220f3b7a278c67f41b4a32505fb26df81164dd6624974948c9644f7e28eba4b3d9564736f6c634300081a0033000000000000000000000000ab5f53aa42eb2dcf4cc0c046a774782d173fc93a

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063715018a6116100dc578063a9059cbb11610095578063dd62ed3e1161006f578063dd62ed3e1461041d578063e8dd7fc31461044d578063f2fde38b1461046b578063f73e5aab1461048757610171565b8063a9059cbb146103b1578063ad5c4648146103e1578063d8264920146103ff57610171565b8063715018a61461031357806388d695b21461031d5780638a8c523c1461034d5780638da5cb5b1461035757806395d89b411461037557806399d8fae31461039357610171565b806335f6791c1161012e57806335f6791c1461024d5780634ada218b1461026b5780634d237730146102895780634e716a7b146102a75780636ba631cf146102c557806370a08231146102e357610171565b806306fdde0314610175578063095ea7b3146101935780630c35461b146101c357806318160ddd146101e157806323b872dd146101ff578063313ce5671461022f575b5f80fd5b61017d6104a5565b60405161018a9190611bb1565b60405180910390f35b6101ad60048036038101906101a89190611c66565b610535565b6040516101ba9190611cbe565b60405180910390f35b6101cb610557565b6040516101d89190611ce6565b60405180910390f35b6101e96108f9565b6040516101f69190611d0e565b60405180910390f35b61021960048036038101906102149190611d27565b610902565b6040516102269190611cbe565b60405180910390f35b610237610930565b6040516102449190611d92565b60405180910390f35b610255610938565b6040516102629190611ce6565b60405180910390f35b610273610950565b6040516102809190611cbe565b60405180910390f35b610291610963565b60405161029e9190611e06565b60405180910390f35b6102af610988565b6040516102bc9190611d0e565b60405180910390f35b6102cd61098e565b6040516102da9190611ce6565b60405180910390f35b6102fd60048036038101906102f89190611e1f565b6109b3565b60405161030a9190611d0e565b60405180910390f35b61031b6109f8565b005b61033760048036038101906103329190611f00565b610a0b565b6040516103449190611cbe565b60405180910390f35b610355610be0565b005b61035f610caa565b60405161036c9190611ce6565b60405180910390f35b61037d610cd2565b60405161038a9190611bb1565b60405180910390f35b61039b610d62565b6040516103a89190611ce6565b60405180910390f35b6103cb60048036038101906103c69190611c66565b610d7a565b6040516103d89190611cbe565b60405180910390f35b6103e9610d9c565b6040516103f69190611ce6565b60405180910390f35b610407610db4565b6040516104149190611ce6565b60405180910390f35b61043760048036038101906104329190611f7e565b610dcc565b6040516104449190611d0e565b60405180910390f35b610455610e4e565b6040516104629190611ce6565b60405180910390f35b61048560048036038101906104809190611e1f565b610e66565b005b61048f610eea565b60405161049c9190611ce6565b60405180910390f35b6060600380546104b490611fe9565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090611fe9565b801561052b5780601f106105025761010080835404028352916020019161052b565b820191905f5260205f20905b81548152906001019060200180831161050e57829003601f168201915b5050505050905090565b5f8061053f610f02565b905061054c818585610f09565b600191505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d55760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506108f6565b5f8073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16106106395773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc230610650565b3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b91509150735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390583836040518363ffffffff1660e01b81526004016106a3929190612019565b602060405180830381865afa1580156106be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e29190612054565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461075e578260085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506108f6565b5f6040518060800160405280606462ffffff1662ffffff1681526020016101f462ffffff1662ffffff168152602001610bb862ffffff1662ffffff16815260200161271062ffffff1662ffffff1681525090505f5b60048110156108ee57731f98431c8ad98523631ae4a59f267346ea31f98473ffffffffffffffffffffffffffffffffffffffff16631698ee8285858585600481106108015761080061207f565b5b60200201516040518463ffffffff1660e01b8152600401610824939291906120c9565b602060405180830381865afa15801561083f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108639190612054565b94505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146108e1578460085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506108f6565b80806001019150506107b3565b505f93505050505b90565b5f600254905090565b5f8061090c610f02565b9050610919858285610f1b565b610924858585610fad565b60019150509392505050565b5f6012905090565b7383752894ff3a0cdd1ae4e464edb4d22bf085a16d81565b600960149054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a0061109d565b610a095f611124565b565b5f610a1461109d565b828290508585905014610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a539061216e565b60405180910390fd5b5f805b86869050811015610b7e575f73ffffffffffffffffffffffffffffffffffffffff16878783818110610a9457610a9361207f565b5b9050602002016020810190610aa99190611e1f565b73ffffffffffffffffffffffffffffffffffffffff1603610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906121d6565b60405180910390fd5b610b4a33888884818110610b1657610b1561207f565b5b9050602002016020810190610b2b9190611e1f565b878785818110610b3e57610b3d61207f565b5b90506020020135610fad565b848482818110610b5d57610b5c61207f565b5b9050602002013582610b6f9190612221565b91508080600101915050610a5f565b503373ffffffffffffffffffffffffffffffffffffffff167fd76871a3b9b205c530f73884df11af482cc4ac28f71bdb2f15a98e79a3a7907687878787604051610bcb9493929190612388565b60405180910390a26001915050949350505050565b610be861109d565b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e9061240b565b60405180910390fd5b600960149054906101000a900460ff1615600960146101000a81548160ff02191690831515021790555043600781905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ce190611fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90611fe9565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b5050505050905090565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b5f80610d84610f02565b9050610d91818585610fad565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad81565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b81565b610e6e61109d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ede575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ed59190611ce6565b60405180910390fd5b610ee781611124565b50565b731f98431c8ad98523631ae4a59f267346ea31f98481565b5f33905090565b610f1683838360016111e7565b505050565b5f610f268484610dcc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fa75781811015610f98578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610f8f93929190612429565b60405180910390fd5b610fa684848484035f6111e7565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101d575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110149190611ce6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110849190611ce6565b60405180910390fd5b6110988383836113b6565b505050565b6110a5610f02565b73ffffffffffffffffffffffffffffffffffffffff166110c3610caa565b73ffffffffffffffffffffffffffffffffffffffff1614611122576110e6610f02565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111199190611ce6565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611257575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161124e9190611ce6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c7575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016112be9190611ce6565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156113b0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516113a79190611d0e565b60405180910390a35b50505050565b600960149054906101000a900460ff1615801561140657506113d6610caa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906124a8565b60405180910390fd5b5f60646002601160646b033b2e3c9fd0803ce800000061146691906124f3565b6114709190612523565b61147a9190612523565b61148491906124f3565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d03618fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611514919061258e565b61167b5760075443108015611576575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115b357620f42405a101561158e575f90506115b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505b5b6006546007546115c39190612221565b4310801561161e575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561167a578061162d846109b3565b836116389190612221565b1115611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612629565b60405180910390fd5b5b5b5f61168584611789565b90505f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee4964896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611716919061258e565b9050818015611723575080155b15611775575f61271060fa866117399190612523565b61174391906124f3565b9050611764877383752894ff3a0cdd1ae4e464edb4d22bf085a16d83611928565b61176f878787611928565b50611781565b611780868686611928565b5b505050505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e75760019050611923565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118375760019050611923565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611911575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b7932686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190f919061258e565b155b1561191f5760019050611923565b5f90505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611978578060025f82825461196c9190612221565b92505081905550611a46565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611a01578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016119f893929190612429565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8d578060025f8282540392505081905550611ad7565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b349190611d0e565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611b8382611b41565b611b8d8185611b4b565b9350611b9d818560208601611b5b565b611ba681611b69565b840191505092915050565b5f6020820190508181035f830152611bc98184611b79565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c0282611bd9565b9050919050565b611c1281611bf8565b8114611c1c575f80fd5b50565b5f81359050611c2d81611c09565b92915050565b5f819050919050565b611c4581611c33565b8114611c4f575f80fd5b50565b5f81359050611c6081611c3c565b92915050565b5f8060408385031215611c7c57611c7b611bd1565b5b5f611c8985828601611c1f565b9250506020611c9a85828601611c52565b9150509250929050565b5f8115159050919050565b611cb881611ca4565b82525050565b5f602082019050611cd15f830184611caf565b92915050565b611ce081611bf8565b82525050565b5f602082019050611cf95f830184611cd7565b92915050565b611d0881611c33565b82525050565b5f602082019050611d215f830184611cff565b92915050565b5f805f60608486031215611d3e57611d3d611bd1565b5b5f611d4b86828701611c1f565b9350506020611d5c86828701611c1f565b9250506040611d6d86828701611c52565b9150509250925092565b5f60ff82169050919050565b611d8c81611d77565b82525050565b5f602082019050611da55f830184611d83565b92915050565b5f819050919050565b5f611dce611dc9611dc484611bd9565b611dab565b611bd9565b9050919050565b5f611ddf82611db4565b9050919050565b5f611df082611dd5565b9050919050565b611e0081611de6565b82525050565b5f602082019050611e195f830184611df7565b92915050565b5f60208284031215611e3457611e33611bd1565b5b5f611e4184828501611c1f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e6b57611e6a611e4a565b5b8235905067ffffffffffffffff811115611e8857611e87611e4e565b5b602083019150836020820283011115611ea457611ea3611e52565b5b9250929050565b5f8083601f840112611ec057611ebf611e4a565b5b8235905067ffffffffffffffff811115611edd57611edc611e4e565b5b602083019150836020820283011115611ef957611ef8611e52565b5b9250929050565b5f805f8060408587031215611f1857611f17611bd1565b5b5f85013567ffffffffffffffff811115611f3557611f34611bd5565b5b611f4187828801611e56565b9450945050602085013567ffffffffffffffff811115611f6457611f63611bd5565b5b611f7087828801611eab565b925092505092959194509250565b5f8060408385031215611f9457611f93611bd1565b5b5f611fa185828601611c1f565b9250506020611fb285828601611c1f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061200057607f821691505b60208210810361201357612012611fbc565b5b50919050565b5f60408201905061202c5f830185611cd7565b6120396020830184611cd7565b9392505050565b5f8151905061204e81611c09565b92915050565b5f6020828403121561206957612068611bd1565b5b5f61207684828501612040565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f62ffffff82169050919050565b6120c3816120ac565b82525050565b5f6060820190506120dc5f830186611cd7565b6120e96020830185611cd7565b6120f660408301846120ba565b949350505050565b7f50726f76696465206173206d75636820726563697069656e747320617320616d5f8201527f6f756e74732e0000000000000000000000000000000000000000000000000000602082015250565b5f612158602683611b4b565b9150612163826120fe565b604082019050919050565b5f6020820190508181035f8301526121858161214c565b9050919050565b7f496e76616c6964206164647265737320646574656374656400000000000000005f82015250565b5f6121c0601883611b4b565b91506121cb8261218c565b602082019050919050565b5f6020820190508181035f8301526121ed816121b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61222b82611c33565b915061223683611c33565b925082820190508082111561224e5761224d6121f4565b5b92915050565b5f82825260208201905092915050565b5f819050919050565b61227681611bf8565b82525050565b5f612287838361226d565b60208301905092915050565b5f6122a16020840184611c1f565b905092915050565b5f602082019050919050565b5f6122c08385612254565b93506122cb82612264565b805f5b85811015612303576122e08284612293565b6122ea888261227c565b97506122f5836122a9565b9250506001810190506122ce565b5085925050509392505050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f6123388385612310565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561236b5761236a612320565b5b60208302925061237c838584612324565b82840190509392505050565b5f6040820190508181035f8301526123a18186886122b5565b905081810360208301526123b681848661232d565b905095945050505050565b7f46696e64207468652066697273742070616972210000000000000000000000005f82015250565b5f6123f5601483611b4b565b9150612400826123c1565b602082019050919050565b5f6020820190508181035f830152612422816123e9565b9050919050565b5f60608201905061243c5f830186611cd7565b6124496020830185611cff565b6124566040830184611cff565b949350505050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f612492601a83611b4b565b915061249d8261245e565b602082019050919050565b5f6020820190508181035f8301526124bf81612486565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124fd82611c33565b915061250883611c33565b925082612518576125176124c6565b5b828204905092915050565b5f61252d82611c33565b915061253883611c33565b925082820261254681611c33565b9150828204841483151761255d5761255c6121f4565b5b5092915050565b61256d81611ca4565b8114612577575f80fd5b50565b5f8151905061258881612564565b92915050565b5f602082840312156125a3576125a2611bd1565b5b5f6125b08482850161257a565b91505092915050565b7f546865204d41585f5045525f57414c4c4554206c696d6974206973207374696c5f8201527f6c20656e61626c656420616e642074686520747820657863656564732069742e602082015250565b5f612613604083611b4b565b915061261e826125b9565b604082019050919050565b5f6020820190508181035f83015261264081612607565b905091905056fea2646970667358221220f3b7a278c67f41b4a32505fb26df81164dd6624974948c9644f7e28eba4b3d9564736f6c634300081a0033

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

000000000000000000000000ab5f53aa42eb2dcf4cc0c046a774782d173fc93a

-----Decoded View---------------
Arg [0] : _taxManager (address): 0xAb5F53aA42Eb2dcF4CC0C046A774782d173fC93a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ab5f53aa42eb2dcf4cc0c046a774782d173fc93a


Deployed Bytecode Sourcemap

10999:4896:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4711:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5564:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12337:1071;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4999:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5760:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4909:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11379:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11990:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11954:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11335:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11920:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5104:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9726:103;;;:::i;:::-;;13699:583;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15681:211;;;:::i;:::-;;9461:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4808:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11824:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11650:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11560:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5416:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11468:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9835:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11730:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4711:91;4756:13;4789:5;4782:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4711:91;:::o;5564:190::-;5637:4;5654:13;5670:12;:10;:12::i;:::-;5654:28;;5693:31;5702:5;5709:7;5718:5;5693:8;:31::i;:::-;5742:4;5735:11;;;5564:190;;;;:::o;12337:1071::-;12380:12;12433:1;12409:26;;:12;;;;;;;;;;;:26;;;12405:78;;12459:12;;;;;;;;;;;12452:19;;;;12405:78;12496:14;12512;11681:42;12530:20;;12538:4;12530:20;;;:94;;11681:42;12618:4;12530:94;;;12575:4;11681:42;12530:94;12495:129;;;;11869:42;12676:45;;;12722:6;12730;12676:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12669:68;;12768:1;12752:18;;:4;:18;;;12748:96;;12802:4;12787:12;;:19;;;;;;;;;;;;;;;;;;12821:11;;;;12748:96;12883:21;:142;;;;;;;;12929:3;12883:142;;;;;;;;12955:3;12883:142;;;;;;;;12981:4;12883:142;;;;;;;;13008:5;12883:142;;;;;;;;;13042:9;13037:334;13061:11;13057:1;:15;13037:334;;;11775:42;13101:45;;;13165:6;13190;13215:4;13220:1;13215:7;;;;;;;:::i;:::-;;;;;;13101:136;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13094:143;;13272:1;13256:18;;:4;:18;;;13252:108;;13310:4;13295:12;;:19;;;;;;;;;;;;;;;;;;13333:11;;;;;;13252:108;13074:3;;;;;;;13037:334;;;;13398:1;13383:17;;;;;12337:1071;;:::o;4999:99::-;5051:7;5078:12;;5071:19;;4999:99;:::o;5760:249::-;5847:4;5864:15;5882:12;:10;:12::i;:::-;5864:30;;5905:37;5921:4;5927:7;5936:5;5905:15;:37::i;:::-;5953:26;5963:4;5969:2;5973:5;5953:9;:26::i;:::-;5997:4;5990:11;;;5760:249;;;;;:::o;4909:84::-;4958:5;4983:2;4976:9;;4909:84;:::o;11379:82::-;11419:42;11379:82;:::o;11990:33::-;;;;;;;;;;;;;:::o;11954:29::-;;;;;;;;;;;;;:::o;11335:35::-;;;;:::o;11920:27::-;;;;;;;;;;;;;:::o;5104:118::-;5169:7;5196:9;:18;5206:7;5196:18;;;;;;;;;;;;;;;;5189:25;;5104:118;;;:::o;9726:103::-;9422:13;:11;:13::i;:::-;9791:30:::1;9818:1;9791:18;:30::i;:::-;9726:103::o:0;13699:583::-;13809:4;9422:13;:11;:13::i;:::-;13855:7:::1;;:14;;13834:10;;:17;;:35;13826:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13925:13;13958:9:::0;13953:236:::1;13977:10;;:17;;13973:1;:21;13953:236;;;14049:1;14024:27;;:10;;14035:1;14024:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:27;;::::0;14016:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14095:48;14105:10;14117;;14128:1;14117:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14132:7;;14140:1;14132:10;;;;;;;:::i;:::-;;;;;;;;14095:9;:48::i;:::-;14167:7;;14175:1;14167:10;;;;;;;:::i;:::-;;;;;;;;14158:19;;;;;:::i;:::-;;;13996:3;;;;;;;13953:236;;;;14220:10;14206:46;;;14232:10;;14244:7;;14206:46;;;;;;;;;:::i;:::-;;;;;;;;14270:4;14263:11;;;13699:583:::0;;;;;;:::o;15681:211::-;9422:13;:11;:13::i;:::-;15768:1:::1;15744:26;;:12;;;;;;;;;;;:26;;::::0;15736:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15824:14;;;;;;;;;;;15823:15;15806:14;;:32;;;;;;;;;;;;;;;;;;15872:12;15849:20;:35;;;;15681:211::o:0;9461:87::-;9507:7;9534:6;;;;;;;;;;;9527:13;;9461:87;:::o;4808:95::-;4855:13;4888:7;4881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4808:95;:::o;11824:87::-;11869:42;11824:87;:::o;5228:182::-;5297:4;5314:13;5330:12;:10;:12::i;:::-;5314:28;;5353:27;5363:5;5370:2;5374:5;5353:9;:27::i;:::-;5398:4;5391:11;;;5228:182;;;;:::o;11650:73::-;11681:42;11650:73;:::o;11560:83::-;11601:42;11560:83;:::o;5416:142::-;5496:7;5523:11;:18;5535:5;5523:18;;;;;;;;;;;;;;;:27;5542:7;5523:27;;;;;;;;;;;;;;;;5516:34;;5416:142;;;;:::o;11468:85::-;11511:42;11468:85;:::o;9835:220::-;9422:13;:11;:13::i;:::-;9940:1:::1;9920:22;;:8;:22;;::::0;9916:93:::1;;9994:1;9966:31;;;;;;;;;;;:::i;:::-;;;;;;;;9916:93;10019:28;10038:8;10019:18;:28::i;:::-;9835:220:::0;:::o;11730:87::-;11775:42;11730:87;:::o;504:98::-;557:7;584:10;577:17;;504:98;:::o;7501:130::-;7586:37;7595:5;7602:7;7611:5;7618:4;7586:8;:37::i;:::-;7501:130;;;:::o;8086:487::-;8186:24;8213:25;8223:5;8230:7;8213:9;:25::i;:::-;8186:52;;8273:17;8253:16;:37;8249:317;;8330:5;8311:16;:24;8307:132;;;8390:7;8399:16;8417:5;8363:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;8307:132;8482:57;8491:5;8498:7;8526:5;8507:16;:24;8533:5;8482:8;:57::i;:::-;8249:317;8175:398;8086:487;;;:::o;6015:308::-;6115:1;6099:18;;:4;:18;;;6095:88;;6168:1;6141:30;;;;;;;;;;;:::i;:::-;;;;;;;;6095:88;6211:1;6197:16;;:2;:16;;;6193:88;;6266:1;6237:32;;;;;;;;;;;:::i;:::-;;;;;;;;6193:88;6291:24;6299:4;6305:2;6309:5;6291:7;:24::i;:::-;6015:308;;;:::o;9554:166::-;9625:12;:10;:12::i;:::-;9614:23;;:7;:5;:7::i;:::-;:23;;;9610:103;;9688:12;:10;:12::i;:::-;9661:40;;;;;;;;;;;:::i;:::-;;;;;;;;9610:103;9554:166::o;10061:191::-;10135:16;10154:6;;;;;;;;;;;10135:25;;10180:8;10171:6;;:17;;;;;;;;;;;;;;;;;;10235:8;10204:40;;10225:8;10204:40;;;;;;;;;;;;10124:128;10061:191;:::o;7637:443::-;7767:1;7750:19;;:5;:19;;;7746:91;;7822:1;7793:32;;;;;;;;;;;:::i;:::-;;;;;;;;7746:91;7870:1;7851:21;;:7;:21;;;7847:92;;7924:1;7896:31;;;;;;;;;;;:::i;:::-;;;;;;;;7847:92;7979:5;7949:11;:18;7961:5;7949:18;;;;;;;;;;;;;;;:27;7968:7;7949:27;;;;;;;;;;;;;;;:35;;;;7999:9;7995:78;;;8046:7;8030:31;;8039:5;8030:31;;;8055:5;8030:31;;;;;;:::i;:::-;;;;;;;;7995:78;7637:443;;;;:::o;14290:1383::-;14425:14;;;;;;;;;;;14424:15;:34;;;;;14451:7;:5;:7::i;:::-;14443:15;;:4;:15;;;;14424:34;14420:103;;;14475:36;;;;;;;;;;:::i;:::-;;;;;;;;14420:103;14559:22;14607:3;14603:1;11270:2;11264:3;11178:20;11249:18;;;;:::i;:::-;:23;;;;:::i;:::-;14584:20;;;;:::i;:::-;:26;;;;:::i;:::-;14559:51;;14627:10;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14623:649;;14693:20;;14678:12;:35;:57;;;;;14723:12;;;;;;;;;;;14717:18;;:2;:18;;;;14678:57;14674:262;;;14772:3;14760:9;:15;14756:165;;;14817:1;14800:18;;14756:165;;;14884:17;14867:34;;14756:165;14674:262;14994:27;;14971:20;;:50;;;;:::i;:::-;14956:12;:65;:87;;;;;15031:12;;;;;;;;;;;15025:18;;:2;:18;;;;14956:87;14952:306;;;15120:14;15103:13;15113:2;15103:9;:13::i;:::-;15094:6;:22;;;;:::i;:::-;:40;;15064:178;;;;;;;;;;;;:::i;:::-;;;;;;;;;14952:306;14623:649;15284:14;15301:17;15315:2;15301:13;:17::i;:::-;15284:34;;15329:15;15347:10;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15329:43;;15389:9;:24;;;;;15403:10;15402:11;15389:24;15385:281;;;15430:17;15467:5;15460:3;15451:6;:12;;;;:::i;:::-;15450:22;;;;:::i;:::-;15430:42;;15499:45;15513:4;11419:42;15534:9;15499:13;:45::i;:::-;15559:31;15573:4;15579:2;15583:6;15559:13;:31::i;:::-;15415:187;15385:281;;;15623:31;15637:4;15643:2;15647:6;15623:13;:31::i;:::-;15385:281;14409:1264;;;14290:1383;;;:::o;13416:275::-;13474:4;13501:12;;;;;;;;;;;13495:18;;:2;:18;;;13491:35;;13522:4;13515:11;;;;13491:35;11601:42;13541:20;;:2;:20;;;13537:37;;13570:4;13563:11;;;;13537:37;11511:42;13589:22;;:2;:22;;;:58;;;;;13616:10;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13615:32;13589:58;13585:75;;;13656:4;13649:11;;;;13585:75;13678:5;13671:12;;13416:275;;;;:::o;6329:730::-;6435:1;6419:18;;:4;:18;;;6415:369;;6470:5;6454:12;;:21;;;;;;;:::i;:::-;;;;;;;;6415:369;;;6508:19;6530:9;:15;6540:4;6530:15;;;;;;;;;;;;;;;;6508:37;;6578:5;6564:11;:19;6560:117;;;6636:4;6642:11;6655:5;6611:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6560:117;6752:5;6738:11;:19;6720:9;:15;6730:4;6720:15;;;;;;;;;;;;;;;:37;;;;6493:291;6415:369;6814:1;6800:16;;:2;:16;;;6796:213;;6878:5;6862:12;;:21;;;;;;;;;;;6796:213;;;6977:5;6960:9;:13;6970:2;6960:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6796:213;7041:2;7026:25;;7035:4;7026:25;;;7045:5;7026:25;;;;;;:::i;:::-;;;;;;;;6329:730;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:118::-;3778:24;3796:5;3778:24;:::i;:::-;3773:3;3766:37;3691:118;;:::o;3815:222::-;3908:4;3946:2;3935:9;3931:18;3923:26;;3959:71;4027:1;4016:9;4012:17;4003:6;3959:71;:::i;:::-;3815:222;;;;:::o;4043:619::-;4120:6;4128;4136;4185:2;4173:9;4164:7;4160:23;4156:32;4153:119;;;4191:79;;:::i;:::-;4153:119;4311:1;4336:53;4381:7;4372:6;4361:9;4357:22;4336:53;:::i;:::-;4326:63;;4282:117;4438:2;4464:53;4509:7;4500:6;4489:9;4485:22;4464:53;:::i;:::-;4454:63;;4409:118;4566:2;4592:53;4637:7;4628:6;4617:9;4613:22;4592:53;:::i;:::-;4582:63;;4537:118;4043:619;;;;;:::o;4668:86::-;4703:7;4743:4;4736:5;4732:16;4721:27;;4668:86;;;:::o;4760:112::-;4843:22;4859:5;4843:22;:::i;:::-;4838:3;4831:35;4760:112;;:::o;4878:214::-;4967:4;5005:2;4994:9;4990:18;4982:26;;5018:67;5082:1;5071:9;5067:17;5058:6;5018:67;:::i;:::-;4878:214;;;;:::o;5098:60::-;5126:3;5147:5;5140:12;;5098:60;;;:::o;5164:142::-;5214:9;5247:53;5265:34;5274:24;5292:5;5274:24;:::i;:::-;5265:34;:::i;:::-;5247:53;:::i;:::-;5234:66;;5164:142;;;:::o;5312:126::-;5362:9;5395:37;5426:5;5395:37;:::i;:::-;5382:50;;5312:126;;;:::o;5444:145::-;5513:9;5546:37;5577:5;5546:37;:::i;:::-;5533:50;;5444:145;;;:::o;5595:169::-;5701:56;5751:5;5701:56;:::i;:::-;5696:3;5689:69;5595:169;;:::o;5770:260::-;5882:4;5920:2;5909:9;5905:18;5897:26;;5933:90;6020:1;6009:9;6005:17;5996:6;5933:90;:::i;:::-;5770:260;;;;:::o;6036:329::-;6095:6;6144:2;6132:9;6123:7;6119:23;6115:32;6112:119;;;6150:79;;:::i;:::-;6112:119;6270:1;6295:53;6340:7;6331:6;6320:9;6316:22;6295:53;:::i;:::-;6285:63;;6241:117;6036:329;;;;:::o;6371:117::-;6480:1;6477;6470:12;6494:117;6603:1;6600;6593:12;6617:117;6726:1;6723;6716:12;6757:568;6830:8;6840:6;6890:3;6883:4;6875:6;6871:17;6867:27;6857:122;;6898:79;;:::i;:::-;6857:122;7011:6;6998:20;6988:30;;7041:18;7033:6;7030:30;7027:117;;;7063:79;;:::i;:::-;7027:117;7177:4;7169:6;7165:17;7153:29;;7231:3;7223:4;7215:6;7211:17;7201:8;7197:32;7194:41;7191:128;;;7238:79;;:::i;:::-;7191:128;6757:568;;;;;:::o;7348:::-;7421:8;7431:6;7481:3;7474:4;7466:6;7462:17;7458:27;7448:122;;7489:79;;:::i;:::-;7448:122;7602:6;7589:20;7579:30;;7632:18;7624:6;7621:30;7618:117;;;7654:79;;:::i;:::-;7618:117;7768:4;7760:6;7756:17;7744:29;;7822:3;7814:4;7806:6;7802:17;7792:8;7788:32;7785:41;7782:128;;;7829:79;;:::i;:::-;7782:128;7348:568;;;;;:::o;7922:934::-;8044:6;8052;8060;8068;8117:2;8105:9;8096:7;8092:23;8088:32;8085:119;;;8123:79;;:::i;:::-;8085:119;8271:1;8260:9;8256:17;8243:31;8301:18;8293:6;8290:30;8287:117;;;8323:79;;:::i;:::-;8287:117;8436:80;8508:7;8499:6;8488:9;8484:22;8436:80;:::i;:::-;8418:98;;;;8214:312;8593:2;8582:9;8578:18;8565:32;8624:18;8616:6;8613:30;8610:117;;;8646:79;;:::i;:::-;8610:117;8759:80;8831:7;8822:6;8811:9;8807:22;8759:80;:::i;:::-;8741:98;;;;8536:313;7922:934;;;;;;;:::o;8862:474::-;8930:6;8938;8987:2;8975:9;8966:7;8962:23;8958:32;8955:119;;;8993:79;;:::i;:::-;8955:119;9113:1;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9084:117;9240:2;9266:53;9311:7;9302:6;9291:9;9287:22;9266:53;:::i;:::-;9256:63;;9211:118;8862:474;;;;;:::o;9342:180::-;9390:77;9387:1;9380:88;9487:4;9484:1;9477:15;9511:4;9508:1;9501:15;9528:320;9572:6;9609:1;9603:4;9599:12;9589:22;;9656:1;9650:4;9646:12;9677:18;9667:81;;9733:4;9725:6;9721:17;9711:27;;9667:81;9795:2;9787:6;9784:14;9764:18;9761:38;9758:84;;9814:18;;:::i;:::-;9758:84;9579:269;9528:320;;;:::o;9854:332::-;9975:4;10013:2;10002:9;9998:18;9990:26;;10026:71;10094:1;10083:9;10079:17;10070:6;10026:71;:::i;:::-;10107:72;10175:2;10164:9;10160:18;10151:6;10107:72;:::i;:::-;9854:332;;;;;:::o;10192:143::-;10249:5;10280:6;10274:13;10265:22;;10296:33;10323:5;10296:33;:::i;:::-;10192:143;;;;:::o;10341:351::-;10411:6;10460:2;10448:9;10439:7;10435:23;10431:32;10428:119;;;10466:79;;:::i;:::-;10428:119;10586:1;10611:64;10667:7;10658:6;10647:9;10643:22;10611:64;:::i;:::-;10601:74;;10557:128;10341:351;;;;:::o;10698:180::-;10746:77;10743:1;10736:88;10843:4;10840:1;10833:15;10867:4;10864:1;10857:15;10884:91;10920:7;10960:8;10953:5;10949:20;10938:31;;10884:91;;;:::o;10981:115::-;11066:23;11083:5;11066:23;:::i;:::-;11061:3;11054:36;10981:115;;:::o;11102:438::-;11249:4;11287:2;11276:9;11272:18;11264:26;;11300:71;11368:1;11357:9;11353:17;11344:6;11300:71;:::i;:::-;11381:72;11449:2;11438:9;11434:18;11425:6;11381:72;:::i;:::-;11463:70;11529:2;11518:9;11514:18;11505:6;11463:70;:::i;:::-;11102:438;;;;;;:::o;11546:225::-;11686:34;11682:1;11674:6;11670:14;11663:58;11755:8;11750:2;11742:6;11738:15;11731:33;11546:225;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:174::-;12714:26;12710:1;12702:6;12698:14;12691:50;12574:174;:::o;12754:366::-;12896:3;12917:67;12981:2;12976:3;12917:67;:::i;:::-;12910:74;;12993:93;13082:3;12993:93;:::i;:::-;13111:2;13106:3;13102:12;13095:19;;12754:366;;;:::o;13126:419::-;13292:4;13330:2;13319:9;13315:18;13307:26;;13379:9;13373:4;13369:20;13365:1;13354:9;13350:17;13343:47;13407:131;13533:4;13407:131;:::i;:::-;13399:139;;13126:419;;;:::o;13551:180::-;13599:77;13596:1;13589:88;13696:4;13693:1;13686:15;13720:4;13717:1;13710:15;13737:191;13777:3;13796:20;13814:1;13796:20;:::i;:::-;13791:25;;13830:20;13848:1;13830:20;:::i;:::-;13825:25;;13873:1;13870;13866:9;13859:16;;13894:3;13891:1;13888:10;13885:36;;;13901:18;;:::i;:::-;13885:36;13737:191;;;;:::o;13934:184::-;14033:11;14067:6;14062:3;14055:19;14107:4;14102:3;14098:14;14083:29;;13934:184;;;;:::o;14124:102::-;14193:4;14216:3;14208:11;;14124:102;;;:::o;14232:108::-;14309:24;14327:5;14309:24;:::i;:::-;14304:3;14297:37;14232:108;;:::o;14346:179::-;14415:10;14436:46;14478:3;14470:6;14436:46;:::i;:::-;14514:4;14509:3;14505:14;14491:28;;14346:179;;;;:::o;14531:122::-;14583:5;14608:39;14643:2;14638:3;14634:12;14629:3;14608:39;:::i;:::-;14599:48;;14531:122;;;;:::o;14659:115::-;14731:4;14763;14758:3;14754:14;14746:22;;14659:115;;;:::o;14810:699::-;14939:3;14962:86;15041:6;15036:3;14962:86;:::i;:::-;14955:93;;15072:58;15124:5;15072:58;:::i;:::-;15153:7;15184:1;15169:315;15194:6;15191:1;15188:13;15169:315;;;15264:42;15299:6;15290:7;15264:42;:::i;:::-;15326:63;15385:3;15370:13;15326:63;:::i;:::-;15319:70;;15412:62;15467:6;15412:62;:::i;:::-;15402:72;;15229:255;15216:1;15213;15209:9;15204:14;;15169:315;;;15173:14;15500:3;15493:10;;14944:565;;14810:699;;;;;:::o;15515:184::-;15614:11;15648:6;15643:3;15636:19;15688:4;15683:3;15679:14;15664:29;;15515:184;;;;:::o;15705:117::-;15814:1;15811;15804:12;15828:99;15913:6;15908:3;15903;15890:30;15828:99;;;:::o;15963:537::-;16091:3;16112:86;16191:6;16186:3;16112:86;:::i;:::-;16105:93;;16222:66;16214:6;16211:78;16208:165;;;16292:79;;:::i;:::-;16208:165;16404:4;16396:6;16392:17;16382:27;;16419:43;16455:6;16450:3;16443:5;16419:43;:::i;:::-;16487:6;16482:3;16478:16;16471:23;;15963:537;;;;;:::o;16506:674::-;16747:4;16785:2;16774:9;16770:18;16762:26;;16834:9;16828:4;16824:20;16820:1;16809:9;16805:17;16798:47;16862:118;16975:4;16966:6;16958;16862:118;:::i;:::-;16854:126;;17027:9;17021:4;17017:20;17012:2;17001:9;16997:18;16990:48;17055:118;17168:4;17159:6;17151;17055:118;:::i;:::-;17047:126;;16506:674;;;;;;;:::o;17186:170::-;17326:22;17322:1;17314:6;17310:14;17303:46;17186:170;:::o;17362:366::-;17504:3;17525:67;17589:2;17584:3;17525:67;:::i;:::-;17518:74;;17601:93;17690:3;17601:93;:::i;:::-;17719:2;17714:3;17710:12;17703:19;;17362:366;;;:::o;17734:419::-;17900:4;17938:2;17927:9;17923:18;17915:26;;17987:9;17981:4;17977:20;17973:1;17962:9;17958:17;17951:47;18015:131;18141:4;18015:131;:::i;:::-;18007:139;;17734:419;;;:::o;18159:442::-;18308:4;18346:2;18335:9;18331:18;18323:26;;18359:71;18427:1;18416:9;18412:17;18403:6;18359:71;:::i;:::-;18440:72;18508:2;18497:9;18493:18;18484:6;18440:72;:::i;:::-;18522;18590:2;18579:9;18575:18;18566:6;18522:72;:::i;:::-;18159:442;;;;;;:::o;18607:176::-;18747:28;18743:1;18735:6;18731:14;18724:52;18607:176;:::o;18789:366::-;18931:3;18952:67;19016:2;19011:3;18952:67;:::i;:::-;18945:74;;19028:93;19117:3;19028:93;:::i;:::-;19146:2;19141:3;19137:12;19130:19;;18789:366;;;:::o;19161:419::-;19327:4;19365:2;19354:9;19350:18;19342:26;;19414:9;19408:4;19404:20;19400:1;19389:9;19385:17;19378:47;19442:131;19568:4;19442:131;:::i;:::-;19434:139;;19161:419;;;:::o;19586:180::-;19634:77;19631:1;19624:88;19731:4;19728:1;19721:15;19755:4;19752:1;19745:15;19772:185;19812:1;19829:20;19847:1;19829:20;:::i;:::-;19824:25;;19863:20;19881:1;19863:20;:::i;:::-;19858:25;;19902:1;19892:35;;19907:18;;:::i;:::-;19892:35;19949:1;19946;19942:9;19937:14;;19772:185;;;;:::o;19963:410::-;20003:7;20026:20;20044:1;20026:20;:::i;:::-;20021:25;;20060:20;20078:1;20060:20;:::i;:::-;20055:25;;20115:1;20112;20108:9;20137:30;20155:11;20137:30;:::i;:::-;20126:41;;20316:1;20307:7;20303:15;20300:1;20297:22;20277:1;20270:9;20250:83;20227:139;;20346:18;;:::i;:::-;20227:139;20011:362;19963:410;;;;:::o;20379:116::-;20449:21;20464:5;20449:21;:::i;:::-;20442:5;20439:32;20429:60;;20485:1;20482;20475:12;20429:60;20379:116;:::o;20501:137::-;20555:5;20586:6;20580:13;20571:22;;20602:30;20626:5;20602:30;:::i;:::-;20501:137;;;;:::o;20644:345::-;20711:6;20760:2;20748:9;20739:7;20735:23;20731:32;20728:119;;;20766:79;;:::i;:::-;20728:119;20886:1;20911:61;20964:7;20955:6;20944:9;20940:22;20911:61;:::i;:::-;20901:71;;20857:125;20644:345;;;;:::o;20995:251::-;21135:34;21131:1;21123:6;21119:14;21112:58;21204:34;21199:2;21191:6;21187:15;21180:59;20995:251;:::o;21252:366::-;21394:3;21415:67;21479:2;21474:3;21415:67;:::i;:::-;21408:74;;21491:93;21580:3;21491:93;:::i;:::-;21609:2;21604:3;21600:12;21593:19;;21252:366;;;:::o;21624:419::-;21790:4;21828:2;21817:9;21813:18;21805:26;;21877:9;21871:4;21867:20;21863:1;21852:9;21848:17;21841:47;21905:131;22031:4;21905:131;:::i;:::-;21897:139;;21624:419;;;:::o

Swarm Source

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