ETH Price: $3,147.52 (+2.41%)

Token

Zero Supply Experiment (0)
 

Overview

Max Total Supply

0.00000000000001 0

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.00000000000000008 0

Value
$0.00
0xb0e789db1f4c33ae2e5559f4290b7710caee5de9
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ZERO

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-14
*/

//@dev 0.000000000000000000000 unique Tokens with unique Attributes
//Yes. It Does Work:
//A Social Experiment // The NON Supply NFT/TOKEN ERC771/ERC404 Hybrid with 0 Supply

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


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

pragma solidity ^0.8.0;

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

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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


// File contracts/PepeToken.sol



pragma solidity ^0.8.0;


contract ZERO is Ownable, ERC20 {
    bool public limited = true;
    uint supply = 10000;
    uint256 public maxHoldingAmount = 5;
    uint256 public minHoldingAmount = 0;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;

    constructor() ERC20("Zero Supply Experiment", "0") {
        _mint(msg.sender, supply);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function start(address _uniswapV2Pair) external onlyOwner{
        uniswapV2Pair = _uniswapV2Pair;
    }

    function setLimitsZero() external onlyOwner{
        limited = false;
    }

    function setMaxTx(uint256 _maxHoldingAmount) external onlyOwner {
    
        maxHoldingAmount = _maxHoldingAmount;
       
    }

    function levelUPMax() external onlyOwner{
        maxHoldingAmount = maxHoldingAmount * 2;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

      mapping(uint index => address holder) _holders;
    mapping(address holder => uint index) _holder_index;
    uint public holders_count;

    function get_holders_list(
        uint index,
        uint count
    ) external view returns (uint page_count, address[] memory accounts) {
        if (index >= holders_count) return (0, new address[](0));

        uint end = index + count;
        if (end > holders_count) {
            end = holders_count;
        }
        page_count = end - index;

        accounts = new address[](page_count);
        uint i;
        for (i = index; i < page_count; ++i) {
            accounts[i] = _holders[index + i];
        }
    }

    function add_holder(address value) internal {
        uint index = holders_count++;
        _holders[index] = value;
        _holder_index[value] = index;
    }

    function remove_holder(address value) internal {
        if (holders_count == 0) return;

        uint removingIndex = _holder_index[value];
        if (removingIndex != holders_count - 1) {
            address lastHolder = _holders[holders_count - 1];
            _holders[removingIndex] = lastHolder;
            _holder_index[lastHolder] = removingIndex;
        }

        --holders_count;
        delete _holder_index[value];
        delete _holders[holders_count];
    }

     uint constant MAX_GENS_START = 1000;
    uint public constant GEN_MIN = 1;
    uint public constant gen_max = MAX_GENS_START;
    uint public gen = MAX_GENS_START;
    uint public constant max_breed = 1000;
    mapping(address owner => uint) public counts;
    uint public breed_total_count;
    uint breed_id;


 



    function _transfer_breed_from_to_by_index(
        address account,
        uint index,
        address to
    ) private {
        string memory breed = "";
        
    }

    function transfer_breed_from_to_by_index(uint index, address to) external {
        require(index < counts[msg.sender], "incorrect index");
        _transfer_breed_from_to_by_index(msg.sender, index, to);
    }

    function gen_mode(uint value) private returns (uint) {
        value = (value * gen) / gen_max;
        if (value == 0) value = 1;
        if (gen > GEN_MIN) --gen;
        return value;
    }

    function buy(
        address to,
        uint256 amount
    ) internal    {
        uint last_balance = balanceOf(to);
        uint balance = last_balance + amount;
        uint count = balance /
            (10 ** decimals()) -
            last_balance /
            (10 ** decimals());
        uint i;
        for (i = 0; i < count; ++i) {
            string memory breed = "Breed(++breed_id, gen_mode(max_breed))";
            
        }
      
    }

    function sell(
        address from,
        uint256 amount
    ) internal {
        uint last_balance = balanceOf(from);
        uint balance = last_balance - amount;
        uint count = last_balance /
            (10 ** decimals()) -
            balance /
            (10 ** decimals());
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < count; ++i) {
            if (gen < gen_max) ++gen;
            if (owner_count > 0)
                (from, --owner_count);
        }
        
    }

    function transfer_internal(
        address from,
        address to,
        uint256 amount
    ) internal  {
        uint last_balance_from = balanceOf(from);
        uint balance_from = last_balance_from - amount;
        uint last_balance_to = balanceOf(to);
        uint balance_to = last_balance_to + amount;
      
        uint count_from = last_balance_from /
            (10 ** decimals()) -
            balance_from /
            (10 ** decimals());
        uint count_to = balance_to /
            (10 ** decimals()) -
            last_balance_to /
            (10 ** decimals());
        // calculate transfer count
        uint transfer_count = count_from;

        if (transfer_count > count_to) transfer_count = count_to;
        // transfer
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < transfer_count; ++i) {
            if (owner_count == 0) break;
            uint from_index = --owner_count;
       
        
        }
        uint transfered = i;

        // remove from
        for (i = transfer_count; i < count_from; ++i) {
            uint from_index = --owner_count;
            
        }

        // generate to
        for (i = transfered; i < count_to; ++i) {
          
          
        }

    }


    function get_svg_acc_index(
        address account,
        uint index
    ) external view returns (string memory) {
        
    }

    function get_account_breeds(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   
        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

    
        uint i;
        for (i = 0; i < page_count; ++i) {
    
        }
    }

    function get_account_items(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

      
        uint i;
        for (i = 0; i < page_count; ++i) {
     
        }
    }

    function get_account_svgs(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
        if (index >= account_count) return (0, new string[](0));

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
            page_count = index - end;
        }

        accounts = new string[](page_count);
        uint i;
        uint n = 0;
        for (i = index; i < end; ++i) {
     
        }
    }

    uint background_color;
    uint body;
    uint body_color;
    uint facial_hair;
    uint facial_hair_color;
    uint shirt_1;
    uint shirt_1_color;
    uint shirt_2;
    uint shirt_2_color;
    uint shirt_3;
    uint shirt_3_color;
    uint nose;
    uint nose_color;
    uint mouth;
    uint mouth_color;
    uint eyes_base_color;
    uint eyes;
    uint eyes_color;
    uint hair;
    uint hair_color;
    uint hat;
    uint hat_color;
    uint accessories;
    uint accessories_color;
    uint mask;
    uint mask_color;
    

    function backgroundColor(uint _background_color) external onlyOwner {
    background_color = _background_color;
}

function bodySet(uint _body) external onlyOwner {
    body = _body;
}

function bodyColor(uint _body_color) external onlyOwner {
    body_color = _body_color;
}

function facialHair(uint _facial_hair) external onlyOwner {
    facial_hair = _facial_hair;
}

function facialHairColor(uint _facial_hair_color) external onlyOwner {
    facial_hair_color = _facial_hair_color;
}

function shirt1(uint _shirt_1) external onlyOwner {
    shirt_1 = _shirt_1;
}

function shirt1Color(uint _shirt_1_color) external onlyOwner {
    shirt_1_color = _shirt_1_color;
}

function shirt2(uint _shirt_2) external onlyOwner {
    shirt_2 = _shirt_2;
}

function shirt2Color(uint _shirt_2_color) external onlyOwner {
    shirt_2_color = _shirt_2_color;
}

function shirt3(uint _shirt_3) external onlyOwner {
    shirt_3 = _shirt_3;
}

function shirt3Color(uint _shirt_3_color) external onlyOwner {
    shirt_3_color = _shirt_3_color;
}

function noseSet(uint _nose) external onlyOwner {
    nose = _nose;
}

function noseColor(uint _nose_color) external onlyOwner {
    nose_color = _nose_color;
}

function mouthSet(uint _mouth) external onlyOwner {
    mouth = _mouth;
}

function mouthColor(uint _mouth_color) external onlyOwner {
    mouth_color = _mouth_color;
}

function eyesBaseColor(uint _eyes_base_color) external onlyOwner {
    eyes_base_color = _eyes_base_color;
}

function eyesSet(uint _eyes) external onlyOwner {
    eyes = _eyes;
}

function eyesColor(uint _eyes_color) external onlyOwner {
    eyes_color = _eyes_color;
}

function hairSet(uint _hair) external onlyOwner {
    hair = _hair;
}

function hairColor(uint _hair_color) external onlyOwner {
    hair_color = _hair_color;
}

function hatSet(uint _hat) external onlyOwner {
    hat = _hat;
}

function hatColor(uint _hat_color) external onlyOwner {
    hat_color = _hat_color;
}

function accessoriesSet(uint _accessories) external onlyOwner {
    accessories = _accessories;
}

function accessoriesColor(uint _accessories_color) external {
    accessories_color = _accessories_color;
}

function maskSet(uint _mask) external onlyOwner {
    mask = _mask;
}



}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"GEN_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories_color","type":"uint256"}],"name":"accessoriesColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories","type":"uint256"}],"name":"accessoriesSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_background_color","type":"uint256"}],"name":"backgroundColor","outputs":[],"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":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body_color","type":"uint256"}],"name":"bodyColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body","type":"uint256"}],"name":"bodySet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"breed_total_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"counts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_base_color","type":"uint256"}],"name":"eyesBaseColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_color","type":"uint256"}],"name":"eyesColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes","type":"uint256"}],"name":"eyesSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair","type":"uint256"}],"name":"facialHair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair_color","type":"uint256"}],"name":"facialHairColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gen_max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_breeds","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_items","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_svgs","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_holders_list","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"get_svg_acc_index","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair_color","type":"uint256"}],"name":"hairColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair","type":"uint256"}],"name":"hairSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat_color","type":"uint256"}],"name":"hatColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat","type":"uint256"}],"name":"hatSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holders_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"levelUPMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask","type":"uint256"}],"name":"maskSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_breed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth_color","type":"uint256"}],"name":"mouthColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth","type":"uint256"}],"name":"mouthSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose_color","type":"uint256"}],"name":"noseColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose","type":"uint256"}],"name":"noseSet","outputs":[],"stateMutability":"nonpayable","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":"setLimitsZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1","type":"uint256"}],"name":"shirt1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1_color","type":"uint256"}],"name":"shirt1Color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2","type":"uint256"}],"name":"shirt2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2_color","type":"uint256"}],"name":"shirt2Color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3","type":"uint256"}],"name":"shirt3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3_color","type":"uint256"}],"name":"shirt3Color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transfer_breed_from_to_by_index","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600160065f6101000a81548160ff02191690831515021790555061271060075560056008555f6009556103e8600f5534801561003e575f5ffd5b506040518060400160405280601681526020017f5a65726f20537570706c79204578706572696d656e74000000000000000000008152506040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152506100c76100bc61010060201b60201c565b61010760201b60201c565b81600490816100d691906108c7565b5080600590816100e691906108c7565b5050506100fb336007546101c860201b60201c565b610bce565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022d906109f0565b60405180910390fd5b6102475f838361032c60201b60201c565b8060035f8282546102589190610a3b565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102ab9190610a3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161030f9190610a7d565b60405180910390a36103285f838361061860201b60201c565b5050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156103ca5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040090610ae0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105205761046b61061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806104dc57506104ad61061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61051b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051290610b48565b60405180910390fd5b610613565b60065f9054906101000a900460ff1680156105875750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610612576008548161059f8461064460201b60201c565b6105a99190610a3b565b111580156105d25750600954816105c58461064460201b60201c565b6105cf9190610a3b565b10155b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610bb0565b60405180910390fd5b5b5b505050565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061070557607f821691505b602082108103610718576107176106c1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261077a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261073f565b610784868361073f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6107c86107c36107be8461079c565b6107a5565b61079c565b9050919050565b5f819050919050565b6107e1836107ae565b6107f56107ed826107cf565b84845461074b565b825550505050565b5f5f905090565b61080c6107fd565b6108178184846107d8565b505050565b5b8181101561083a5761082f5f82610804565b60018101905061081d565b5050565b601f82111561087f576108508161071e565b61085984610730565b81016020851015610868578190505b61087c61087485610730565b83018261081c565b50505b505050565b5f82821c905092915050565b5f61089f5f1984600802610884565b1980831691505092915050565b5f6108b78383610890565b9150826002028217905092915050565b6108d08261068a565b67ffffffffffffffff8111156108e9576108e8610694565b5b6108f382546106ee565b6108fe82828561083e565b5f60209050601f83116001811461092f575f841561091d578287015190505b61092785826108ac565b86555061098e565b601f19841661093d8661071e565b5f5b828110156109645784890151825560018201915060208501945060208101905061093f565b86831015610981578489015161097d601f891682610890565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6109da601f83610996565b91506109e5826109a6565b602082019050919050565b5f6020820190508181035f830152610a07816109ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a458261079c565b9150610a508361079c565b9250828201905080821115610a6857610a67610a0e565b5b92915050565b610a778161079c565b82525050565b5f602082019050610a905f830184610a6e565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f610aca600b83610996565b9150610ad582610a96565b602082019050919050565b5f6020820190508181035f830152610af781610abe565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f610b32601683610996565b9150610b3d82610afe565b602082019050919050565b5f6020820190508181035f830152610b5f81610b26565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f610b9a600683610996565b9150610ba582610b66565b602082019050919050565b5f6020820190508181035f830152610bc781610b8e565b9050919050565b61406080610bdb5f395ff3fe608060405234801561000f575f5ffd5b50600436106103c3575f3560e01c8063747cfd86116101fd578063acb4b85211610118578063d5a42606116100ab578063dd62ed3e1161007a578063dd62ed3e14610b29578063dde415fa14610b59578063df03165614610b77578063f2fde38b14610b93576103c3565b8063d5a4260614610aa4578063d807e76914610ad5578063dce3296014610af1578063dd0b281e14610b0d576103c3565b8063b4377a3e116100e7578063b4377a3e14610a32578063b4f243a414610a4e578063bc33718214610a7e578063c600483714610a9a576103c3565b8063acb4b852146109be578063ad7cb9ab146109da578063af504def146109f6578063b42dfa0d14610a14576103c3565b806395d89b4111610190578063a836f08d1161015f578063a836f08d1461093a578063a9059cbb14610956578063aad2d20e14610986578063ab70a43f146109a2576103c3565b806395d89b411461089f57806398bafaa3146108bd5780639e3d036f146108ee578063a457c2d71461090a576103c3565b8063860a32ec116101cc578063860a32ec1461082757806389f9a1d3146108455780638da5cb5b146108635780638fdada4a14610881576103c3565b8063747cfd86146107b4578063750e8d10146107d05780637a315a71146108015780637c4f968a1461080b576103c3565b806331963891116102ed57806345d9365c11610280578063660d3dc01161024f578063660d3dc0146107425780636ea1cb181461075e57806370a082311461077a578063715018a6146107aa576103c3565b806345d9365c146106d057806349bd5a5e146106ec5780634ee5b3791461070a57806361603b3d14610726576103c3565b8063404e5129116102bc578063404e51291461066057806341d2c2681461067c57806342966c681461069857806342babd3d146106b4576103c3565b806331963891146105c757806335985bf9146105e35780633860a393146105ff5780633950935114610630576103c3565b806314d64a461161036557806323b872dd1161033457806323b872dd1461053f578063241b877f1461056f5780632d12d34b1461058b578063313ce567146105a9576103c3565b806314d64a46146104b757806316c02129146104d357806318160ddd146105035780631ab99e1214610521576103c3565b8063065c000e116103a1578063065c000e1461043157806306fdde031461044d578063095ea7b31461046b57806312075e8b1461049b576103c3565b8063018a3741146103c7578063027b4d7f146103e55780630568e65e14610401575b5f5ffd5b6103cf610baf565b6040516103dc91906130df565b60405180910390f35b6103ff60048036038101906103fa9190613126565b610bb5565b005b61041b600480360381019061041691906131ab565b610c3b565b60405161042891906130df565b60405180910390f35b61044b60048036038101906104469190613126565b610c50565b005b610455610cd6565b6040516104629190613246565b60405180910390f35b61048560048036038101906104809190613266565b610d66565b60405161049291906132be565b60405180910390f35b6104b560048036038101906104b09190613126565b610d83565b005b6104d160048036038101906104cc9190613126565b610e09565b005b6104ed60048036038101906104e891906131ab565b610e8f565b6040516104fa91906132be565b60405180910390f35b61050b610eac565b60405161051891906130df565b60405180910390f35b610529610eb5565b60405161053691906130df565b60405180910390f35b610559600480360381019061055491906132d7565b610ebb565b60405161056691906132be565b60405180910390f35b61058960048036038101906105849190613126565b610fad565b005b610593611033565b6040516105a091906130df565b60405180910390f35b6105b1611038565b6040516105be9190613342565b60405180910390f35b6105e160048036038101906105dc9190613126565b611040565b005b6105fd60048036038101906105f89190613126565b6110c6565b005b6106196004803603810190610614919061335b565b61114c565b604051610627929190613450565b60405180910390f35b61064a60048036038101906106459190613266565b6112ce565b60405161065791906132be565b60405180910390f35b61067a600480360381019061067591906134a8565b611375565b005b61069660048036038101906106919190613126565b611449565b005b6106b260048036038101906106ad9190613126565b6114cf565b005b6106ce60048036038101906106c99190613126565b6114dc565b005b6106ea60048036038101906106e59190613126565b611562565b005b6106f46115e8565b60405161070191906134f5565b60405180910390f35b610724600480360381019061071f9190613126565b61160d565b005b610740600480360381019061073b9190613126565b611693565b005b61075c60048036038101906107579190613126565b611719565b005b61077860048036038101906107739190613126565b61179f565b005b610794600480360381019061078f91906131ab565b611825565b6040516107a191906130df565b60405180910390f35b6107b261186b565b005b6107ce60048036038101906107c99190613126565b6118f2565b005b6107ea60048036038101906107e5919061350e565b611978565b6040516107f8929190613661565b60405180910390f35b610809611a08565b005b61082560048036038101906108209190613126565b611a9f565b005b61082f611b25565b60405161083c91906132be565b60405180910390f35b61084d611b37565b60405161085a91906130df565b60405180910390f35b61086b611b3d565b60405161087891906134f5565b60405180910390f35b610889611b64565b60405161089691906130df565b60405180910390f35b6108a7611b6a565b6040516108b49190613246565b60405180910390f35b6108d760048036038101906108d2919061350e565b611bfa565b6040516108e5929190613661565b60405180910390f35b61090860048036038101906109039190613126565b611c8a565b005b610924600480360381019061091f9190613266565b611d10565b60405161093191906132be565b60405180910390f35b610954600480360381019061094f9190613126565b611df6565b005b610970600480360381019061096b9190613266565b611e7c565b60405161097d91906132be565b60405180910390f35b6109a0600480360381019061099b9190613126565b611e99565b005b6109bc60048036038101906109b79190613126565b611f1f565b005b6109d860048036038101906109d39190613126565b611fa5565b005b6109f460048036038101906109ef9190613126565b611faf565b005b6109fe612035565b604051610a0b91906130df565b60405180910390f35b610a1c61203b565b604051610a2991906130df565b60405180910390f35b610a4c6004803603810190610a47919061368f565b612041565b005b610a686004803603810190610a639190613266565b6120cf565b604051610a759190613246565b60405180910390f35b610a986004803603810190610a939190613126565b6120d7565b005b610aa261215d565b005b610abe6004803603810190610ab9919061350e565b6121f0565b604051610acc929190613661565b60405180910390f35b610aef6004803603810190610aea9190613126565b612336565b005b610b0b6004803603810190610b069190613126565b6123bc565b005b610b276004803603810190610b2291906131ab565b612442565b005b610b436004803603810190610b3e91906136cd565b612501565b604051610b5091906130df565b60405180910390f35b610b61612583565b604051610b6e91906130df565b60405180910390f35b610b916004803603810190610b8c9190613126565b612589565b005b610bad6004803603810190610ba891906131ab565b61260f565b005b600e5481565b610bbd612705565b73ffffffffffffffffffffffffffffffffffffffff16610bdb611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2890613755565b60405180910390fd5b80601b8190555050565b6010602052805f5260405f205f915090505481565b610c58612705565b73ffffffffffffffffffffffffffffffffffffffff16610c76611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613755565b60405180910390fd5b80601d8190555050565b606060048054610ce5906137a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d11906137a0565b8015610d5c5780601f10610d3357610100808354040283529160200191610d5c565b820191905f5260205f20905b815481529060010190602001808311610d3f57829003601f168201915b5050505050905090565b5f610d79610d72612705565b848461270c565b6001905092915050565b610d8b612705565b73ffffffffffffffffffffffffffffffffffffffff16610da9611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df690613755565b60405180910390fd5b8060208190555050565b610e11612705565b73ffffffffffffffffffffffffffffffffffffffff16610e2f611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90613755565b60405180910390fd5b8060298190555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60095481565b5f610ec78484846128cf565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f0e612705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490613840565b60405180910390fd5b610fa185610f99612705565b85840361270c565b60019150509392505050565b610fb5612705565b73ffffffffffffffffffffffffffffffffffffffff16610fd3611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090613755565b60405180910390fd5b8060138190555050565b600181565b5f6012905090565b611048612705565b73ffffffffffffffffffffffffffffffffffffffff16611066611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390613755565b60405180910390fd5b8060258190555050565b6110ce612705565b73ffffffffffffffffffffffffffffffffffffffff166110ec611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990613755565b60405180910390fd5b80601f8190555050565b5f6060600e5484106111ab575f5f67ffffffffffffffff8111156111735761117261385e565b5b6040519080825280602002602001820160405280156111a15781602001602082028036833780820191505090505b50915091506112c7565b5f83856111b891906138b8565b9050600e548111156111ca57600e5490505b84816111d691906138eb565b92508267ffffffffffffffff8111156111f2576111f161385e565b5b6040519080825280602002602001820160405280156112205781602001602082028036833780820191505090505b5091505f8590505b838110156112c457600c5f828861123f91906138b8565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683828151811061127f5761127e61391e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611228565b50505b9250929050565b5f61136b6112da612705565b848460025f6112e7612705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461136691906138b8565b61270c565b6001905092915050565b61137d612705565b73ffffffffffffffffffffffffffffffffffffffff1661139b611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613755565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611451612705565b73ffffffffffffffffffffffffffffffffffffffff1661146f611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613755565b60405180910390fd5b8060188190555050565b6114d93382612b47565b50565b6114e4612705565b73ffffffffffffffffffffffffffffffffffffffff16611502611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613755565b60405180910390fd5b8060248190555050565b61156a612705565b73ffffffffffffffffffffffffffffffffffffffff16611588611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590613755565b60405180910390fd5b8060268190555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611615612705565b73ffffffffffffffffffffffffffffffffffffffff16611633611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168090613755565b60405180910390fd5b8060178190555050565b61169b612705565b73ffffffffffffffffffffffffffffffffffffffff166116b9611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613755565b60405180910390fd5b8060198190555050565b611721612705565b73ffffffffffffffffffffffffffffffffffffffff1661173f611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613755565b60405180910390fd5b80601c8190555050565b6117a7612705565b73ffffffffffffffffffffffffffffffffffffffff166117c5611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461181b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181290613755565b60405180910390fd5b8060238190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611873612705565b73ffffffffffffffffffffffffffffffffffffffff16611891611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90613755565b60405180910390fd5b6118f05f612d15565b565b6118fa612705565b73ffffffffffffffffffffffffffffffffffffffff16611918611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590613755565b60405180910390fd5b8060228190555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866119c991906138b8565b9050818111156119d7578190505b85816119e391906138eb565b93505f5f90505b848110156119fd578060010190506119ea565b505050935093915050565b611a10612705565b73ffffffffffffffffffffffffffffffffffffffff16611a2e611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90613755565b60405180910390fd5b5f60065f6101000a81548160ff021916908315150217905550565b611aa7612705565b73ffffffffffffffffffffffffffffffffffffffff16611ac5611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290613755565b60405180910390fd5b8060278190555050565b60065f9054906101000a900460ff1681565b60085481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b606060058054611b79906137a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba5906137a0565b8015611bf05780601f10611bc757610100808354040283529160200191611bf0565b820191905f5260205f20905b815481529060010190602001808311611bd357829003601f168201915b5050505050905090565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611c4b91906138b8565b905081811115611c59578190505b8581611c6591906138eb565b93505f5f90505b84811015611c7f57806001019050611c6c565b505050935093915050565b611c92612705565b73ffffffffffffffffffffffffffffffffffffffff16611cb0611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90613755565b60405180910390fd5b8060168190555050565b5f5f60025f611d1d612705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce906139bb565b60405180910390fd5b611deb611de2612705565b8585840361270c565b600191505092915050565b611dfe612705565b73ffffffffffffffffffffffffffffffffffffffff16611e1c611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613755565b60405180910390fd5b8060158190555050565b5f611e8f611e88612705565b84846128cf565b6001905092915050565b611ea1612705565b73ffffffffffffffffffffffffffffffffffffffff16611ebf611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c90613755565b60405180910390fd5b8060148190555050565b611f27612705565b73ffffffffffffffffffffffffffffffffffffffff16611f45611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9290613755565b60405180910390fd5b8060218190555050565b80602a8190555050565b611fb7612705565b73ffffffffffffffffffffffffffffffffffffffff16611fd5611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290613755565b60405180910390fd5b80601e8190555050565b60115481565b600f5481565b60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613a23565b60405180910390fd5b6120cb338383612dd6565b5050565b606092915050565b6120df612705565b73ffffffffffffffffffffffffffffffffffffffff166120fd611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a90613755565b60405180910390fd5b8060088190555050565b612165612705565b73ffffffffffffffffffffffffffffffffffffffff16612183611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090613755565b60405180910390fd5b60026008546121e89190613a41565b600881905550565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612294575f5f67ffffffffffffffff8111156122565761225561385e565b5b60405190808252806020026020018201604052801561228957816020015b60608152602001906001900390816122745790505b50925092505061232e565b5f84866122a191906138b8565b9050818111156122bd5781905080866122ba91906138eb565b93505b8367ffffffffffffffff8111156122d7576122d661385e565b5b60405190808252806020026020018201604052801561230a57816020015b60608152602001906001900390816122f55790505b5092505f5f5f90508791505b8282101561232957816001019150612316565b505050505b935093915050565b61233e612705565b73ffffffffffffffffffffffffffffffffffffffff1661235c611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613755565b60405180910390fd5b80602b8190555050565b6123c4612705565b73ffffffffffffffffffffffffffffffffffffffff166123e2611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90613755565b60405180910390fd5b8060288190555050565b61244a612705565b73ffffffffffffffffffffffffffffffffffffffff16612468611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590613755565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612591612705565b73ffffffffffffffffffffffffffffffffffffffff166125af611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc90613755565b60405180910390fd5b80601a8190555050565b612617612705565b73ffffffffffffffffffffffffffffffffffffffff16612635611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461268b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268290613755565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f090613af2565b60405180910390fd5b61270281612d15565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361277a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277190613b80565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df90613c0e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128c291906130df565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293490613c9c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a290613d2a565b60405180910390fd5b6129b6838383612dee565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190613db8565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612aca91906138b8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b2e91906130df565b60405180910390a3612b418484846130c2565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac90613e46565b60405180910390fd5b612bc0825f83612dee565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b90613ed4565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612c9991906138eb565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cfd91906130df565b60405180910390a3612d10835f846130c2565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612e8c5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec290613f3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612fd657612f27611b3d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f925750612f63611b3d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc890613fa4565b60405180910390fd5b6130bd565b60065f9054906101000a900460ff16801561303d5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156130bc576008548161304f84611825565b61305991906138b8565b1115801561307c57506009548161306f84611825565b61307991906138b8565b10155b6130bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b29061400c565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b6130d9816130c7565b82525050565b5f6020820190506130f25f8301846130d0565b92915050565b5f5ffd5b613105816130c7565b811461310f575f5ffd5b50565b5f81359050613120816130fc565b92915050565b5f6020828403121561313b5761313a6130f8565b5b5f61314884828501613112565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61317a82613151565b9050919050565b61318a81613170565b8114613194575f5ffd5b50565b5f813590506131a581613181565b92915050565b5f602082840312156131c0576131bf6130f8565b5b5f6131cd84828501613197565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613218826131d6565b61322281856131e0565b93506132328185602086016131f0565b61323b816131fe565b840191505092915050565b5f6020820190508181035f83015261325e818461320e565b905092915050565b5f5f6040838503121561327c5761327b6130f8565b5b5f61328985828601613197565b925050602061329a85828601613112565b9150509250929050565b5f8115159050919050565b6132b8816132a4565b82525050565b5f6020820190506132d15f8301846132af565b92915050565b5f5f5f606084860312156132ee576132ed6130f8565b5b5f6132fb86828701613197565b935050602061330c86828701613197565b925050604061331d86828701613112565b9150509250925092565b5f60ff82169050919050565b61333c81613327565b82525050565b5f6020820190506133555f830184613333565b92915050565b5f5f60408385031215613371576133706130f8565b5b5f61337e85828601613112565b925050602061338f85828601613112565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133cb81613170565b82525050565b5f6133dc83836133c2565b60208301905092915050565b5f602082019050919050565b5f6133fe82613399565b61340881856133a3565b9350613413836133b3565b805f5b8381101561344357815161342a88826133d1565b9750613435836133e8565b925050600181019050613416565b5085935050505092915050565b5f6040820190506134635f8301856130d0565b818103602083015261347581846133f4565b90509392505050565b613487816132a4565b8114613491575f5ffd5b50565b5f813590506134a28161347e565b92915050565b5f5f604083850312156134be576134bd6130f8565b5b5f6134cb85828601613197565b92505060206134dc85828601613494565b9150509250929050565b6134ef81613170565b82525050565b5f6020820190506135085f8301846134e6565b92915050565b5f5f5f60608486031215613525576135246130f8565b5b5f61353286828701613197565b935050602061354386828701613112565b925050604061355486828701613112565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6135a1826131d6565b6135ab8185613587565b93506135bb8185602086016131f0565b6135c4816131fe565b840191505092915050565b5f6135da8383613597565b905092915050565b5f602082019050919050565b5f6135f88261355e565b6136028185613568565b93508360208202850161361485613578565b805f5b8581101561364f578484038952815161363085826135cf565b945061363b836135e2565b925060208a01995050600181019050613617565b50829750879550505050505092915050565b5f6040820190506136745f8301856130d0565b818103602083015261368681846135ee565b90509392505050565b5f5f604083850312156136a5576136a46130f8565b5b5f6136b285828601613112565b92505060206136c385828601613197565b9150509250929050565b5f5f604083850312156136e3576136e26130f8565b5b5f6136f085828601613197565b925050602061370185828601613197565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61373f6020836131e0565b915061374a8261370b565b602082019050919050565b5f6020820190508181035f83015261376c81613733565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806137b757607f821691505b6020821081036137ca576137c9613773565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61382a6028836131e0565b9150613835826137d0565b604082019050919050565b5f6020820190508181035f8301526138578161381e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138c2826130c7565b91506138cd836130c7565b92508282019050808211156138e5576138e461388b565b5b92915050565b5f6138f5826130c7565b9150613900836130c7565b92508282039050818111156139185761391761388b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6139a56025836131e0565b91506139b08261394b565b604082019050919050565b5f6020820190508181035f8301526139d281613999565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613a0d600f836131e0565b9150613a18826139d9565b602082019050919050565b5f6020820190508181035f830152613a3a81613a01565b9050919050565b5f613a4b826130c7565b9150613a56836130c7565b9250828202613a64816130c7565b91508282048414831517613a7b57613a7a61388b565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613adc6026836131e0565b9150613ae782613a82565b604082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613b6a6024836131e0565b9150613b7582613b10565b604082019050919050565b5f6020820190508181035f830152613b9781613b5e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bf86022836131e0565b9150613c0382613b9e565b604082019050919050565b5f6020820190508181035f830152613c2581613bec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613c866025836131e0565b9150613c9182613c2c565b604082019050919050565b5f6020820190508181035f830152613cb381613c7a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d146023836131e0565b9150613d1f82613cba565b604082019050919050565b5f6020820190508181035f830152613d4181613d08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613da26026836131e0565b9150613dad82613d48565b604082019050919050565b5f6020820190508181035f830152613dcf81613d96565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e306021836131e0565b9150613e3b82613dd6565b604082019050919050565b5f6020820190508181035f830152613e5d81613e24565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ebe6022836131e0565b9150613ec982613e64565b604082019050919050565b5f6020820190508181035f830152613eeb81613eb2565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613f26600b836131e0565b9150613f3182613ef2565b602082019050919050565b5f6020820190508181035f830152613f5381613f1a565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f613f8e6016836131e0565b9150613f9982613f5a565b602082019050919050565b5f6020820190508181035f830152613fbb81613f82565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f613ff66006836131e0565b915061400182613fc2565b602082019050919050565b5f6020820190508181035f83015261402381613fea565b905091905056fea264697066735822122005b10992574c62944be8271a4013c8d11f0850aa3a6ee839f63e3bafa0314f4464736f6c634300081c0033

Deployed Bytecode

0x608060405234801561000f575f5ffd5b50600436106103c3575f3560e01c8063747cfd86116101fd578063acb4b85211610118578063d5a42606116100ab578063dd62ed3e1161007a578063dd62ed3e14610b29578063dde415fa14610b59578063df03165614610b77578063f2fde38b14610b93576103c3565b8063d5a4260614610aa4578063d807e76914610ad5578063dce3296014610af1578063dd0b281e14610b0d576103c3565b8063b4377a3e116100e7578063b4377a3e14610a32578063b4f243a414610a4e578063bc33718214610a7e578063c600483714610a9a576103c3565b8063acb4b852146109be578063ad7cb9ab146109da578063af504def146109f6578063b42dfa0d14610a14576103c3565b806395d89b4111610190578063a836f08d1161015f578063a836f08d1461093a578063a9059cbb14610956578063aad2d20e14610986578063ab70a43f146109a2576103c3565b806395d89b411461089f57806398bafaa3146108bd5780639e3d036f146108ee578063a457c2d71461090a576103c3565b8063860a32ec116101cc578063860a32ec1461082757806389f9a1d3146108455780638da5cb5b146108635780638fdada4a14610881576103c3565b8063747cfd86146107b4578063750e8d10146107d05780637a315a71146108015780637c4f968a1461080b576103c3565b806331963891116102ed57806345d9365c11610280578063660d3dc01161024f578063660d3dc0146107425780636ea1cb181461075e57806370a082311461077a578063715018a6146107aa576103c3565b806345d9365c146106d057806349bd5a5e146106ec5780634ee5b3791461070a57806361603b3d14610726576103c3565b8063404e5129116102bc578063404e51291461066057806341d2c2681461067c57806342966c681461069857806342babd3d146106b4576103c3565b806331963891146105c757806335985bf9146105e35780633860a393146105ff5780633950935114610630576103c3565b806314d64a461161036557806323b872dd1161033457806323b872dd1461053f578063241b877f1461056f5780632d12d34b1461058b578063313ce567146105a9576103c3565b806314d64a46146104b757806316c02129146104d357806318160ddd146105035780631ab99e1214610521576103c3565b8063065c000e116103a1578063065c000e1461043157806306fdde031461044d578063095ea7b31461046b57806312075e8b1461049b576103c3565b8063018a3741146103c7578063027b4d7f146103e55780630568e65e14610401575b5f5ffd5b6103cf610baf565b6040516103dc91906130df565b60405180910390f35b6103ff60048036038101906103fa9190613126565b610bb5565b005b61041b600480360381019061041691906131ab565b610c3b565b60405161042891906130df565b60405180910390f35b61044b60048036038101906104469190613126565b610c50565b005b610455610cd6565b6040516104629190613246565b60405180910390f35b61048560048036038101906104809190613266565b610d66565b60405161049291906132be565b60405180910390f35b6104b560048036038101906104b09190613126565b610d83565b005b6104d160048036038101906104cc9190613126565b610e09565b005b6104ed60048036038101906104e891906131ab565b610e8f565b6040516104fa91906132be565b60405180910390f35b61050b610eac565b60405161051891906130df565b60405180910390f35b610529610eb5565b60405161053691906130df565b60405180910390f35b610559600480360381019061055491906132d7565b610ebb565b60405161056691906132be565b60405180910390f35b61058960048036038101906105849190613126565b610fad565b005b610593611033565b6040516105a091906130df565b60405180910390f35b6105b1611038565b6040516105be9190613342565b60405180910390f35b6105e160048036038101906105dc9190613126565b611040565b005b6105fd60048036038101906105f89190613126565b6110c6565b005b6106196004803603810190610614919061335b565b61114c565b604051610627929190613450565b60405180910390f35b61064a60048036038101906106459190613266565b6112ce565b60405161065791906132be565b60405180910390f35b61067a600480360381019061067591906134a8565b611375565b005b61069660048036038101906106919190613126565b611449565b005b6106b260048036038101906106ad9190613126565b6114cf565b005b6106ce60048036038101906106c99190613126565b6114dc565b005b6106ea60048036038101906106e59190613126565b611562565b005b6106f46115e8565b60405161070191906134f5565b60405180910390f35b610724600480360381019061071f9190613126565b61160d565b005b610740600480360381019061073b9190613126565b611693565b005b61075c60048036038101906107579190613126565b611719565b005b61077860048036038101906107739190613126565b61179f565b005b610794600480360381019061078f91906131ab565b611825565b6040516107a191906130df565b60405180910390f35b6107b261186b565b005b6107ce60048036038101906107c99190613126565b6118f2565b005b6107ea60048036038101906107e5919061350e565b611978565b6040516107f8929190613661565b60405180910390f35b610809611a08565b005b61082560048036038101906108209190613126565b611a9f565b005b61082f611b25565b60405161083c91906132be565b60405180910390f35b61084d611b37565b60405161085a91906130df565b60405180910390f35b61086b611b3d565b60405161087891906134f5565b60405180910390f35b610889611b64565b60405161089691906130df565b60405180910390f35b6108a7611b6a565b6040516108b49190613246565b60405180910390f35b6108d760048036038101906108d2919061350e565b611bfa565b6040516108e5929190613661565b60405180910390f35b61090860048036038101906109039190613126565b611c8a565b005b610924600480360381019061091f9190613266565b611d10565b60405161093191906132be565b60405180910390f35b610954600480360381019061094f9190613126565b611df6565b005b610970600480360381019061096b9190613266565b611e7c565b60405161097d91906132be565b60405180910390f35b6109a0600480360381019061099b9190613126565b611e99565b005b6109bc60048036038101906109b79190613126565b611f1f565b005b6109d860048036038101906109d39190613126565b611fa5565b005b6109f460048036038101906109ef9190613126565b611faf565b005b6109fe612035565b604051610a0b91906130df565b60405180910390f35b610a1c61203b565b604051610a2991906130df565b60405180910390f35b610a4c6004803603810190610a47919061368f565b612041565b005b610a686004803603810190610a639190613266565b6120cf565b604051610a759190613246565b60405180910390f35b610a986004803603810190610a939190613126565b6120d7565b005b610aa261215d565b005b610abe6004803603810190610ab9919061350e565b6121f0565b604051610acc929190613661565b60405180910390f35b610aef6004803603810190610aea9190613126565b612336565b005b610b0b6004803603810190610b069190613126565b6123bc565b005b610b276004803603810190610b2291906131ab565b612442565b005b610b436004803603810190610b3e91906136cd565b612501565b604051610b5091906130df565b60405180910390f35b610b61612583565b604051610b6e91906130df565b60405180910390f35b610b916004803603810190610b8c9190613126565b612589565b005b610bad6004803603810190610ba891906131ab565b61260f565b005b600e5481565b610bbd612705565b73ffffffffffffffffffffffffffffffffffffffff16610bdb611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2890613755565b60405180910390fd5b80601b8190555050565b6010602052805f5260405f205f915090505481565b610c58612705565b73ffffffffffffffffffffffffffffffffffffffff16610c76611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613755565b60405180910390fd5b80601d8190555050565b606060048054610ce5906137a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d11906137a0565b8015610d5c5780601f10610d3357610100808354040283529160200191610d5c565b820191905f5260205f20905b815481529060010190602001808311610d3f57829003601f168201915b5050505050905090565b5f610d79610d72612705565b848461270c565b6001905092915050565b610d8b612705565b73ffffffffffffffffffffffffffffffffffffffff16610da9611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df690613755565b60405180910390fd5b8060208190555050565b610e11612705565b73ffffffffffffffffffffffffffffffffffffffff16610e2f611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90613755565b60405180910390fd5b8060298190555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60095481565b5f610ec78484846128cf565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f0e612705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490613840565b60405180910390fd5b610fa185610f99612705565b85840361270c565b60019150509392505050565b610fb5612705565b73ffffffffffffffffffffffffffffffffffffffff16610fd3611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090613755565b60405180910390fd5b8060138190555050565b600181565b5f6012905090565b611048612705565b73ffffffffffffffffffffffffffffffffffffffff16611066611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390613755565b60405180910390fd5b8060258190555050565b6110ce612705565b73ffffffffffffffffffffffffffffffffffffffff166110ec611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990613755565b60405180910390fd5b80601f8190555050565b5f6060600e5484106111ab575f5f67ffffffffffffffff8111156111735761117261385e565b5b6040519080825280602002602001820160405280156111a15781602001602082028036833780820191505090505b50915091506112c7565b5f83856111b891906138b8565b9050600e548111156111ca57600e5490505b84816111d691906138eb565b92508267ffffffffffffffff8111156111f2576111f161385e565b5b6040519080825280602002602001820160405280156112205781602001602082028036833780820191505090505b5091505f8590505b838110156112c457600c5f828861123f91906138b8565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683828151811061127f5761127e61391e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611228565b50505b9250929050565b5f61136b6112da612705565b848460025f6112e7612705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461136691906138b8565b61270c565b6001905092915050565b61137d612705565b73ffffffffffffffffffffffffffffffffffffffff1661139b611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613755565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611451612705565b73ffffffffffffffffffffffffffffffffffffffff1661146f611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613755565b60405180910390fd5b8060188190555050565b6114d93382612b47565b50565b6114e4612705565b73ffffffffffffffffffffffffffffffffffffffff16611502611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613755565b60405180910390fd5b8060248190555050565b61156a612705565b73ffffffffffffffffffffffffffffffffffffffff16611588611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590613755565b60405180910390fd5b8060268190555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611615612705565b73ffffffffffffffffffffffffffffffffffffffff16611633611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168090613755565b60405180910390fd5b8060178190555050565b61169b612705565b73ffffffffffffffffffffffffffffffffffffffff166116b9611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613755565b60405180910390fd5b8060198190555050565b611721612705565b73ffffffffffffffffffffffffffffffffffffffff1661173f611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613755565b60405180910390fd5b80601c8190555050565b6117a7612705565b73ffffffffffffffffffffffffffffffffffffffff166117c5611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461181b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181290613755565b60405180910390fd5b8060238190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611873612705565b73ffffffffffffffffffffffffffffffffffffffff16611891611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90613755565b60405180910390fd5b6118f05f612d15565b565b6118fa612705565b73ffffffffffffffffffffffffffffffffffffffff16611918611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590613755565b60405180910390fd5b8060228190555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866119c991906138b8565b9050818111156119d7578190505b85816119e391906138eb565b93505f5f90505b848110156119fd578060010190506119ea565b505050935093915050565b611a10612705565b73ffffffffffffffffffffffffffffffffffffffff16611a2e611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90613755565b60405180910390fd5b5f60065f6101000a81548160ff021916908315150217905550565b611aa7612705565b73ffffffffffffffffffffffffffffffffffffffff16611ac5611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290613755565b60405180910390fd5b8060278190555050565b60065f9054906101000a900460ff1681565b60085481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b606060058054611b79906137a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba5906137a0565b8015611bf05780601f10611bc757610100808354040283529160200191611bf0565b820191905f5260205f20905b815481529060010190602001808311611bd357829003601f168201915b5050505050905090565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611c4b91906138b8565b905081811115611c59578190505b8581611c6591906138eb565b93505f5f90505b84811015611c7f57806001019050611c6c565b505050935093915050565b611c92612705565b73ffffffffffffffffffffffffffffffffffffffff16611cb0611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90613755565b60405180910390fd5b8060168190555050565b5f5f60025f611d1d612705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce906139bb565b60405180910390fd5b611deb611de2612705565b8585840361270c565b600191505092915050565b611dfe612705565b73ffffffffffffffffffffffffffffffffffffffff16611e1c611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613755565b60405180910390fd5b8060158190555050565b5f611e8f611e88612705565b84846128cf565b6001905092915050565b611ea1612705565b73ffffffffffffffffffffffffffffffffffffffff16611ebf611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c90613755565b60405180910390fd5b8060148190555050565b611f27612705565b73ffffffffffffffffffffffffffffffffffffffff16611f45611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9290613755565b60405180910390fd5b8060218190555050565b80602a8190555050565b611fb7612705565b73ffffffffffffffffffffffffffffffffffffffff16611fd5611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290613755565b60405180910390fd5b80601e8190555050565b60115481565b600f5481565b60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613a23565b60405180910390fd5b6120cb338383612dd6565b5050565b606092915050565b6120df612705565b73ffffffffffffffffffffffffffffffffffffffff166120fd611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a90613755565b60405180910390fd5b8060088190555050565b612165612705565b73ffffffffffffffffffffffffffffffffffffffff16612183611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090613755565b60405180910390fd5b60026008546121e89190613a41565b600881905550565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612294575f5f67ffffffffffffffff8111156122565761225561385e565b5b60405190808252806020026020018201604052801561228957816020015b60608152602001906001900390816122745790505b50925092505061232e565b5f84866122a191906138b8565b9050818111156122bd5781905080866122ba91906138eb565b93505b8367ffffffffffffffff8111156122d7576122d661385e565b5b60405190808252806020026020018201604052801561230a57816020015b60608152602001906001900390816122f55790505b5092505f5f5f90508791505b8282101561232957816001019150612316565b505050505b935093915050565b61233e612705565b73ffffffffffffffffffffffffffffffffffffffff1661235c611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613755565b60405180910390fd5b80602b8190555050565b6123c4612705565b73ffffffffffffffffffffffffffffffffffffffff166123e2611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90613755565b60405180910390fd5b8060288190555050565b61244a612705565b73ffffffffffffffffffffffffffffffffffffffff16612468611b3d565b73ffffffffffffffffffffffffffffffffffffffff16146124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590613755565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612591612705565b73ffffffffffffffffffffffffffffffffffffffff166125af611b3d565b73ffffffffffffffffffffffffffffffffffffffff1614612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc90613755565b60405180910390fd5b80601a8190555050565b612617612705565b73ffffffffffffffffffffffffffffffffffffffff16612635611b3d565b73ffffffffffffffffffffffffffffffffffffffff161461268b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268290613755565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f090613af2565b60405180910390fd5b61270281612d15565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361277a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277190613b80565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df90613c0e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128c291906130df565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293490613c9c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a290613d2a565b60405180910390fd5b6129b6838383612dee565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190613db8565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612aca91906138b8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b2e91906130df565b60405180910390a3612b418484846130c2565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac90613e46565b60405180910390fd5b612bc0825f83612dee565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b90613ed4565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612c9991906138eb565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cfd91906130df565b60405180910390a3612d10835f846130c2565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612e8c5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec290613f3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612fd657612f27611b3d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f925750612f63611b3d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc890613fa4565b60405180910390fd5b6130bd565b60065f9054906101000a900460ff16801561303d5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156130bc576008548161304f84611825565b61305991906138b8565b1115801561307c57506009548161306f84611825565b61307991906138b8565b10155b6130bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b29061400c565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b6130d9816130c7565b82525050565b5f6020820190506130f25f8301846130d0565b92915050565b5f5ffd5b613105816130c7565b811461310f575f5ffd5b50565b5f81359050613120816130fc565b92915050565b5f6020828403121561313b5761313a6130f8565b5b5f61314884828501613112565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61317a82613151565b9050919050565b61318a81613170565b8114613194575f5ffd5b50565b5f813590506131a581613181565b92915050565b5f602082840312156131c0576131bf6130f8565b5b5f6131cd84828501613197565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613218826131d6565b61322281856131e0565b93506132328185602086016131f0565b61323b816131fe565b840191505092915050565b5f6020820190508181035f83015261325e818461320e565b905092915050565b5f5f6040838503121561327c5761327b6130f8565b5b5f61328985828601613197565b925050602061329a85828601613112565b9150509250929050565b5f8115159050919050565b6132b8816132a4565b82525050565b5f6020820190506132d15f8301846132af565b92915050565b5f5f5f606084860312156132ee576132ed6130f8565b5b5f6132fb86828701613197565b935050602061330c86828701613197565b925050604061331d86828701613112565b9150509250925092565b5f60ff82169050919050565b61333c81613327565b82525050565b5f6020820190506133555f830184613333565b92915050565b5f5f60408385031215613371576133706130f8565b5b5f61337e85828601613112565b925050602061338f85828601613112565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133cb81613170565b82525050565b5f6133dc83836133c2565b60208301905092915050565b5f602082019050919050565b5f6133fe82613399565b61340881856133a3565b9350613413836133b3565b805f5b8381101561344357815161342a88826133d1565b9750613435836133e8565b925050600181019050613416565b5085935050505092915050565b5f6040820190506134635f8301856130d0565b818103602083015261347581846133f4565b90509392505050565b613487816132a4565b8114613491575f5ffd5b50565b5f813590506134a28161347e565b92915050565b5f5f604083850312156134be576134bd6130f8565b5b5f6134cb85828601613197565b92505060206134dc85828601613494565b9150509250929050565b6134ef81613170565b82525050565b5f6020820190506135085f8301846134e6565b92915050565b5f5f5f60608486031215613525576135246130f8565b5b5f61353286828701613197565b935050602061354386828701613112565b925050604061355486828701613112565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6135a1826131d6565b6135ab8185613587565b93506135bb8185602086016131f0565b6135c4816131fe565b840191505092915050565b5f6135da8383613597565b905092915050565b5f602082019050919050565b5f6135f88261355e565b6136028185613568565b93508360208202850161361485613578565b805f5b8581101561364f578484038952815161363085826135cf565b945061363b836135e2565b925060208a01995050600181019050613617565b50829750879550505050505092915050565b5f6040820190506136745f8301856130d0565b818103602083015261368681846135ee565b90509392505050565b5f5f604083850312156136a5576136a46130f8565b5b5f6136b285828601613112565b92505060206136c385828601613197565b9150509250929050565b5f5f604083850312156136e3576136e26130f8565b5b5f6136f085828601613197565b925050602061370185828601613197565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61373f6020836131e0565b915061374a8261370b565b602082019050919050565b5f6020820190508181035f83015261376c81613733565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806137b757607f821691505b6020821081036137ca576137c9613773565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61382a6028836131e0565b9150613835826137d0565b604082019050919050565b5f6020820190508181035f8301526138578161381e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138c2826130c7565b91506138cd836130c7565b92508282019050808211156138e5576138e461388b565b5b92915050565b5f6138f5826130c7565b9150613900836130c7565b92508282039050818111156139185761391761388b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6139a56025836131e0565b91506139b08261394b565b604082019050919050565b5f6020820190508181035f8301526139d281613999565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613a0d600f836131e0565b9150613a18826139d9565b602082019050919050565b5f6020820190508181035f830152613a3a81613a01565b9050919050565b5f613a4b826130c7565b9150613a56836130c7565b9250828202613a64816130c7565b91508282048414831517613a7b57613a7a61388b565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613adc6026836131e0565b9150613ae782613a82565b604082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613b6a6024836131e0565b9150613b7582613b10565b604082019050919050565b5f6020820190508181035f830152613b9781613b5e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bf86022836131e0565b9150613c0382613b9e565b604082019050919050565b5f6020820190508181035f830152613c2581613bec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613c866025836131e0565b9150613c9182613c2c565b604082019050919050565b5f6020820190508181035f830152613cb381613c7a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d146023836131e0565b9150613d1f82613cba565b604082019050919050565b5f6020820190508181035f830152613d4181613d08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613da26026836131e0565b9150613dad82613d48565b604082019050919050565b5f6020820190508181035f830152613dcf81613d96565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e306021836131e0565b9150613e3b82613dd6565b604082019050919050565b5f6020820190508181035f830152613e5d81613e24565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ebe6022836131e0565b9150613ec982613e64565b604082019050919050565b5f6020820190508181035f830152613eeb81613eb2565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613f26600b836131e0565b9150613f3182613ef2565b602082019050919050565b5f6020820190508181035f830152613f5381613f1a565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f613f8e6016836131e0565b9150613f9982613f5a565b602082019050919050565b5f6020820190508181035f830152613fbb81613f82565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f613ff66006836131e0565b915061400182613fc2565b602082019050919050565b5f6020820190508181035f83015261402381613fea565b905091905056fea264697066735822122005b10992574c62944be8271a4013c8d11f0850aa3a6ee839f63e3bafa0314f4464736f6c634300081c0033

Deployed Bytecode Sourcemap

19522:10880:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21260:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28847:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22731:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29036:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9491:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11658:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29312:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30106:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19739:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10611:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19662:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12309:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28065:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22557:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10453:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29774:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29217:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21294:543;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13210:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19893:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28575:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21058:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29679:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29849;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19704:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28453:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28658:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28953:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29604:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10782:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2892:103;;;:::i;:::-;;29490:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26424:470;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20150:77;;;:::i;:::-;;29944:67;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19561:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19620:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2241:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22596:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9710:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25950:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28354:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13928:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28259:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11122:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28184:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29391:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30209:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29142:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22782:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22648:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23037:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25805:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20235:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20377:98;;;:::i;:::-;;26902:590;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;30322:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30015:87;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20036:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11360:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22687:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28764:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3150:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21260:25;;;;:::o;28847:102::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28931:14:::1;28915:13;:30;;;;28847:102:::0;:::o;22731:44::-;;;;;;;;;;;;;;;;;:::o;29036:102::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29120:14:::1;29104:13;:30;;;;29036:102:::0;:::o;9491:100::-;9545:13;9578:5;9571:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9491:100;:::o;11658:169::-;11741:4;11758:39;11767:12;:10;:12::i;:::-;11781:7;11790:6;11758:8;:39::i;:::-;11815:4;11808:11;;11658:169;;;;:::o;29312:75::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29377:6:::1;29369:5;:14;;;;29312:75:::0;:::o;30106:99::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30189:12:::1;30175:11;:26;;;;30106:99:::0;:::o;19739:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10611:108::-;10672:7;10699:12;;10692:19;;10611:108;:::o;19662:35::-;;;;:::o;12309:492::-;12449:4;12466:36;12476:6;12484:9;12495:6;12466:9;:36::i;:::-;12515:24;12542:11;:19;12554:6;12542:19;;;;;;;;;;;;;;;:33;12562:12;:10;:12::i;:::-;12542:33;;;;;;;;;;;;;;;;12515:60;;12614:6;12594:16;:26;;12586:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12701:57;12710:6;12718:12;:10;:12::i;:::-;12751:6;12732:16;:25;12701:8;:57::i;:::-;12789:4;12782:11;;;12309:492;;;;;:::o;28065:115::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28159:17:::1;28140:16;:36;;;;28065:115:::0;:::o;22557:32::-;22588:1;22557:32;:::o;10453:93::-;10511:5;10536:2;10529:9;;10453:93;:::o;29774:71::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29836:5:::1;29829:4;:12;;;;29774:71:::0;:::o;29217:91::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29293:11:::1;29280:10;:24;;;;29217:91:::0;:::o;21294:543::-;21392:15;21409:25;21460:13;;21451:5;:22;21447:56;;21483:1;21500;21486:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21475:28;;;;;;21447:56;21516:8;21535:5;21527;:13;;;;:::i;:::-;21516:24;;21561:13;;21555:3;:19;21551:71;;;21597:13;;21591:19;;21551:71;21651:5;21645:3;:11;;;;:::i;:::-;21632:24;;21694:10;21680:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21669:36;;21716:6;21742:5;21738:9;;21733:97;21753:10;21749:1;:14;21733:97;;;21799:8;:19;21816:1;21808:5;:9;;;;:::i;:::-;21799:19;;;;;;;;;;;;;;;;;;;;;21785:8;21794:1;21785:11;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21765:3;;;;;21733:97;;;21436:401;;21294:543;;;;;;:::o;13210:215::-;13298:4;13315:80;13324:12;:10;:12::i;:::-;13338:7;13384:10;13347:11;:25;13359:12;:10;:12::i;:::-;13347:25;;;;;;;;;;;;;;;:34;13373:7;13347:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13315:8;:80::i;:::-;13413:4;13406:11;;13210:215;;;;:::o;19893:135::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20005:15:::1;19982:10;:20;19993:8;19982:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19893:135:::0;;:::o;28575:79::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28642:8:::1;28632:7;:18;;;;28575:79:::0;:::o;21058:81::-;21107:24;21113:10;21125:5;21107;:24::i;:::-;21058:81;:::o;29679:91::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29755:11:::1;29742:10;:24;;;;29679:91:::0;:::o;29849:::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29925:11:::1;29912:10;:24;;;;29849:91:::0;:::o;19704:28::-;;;;;;;;;;;;;:::o;28453:118::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28549:18:::1;28529:17;:38;;;;28453:118:::0;:::o;28658:102::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28742:14:::1;28726:13;:30;;;;28658:102:::0;:::o;28953:79::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29020:8:::1;29010:7;:18;;;;28953:79:::0;:::o;29604:71::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29666:5:::1;29659:4;:12;;;;29604:71:::0;:::o;10782:127::-;10856:7;10883:9;:18;10893:7;10883:18;;;;;;;;;;;;;;;;10876:25;;10782:127;;;:::o;2892:103::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:30:::1;2984:1;2957:18;:30::i;:::-;2892:103::o:0;29490:110::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29580:16:::1;29562:15;:34;;;;29490:110:::0;:::o;26424:470::-;26549:15;26566:24;26603:18;26624:6;:15;26631:7;26624:15;;;;;;;;;;;;;;;;26603:36;;26657:8;26676:5;26668;:13;;;;:::i;:::-;26657:24;;26702:13;26696:3;:19;26692:71;;;26738:13;26732:19;;26692:71;26792:5;26786:3;:11;;;;:::i;:::-;26773:24;;26818:6;26844:1;26840:5;;26835:52;26851:10;26847:1;:14;26835:52;;;26863:3;;;;;26835:52;;;26592:302;;;26424:470;;;;;;:::o;20150:77::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20214:5:::1;20204:7;;:15;;;;;;;;;;;;;;;;;;20150:77::o:0;29944:67::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30003:4:::1;29997:3;:10;;;;29944:67:::0;:::o;19561:26::-;;;;;;;;;;;;;:::o;19620:35::-;;;;:::o;2241:87::-;2287:7;2314:6;;;;;;;;;;;2307:13;;2241:87;:::o;22596:45::-;22546:4;22596:45;:::o;9710:104::-;9766:13;9799:7;9792:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9710:104;:::o;25950:466::-;26076:15;26093:24;26130:18;26151:6;:15;26158:7;26151:15;;;;;;;;;;;;;;;;26130:36;;26182:8;26201:5;26193;:13;;;;:::i;:::-;26182:24;;26227:13;26221:3;:19;26217:71;;;26263:13;26257:19;;26217:71;26317:5;26311:3;:11;;;;:::i;:::-;26298:24;;26341:6;26367:1;26363:5;;26358:51;26374:10;26370:1;:14;26358:51;;;26386:3;;;;;26358:51;;;26119:297;;;25950:466;;;;;;:::o;28354:95::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28433:12:::1;28419:11;:26;;;;28354:95:::0;:::o;13928:413::-;14021:4;14038:24;14065:11;:25;14077:12;:10;:12::i;:::-;14065:25;;;;;;;;;;;;;;;:34;14091:7;14065:34;;;;;;;;;;;;;;;;14038:61;;14138:15;14118:16;:35;;14110:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14231:67;14240:12;:10;:12::i;:::-;14254:7;14282:15;14263:16;:34;14231:8;:67::i;:::-;14329:4;14322:11;;;13928:413;;;;:::o;28259:91::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28335:11:::1;28322:10;:24;;;;28259:91:::0;:::o;11122:175::-;11208:4;11225:42;11235:12;:10;:12::i;:::-;11249:9;11260:6;11225:9;:42::i;:::-;11285:4;11278:11;;11122:175;;;;:::o;28184:71::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28246:5:::1;28239:4;:12;;;;28184:71:::0;:::o;29391:95::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29470:12:::1;29456:11;:26;;;;29391:95:::0;:::o;30209:109::-;30296:18;30276:17;:38;;;;30209:109;:::o;29142:71::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29204:5:::1;29197:4;:12;;;;29142:71:::0;:::o;22782:29::-;;;;:::o;22648:32::-;;;;:::o;23037:213::-;23138:6;:18;23145:10;23138:18;;;;;;;;;;;;;;;;23130:5;:26;23122:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23187:55;23220:10;23232:5;23239:2;23187:32;:55::i;:::-;23037:213;;:::o;25805:137::-;25909:13;25805:137;;;;:::o;20235:134::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20335:17:::1;20316:16;:36;;;;20235:134:::0;:::o;20377:98::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20466:1:::1;20447:16;;:20;;;;:::i;:::-;20428:16;:39;;;;20377:98::o:0;26902:590::-;27026:15;27043:24;27080:18;27101:6;:15;27108:7;27101:15;;;;;;;;;;;;;;;;27080:36;;27140:13;27131:5;:22;27127:55;;27163:1;27179;27166:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27155:27;;;;;;;27127:55;27195:8;27214:5;27206;:13;;;;:::i;:::-;27195:24;;27240:13;27234:3;:19;27230:110;;;27276:13;27270:19;;27325:3;27317:5;:11;;;;:::i;:::-;27304:24;;27230:110;27376:10;27363:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27352:35;;27398:6;27415;27424:1;27415:10;;27445:5;27441:9;;27436:49;27456:3;27452:1;:7;27436:49;;;27461:3;;;;;27436:49;;;27069:423;;;;26902:590;;;;;;;:::o;30322:71::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30384:5:::1;30377:4;:12;;;;30322:71:::0;:::o;30015:87::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30088:10:::1;30076:9;:22;;;;30015:87:::0;:::o;20036:106::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20120:14:::1;20104:13;;:30;;;;;;;;;;;;;;;;;;20036:106:::0;:::o;11360:151::-;11449:7;11476:11;:18;11488:5;11476:18;;;;;;;;;;;;;;;:27;11495:7;11476:27;;;;;;;;;;;;;;;;11469:34;;11360:151;;;;:::o;22687:37::-;22720:4;22687:37;:::o;28764:79::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28831:8:::1;28821:7;:18;;;;28764:79:::0;:::o;3150:201::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3259:1:::1;3239:22;;:8;:22;;::::0;3231:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3315:28;3334:8;3315:18;:28::i;:::-;3150:201:::0;:::o;959:98::-;1012:7;1039:10;1032:17;;959:98;:::o;17612:380::-;17765:1;17748:19;;:5;:19;;;17740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17846:1;17827:21;;:7;:21;;;17819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17930:6;17900:11;:18;17912:5;17900:18;;;;;;;;;;;;;;;:27;17919:7;17900:27;;;;;;;;;;;;;;;:36;;;;17968:7;17952:32;;17961:5;17952:32;;;17977:6;17952:32;;;;;;:::i;:::-;;;;;;;;17612:380;;;:::o;14831:733::-;14989:1;14971:20;;:6;:20;;;14963:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15073:1;15052:23;;:9;:23;;;15044:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15128:47;15149:6;15157:9;15168:6;15128:20;:47::i;:::-;15188:21;15212:9;:17;15222:6;15212:17;;;;;;;;;;;;;;;;15188:41;;15265:6;15248:13;:23;;15240:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15386:6;15370:13;:22;15350:9;:17;15360:6;15350:17;;;;;;;;;;;;;;;:42;;;;15438:6;15414:9;:20;15424:9;15414:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15479:9;15462:35;;15471:6;15462:35;;;15490:6;15462:35;;;;;;:::i;:::-;;;;;;;;15510:46;15530:6;15538:9;15549:6;15510:19;:46::i;:::-;14952:612;14831:733;;;:::o;16583:591::-;16686:1;16667:21;;:7;:21;;;16659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16739:49;16760:7;16777:1;16781:6;16739:20;:49::i;:::-;16801:22;16826:9;:18;16836:7;16826:18;;;;;;;;;;;;;;;;16801:43;;16881:6;16863:14;:24;;16855:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17000:6;16983:14;:23;16962:9;:18;16972:7;16962:18;;;;;;;;;;;;;;;:44;;;;17044:6;17028:12;;:22;;;;;;;:::i;:::-;;;;;;;;17094:1;17068:37;;17077:7;17068:37;;;17098:6;17068:37;;;;;;:::i;:::-;;;;;;;;17118:48;17138:7;17155:1;17159:6;17118:19;:48::i;:::-;16648:526;16583:591;;:::o;3511:191::-;3585:16;3604:6;;;;;;;;;;;3585:25;;3630:8;3621:6;;:17;;;;;;;;;;;;;;;;;;3685:8;3654:40;;3675:8;3654:40;;;;;;;;;;;;3574:128;3511:191;:::o;22851:178::-;22987:19;:24;;;;;;;;;;;;;;22976:53;22851:178;;;:::o;20483:567::-;20635:10;:14;20646:2;20635:14;;;;;;;;;;;;;;;;;;;;;;;;;20634:15;:36;;;;;20654:10;:16;20665:4;20654:16;;;;;;;;;;;;;;;;;;;;;;;;;20653:17;20634:36;20626:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20728:1;20703:27;;:13;;;;;;;;;;;:27;;;20699:148;;20763:7;:5;:7::i;:::-;20755:15;;:4;:15;;;:32;;;;20780:7;:5;:7::i;:::-;20774:13;;:2;:13;;;20755:32;20747:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20829:7;;20699:148;20863:7;;;;;;;;;;;:32;;;;;20882:13;;;;;;;;;;;20874:21;;:4;:21;;;20863:32;20859:184;;;20952:16;;20942:6;20920:19;20936:2;20920:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;21004:16;;20994:6;20972:19;20988:2;20972:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20920:100;20912:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20859:184;20483:567;;;;:::o;19321:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:99::-;2271:6;2305:5;2299:12;2289:22;;2219:99;;;:::o;2324:169::-;2408:11;2442:6;2437:3;2430:19;2482:4;2477:3;2473:14;2458:29;;2324:169;;;;:::o;2499:139::-;2588:6;2583:3;2578;2572:23;2629:1;2620:6;2615:3;2611:16;2604:27;2499:139;;;:::o;2644:102::-;2685:6;2736:2;2732:7;2727:2;2720:5;2716:14;2712:28;2702:38;;2644:102;;;:::o;2752:377::-;2840:3;2868:39;2901:5;2868:39;:::i;:::-;2923:71;2987:6;2982:3;2923:71;:::i;:::-;2916:78;;3003:65;3061:6;3056:3;3049:4;3042:5;3038:16;3003:65;:::i;:::-;3093:29;3115:6;3093:29;:::i;:::-;3088:3;3084:39;3077:46;;2844:285;2752:377;;;;:::o;3135:313::-;3248:4;3286:2;3275:9;3271:18;3263:26;;3335:9;3329:4;3325:20;3321:1;3310:9;3306:17;3299:47;3363:78;3436:4;3427:6;3363:78;:::i;:::-;3355:86;;3135:313;;;;:::o;3454:474::-;3522:6;3530;3579:2;3567:9;3558:7;3554:23;3550:32;3547:119;;;3585:79;;:::i;:::-;3547:119;3705:1;3730:53;3775:7;3766:6;3755:9;3751:22;3730:53;:::i;:::-;3720:63;;3676:117;3832:2;3858:53;3903:7;3894:6;3883:9;3879:22;3858:53;:::i;:::-;3848:63;;3803:118;3454:474;;;;;:::o;3934:90::-;3968:7;4011:5;4004:13;3997:21;3986:32;;3934:90;;;:::o;4030:109::-;4111:21;4126:5;4111:21;:::i;:::-;4106:3;4099:34;4030:109;;:::o;4145:210::-;4232:4;4270:2;4259:9;4255:18;4247:26;;4283:65;4345:1;4334:9;4330:17;4321:6;4283:65;:::i;:::-;4145:210;;;;:::o;4361:619::-;4438:6;4446;4454;4503:2;4491:9;4482:7;4478:23;4474:32;4471:119;;;4509:79;;:::i;:::-;4471:119;4629:1;4654:53;4699:7;4690:6;4679:9;4675:22;4654:53;:::i;:::-;4644:63;;4600:117;4756:2;4782:53;4827:7;4818:6;4807:9;4803:22;4782:53;:::i;:::-;4772:63;;4727:118;4884:2;4910:53;4955:7;4946:6;4935:9;4931:22;4910:53;:::i;:::-;4900:63;;4855:118;4361:619;;;;;:::o;4986:86::-;5021:7;5061:4;5054:5;5050:16;5039:27;;4986:86;;;:::o;5078:112::-;5161:22;5177:5;5161:22;:::i;:::-;5156:3;5149:35;5078:112;;:::o;5196:214::-;5285:4;5323:2;5312:9;5308:18;5300:26;;5336:67;5400:1;5389:9;5385:17;5376:6;5336:67;:::i;:::-;5196:214;;;;:::o;5416:474::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5765:118;5416:474;;;;;:::o;5896:114::-;5963:6;5997:5;5991:12;5981:22;;5896:114;;;:::o;6016:184::-;6115:11;6149:6;6144:3;6137:19;6189:4;6184:3;6180:14;6165:29;;6016:184;;;;:::o;6206:132::-;6273:4;6296:3;6288:11;;6326:4;6321:3;6317:14;6309:22;;6206:132;;;:::o;6344:108::-;6421:24;6439:5;6421:24;:::i;:::-;6416:3;6409:37;6344:108;;:::o;6458:179::-;6527:10;6548:46;6590:3;6582:6;6548:46;:::i;:::-;6626:4;6621:3;6617:14;6603:28;;6458:179;;;;:::o;6643:113::-;6713:4;6745;6740:3;6736:14;6728:22;;6643:113;;;:::o;6792:732::-;6911:3;6940:54;6988:5;6940:54;:::i;:::-;7010:86;7089:6;7084:3;7010:86;:::i;:::-;7003:93;;7120:56;7170:5;7120:56;:::i;:::-;7199:7;7230:1;7215:284;7240:6;7237:1;7234:13;7215:284;;;7316:6;7310:13;7343:63;7402:3;7387:13;7343:63;:::i;:::-;7336:70;;7429:60;7482:6;7429:60;:::i;:::-;7419:70;;7275:224;7262:1;7259;7255:9;7250:14;;7215:284;;;7219:14;7515:3;7508:10;;6916:608;;;6792:732;;;;:::o;7530:483::-;7701:4;7739:2;7728:9;7724:18;7716:26;;7752:71;7820:1;7809:9;7805:17;7796:6;7752:71;:::i;:::-;7870:9;7864:4;7860:20;7855:2;7844:9;7840:18;7833:48;7898:108;8001:4;7992:6;7898:108;:::i;:::-;7890:116;;7530:483;;;;;:::o;8019:116::-;8089:21;8104:5;8089:21;:::i;:::-;8082:5;8079:32;8069:60;;8125:1;8122;8115:12;8069:60;8019:116;:::o;8141:133::-;8184:5;8222:6;8209:20;8200:29;;8238:30;8262:5;8238:30;:::i;:::-;8141:133;;;;:::o;8280:468::-;8345:6;8353;8402:2;8390:9;8381:7;8377:23;8373:32;8370:119;;;8408:79;;:::i;:::-;8370:119;8528:1;8553:53;8598:7;8589:6;8578:9;8574:22;8553:53;:::i;:::-;8543:63;;8499:117;8655:2;8681:50;8723:7;8714:6;8703:9;8699:22;8681:50;:::i;:::-;8671:60;;8626:115;8280:468;;;;;:::o;8754:118::-;8841:24;8859:5;8841:24;:::i;:::-;8836:3;8829:37;8754:118;;:::o;8878:222::-;8971:4;9009:2;8998:9;8994:18;8986:26;;9022:71;9090:1;9079:9;9075:17;9066:6;9022:71;:::i;:::-;8878:222;;;;:::o;9106:619::-;9183:6;9191;9199;9248:2;9236:9;9227:7;9223:23;9219:32;9216:119;;;9254:79;;:::i;:::-;9216:119;9374:1;9399:53;9444:7;9435:6;9424:9;9420:22;9399:53;:::i;:::-;9389:63;;9345:117;9501:2;9527:53;9572:7;9563:6;9552:9;9548:22;9527:53;:::i;:::-;9517:63;;9472:118;9629:2;9655:53;9700:7;9691:6;9680:9;9676:22;9655:53;:::i;:::-;9645:63;;9600:118;9106:619;;;;;:::o;9731:124::-;9808:6;9842:5;9836:12;9826:22;;9731:124;;;:::o;9861:194::-;9970:11;10004:6;9999:3;9992:19;10044:4;10039:3;10035:14;10020:29;;9861:194;;;;:::o;10061:142::-;10138:4;10161:3;10153:11;;10191:4;10186:3;10182:14;10174:22;;10061:142;;;:::o;10209:159::-;10283:11;10317:6;10312:3;10305:19;10357:4;10352:3;10348:14;10333:29;;10209:159;;;;:::o;10374:357::-;10452:3;10480:39;10513:5;10480:39;:::i;:::-;10535:61;10589:6;10584:3;10535:61;:::i;:::-;10528:68;;10605:65;10663:6;10658:3;10651:4;10644:5;10640:16;10605:65;:::i;:::-;10695:29;10717:6;10695:29;:::i;:::-;10690:3;10686:39;10679:46;;10456:275;10374:357;;;;:::o;10737:196::-;10826:10;10861:66;10923:3;10915:6;10861:66;:::i;:::-;10847:80;;10737:196;;;;:::o;10939:123::-;11019:4;11051;11046:3;11042:14;11034:22;;10939:123;;;:::o;11096:991::-;11235:3;11264:64;11322:5;11264:64;:::i;:::-;11344:96;11433:6;11428:3;11344:96;:::i;:::-;11337:103;;11466:3;11511:4;11503:6;11499:17;11494:3;11490:27;11541:66;11601:5;11541:66;:::i;:::-;11630:7;11661:1;11646:396;11671:6;11668:1;11665:13;11646:396;;;11742:9;11736:4;11732:20;11727:3;11720:33;11793:6;11787:13;11821:84;11900:4;11885:13;11821:84;:::i;:::-;11813:92;;11928:70;11991:6;11928:70;:::i;:::-;11918:80;;12027:4;12022:3;12018:14;12011:21;;11706:336;11693:1;11690;11686:9;11681:14;;11646:396;;;11650:14;12058:4;12051:11;;12078:3;12071:10;;11240:847;;;;;11096:991;;;;:::o;12093:523::-;12284:4;12322:2;12311:9;12307:18;12299:26;;12335:71;12403:1;12392:9;12388:17;12379:6;12335:71;:::i;:::-;12453:9;12447:4;12443:20;12438:2;12427:9;12423:18;12416:48;12481:128;12604:4;12595:6;12481:128;:::i;:::-;12473:136;;12093:523;;;;;:::o;12622:474::-;12690:6;12698;12747:2;12735:9;12726:7;12722:23;12718:32;12715:119;;;12753:79;;:::i;:::-;12715:119;12873:1;12898:53;12943:7;12934:6;12923:9;12919:22;12898:53;:::i;:::-;12888:63;;12844:117;13000:2;13026:53;13071:7;13062:6;13051:9;13047:22;13026:53;:::i;:::-;13016:63;;12971:118;12622:474;;;;;:::o;13102:::-;13170:6;13178;13227:2;13215:9;13206:7;13202:23;13198:32;13195:119;;;13233:79;;:::i;:::-;13195:119;13353:1;13378:53;13423:7;13414:6;13403:9;13399:22;13378:53;:::i;:::-;13368:63;;13324:117;13480:2;13506:53;13551:7;13542:6;13531:9;13527:22;13506:53;:::i;:::-;13496:63;;13451:118;13102:474;;;;;:::o;13582:182::-;13722:34;13718:1;13710:6;13706:14;13699:58;13582:182;:::o;13770:366::-;13912:3;13933:67;13997:2;13992:3;13933:67;:::i;:::-;13926:74;;14009:93;14098:3;14009:93;:::i;:::-;14127:2;14122:3;14118:12;14111:19;;13770:366;;;:::o;14142:419::-;14308:4;14346:2;14335:9;14331:18;14323:26;;14395:9;14389:4;14385:20;14381:1;14370:9;14366:17;14359:47;14423:131;14549:4;14423:131;:::i;:::-;14415:139;;14142:419;;;:::o;14567:180::-;14615:77;14612:1;14605:88;14712:4;14709:1;14702:15;14736:4;14733:1;14726:15;14753:320;14797:6;14834:1;14828:4;14824:12;14814:22;;14881:1;14875:4;14871:12;14902:18;14892:81;;14958:4;14950:6;14946:17;14936:27;;14892:81;15020:2;15012:6;15009:14;14989:18;14986:38;14983:84;;15039:18;;:::i;:::-;14983:84;14804:269;14753:320;;;:::o;15079:227::-;15219:34;15215:1;15207:6;15203:14;15196:58;15288:10;15283:2;15275:6;15271:15;15264:35;15079:227;:::o;15312:366::-;15454:3;15475:67;15539:2;15534:3;15475:67;:::i;:::-;15468:74;;15551:93;15640:3;15551:93;:::i;:::-;15669:2;15664:3;15660:12;15653:19;;15312:366;;;:::o;15684:419::-;15850:4;15888:2;15877:9;15873:18;15865:26;;15937:9;15931:4;15927:20;15923:1;15912:9;15908:17;15901:47;15965:131;16091:4;15965:131;:::i;:::-;15957:139;;15684:419;;;:::o;16109:180::-;16157:77;16154:1;16147:88;16254:4;16251:1;16244:15;16278:4;16275:1;16268:15;16295:180;16343:77;16340:1;16333:88;16440:4;16437:1;16430:15;16464:4;16461:1;16454:15;16481:191;16521:3;16540:20;16558:1;16540:20;:::i;:::-;16535:25;;16574:20;16592:1;16574:20;:::i;:::-;16569:25;;16617:1;16614;16610:9;16603:16;;16638:3;16635:1;16632:10;16629:36;;;16645:18;;:::i;:::-;16629:36;16481:191;;;;:::o;16678:194::-;16718:4;16738:20;16756:1;16738:20;:::i;:::-;16733:25;;16772:20;16790:1;16772:20;:::i;:::-;16767:25;;16816:1;16813;16809:9;16801:17;;16840:1;16834:4;16831:11;16828:37;;;16845:18;;:::i;:::-;16828:37;16678:194;;;;:::o;16878:180::-;16926:77;16923:1;16916:88;17023:4;17020:1;17013:15;17047:4;17044:1;17037:15;17064:224;17204:34;17200:1;17192:6;17188:14;17181:58;17273:7;17268:2;17260:6;17256:15;17249:32;17064:224;:::o;17294:366::-;17436:3;17457:67;17521:2;17516:3;17457:67;:::i;:::-;17450:74;;17533:93;17622:3;17533:93;:::i;:::-;17651:2;17646:3;17642:12;17635:19;;17294:366;;;:::o;17666:419::-;17832:4;17870:2;17859:9;17855:18;17847:26;;17919:9;17913:4;17909:20;17905:1;17894:9;17890:17;17883:47;17947:131;18073:4;17947:131;:::i;:::-;17939:139;;17666:419;;;:::o;18091:165::-;18231:17;18227:1;18219:6;18215:14;18208:41;18091:165;:::o;18262:366::-;18404:3;18425:67;18489:2;18484:3;18425:67;:::i;:::-;18418:74;;18501:93;18590:3;18501:93;:::i;:::-;18619:2;18614:3;18610:12;18603:19;;18262:366;;;:::o;18634:419::-;18800:4;18838:2;18827:9;18823:18;18815:26;;18887:9;18881:4;18877:20;18873:1;18862:9;18858:17;18851:47;18915:131;19041:4;18915:131;:::i;:::-;18907:139;;18634:419;;;:::o;19059:410::-;19099:7;19122:20;19140:1;19122:20;:::i;:::-;19117:25;;19156:20;19174:1;19156:20;:::i;:::-;19151:25;;19211:1;19208;19204:9;19233:30;19251:11;19233:30;:::i;:::-;19222:41;;19412:1;19403:7;19399:15;19396:1;19393:22;19373:1;19366:9;19346:83;19323:139;;19442:18;;:::i;:::-;19323:139;19107:362;19059:410;;;;:::o;19475:225::-;19615:34;19611:1;19603:6;19599:14;19592:58;19684:8;19679:2;19671:6;19667:15;19660:33;19475:225;:::o;19706:366::-;19848:3;19869:67;19933:2;19928:3;19869:67;:::i;:::-;19862:74;;19945:93;20034:3;19945:93;:::i;:::-;20063:2;20058:3;20054:12;20047:19;;19706:366;;;:::o;20078:419::-;20244:4;20282:2;20271:9;20267:18;20259:26;;20331:9;20325:4;20321:20;20317:1;20306:9;20302:17;20295:47;20359:131;20485:4;20359:131;:::i;:::-;20351:139;;20078:419;;;:::o;20503:223::-;20643:34;20639:1;20631:6;20627:14;20620:58;20712:6;20707:2;20699:6;20695:15;20688:31;20503:223;:::o;20732:366::-;20874:3;20895:67;20959:2;20954:3;20895:67;:::i;:::-;20888:74;;20971:93;21060:3;20971:93;:::i;:::-;21089:2;21084:3;21080:12;21073:19;;20732:366;;;:::o;21104:419::-;21270:4;21308:2;21297:9;21293:18;21285:26;;21357:9;21351:4;21347:20;21343:1;21332:9;21328:17;21321:47;21385:131;21511:4;21385:131;:::i;:::-;21377:139;;21104:419;;;:::o;21529:221::-;21669:34;21665:1;21657:6;21653:14;21646:58;21738:4;21733:2;21725:6;21721:15;21714:29;21529:221;:::o;21756:366::-;21898:3;21919:67;21983:2;21978:3;21919:67;:::i;:::-;21912:74;;21995:93;22084:3;21995:93;:::i;:::-;22113:2;22108:3;22104:12;22097:19;;21756:366;;;:::o;22128:419::-;22294:4;22332:2;22321:9;22317:18;22309:26;;22381:9;22375:4;22371:20;22367:1;22356:9;22352:17;22345:47;22409:131;22535:4;22409:131;:::i;:::-;22401:139;;22128:419;;;:::o;22553:224::-;22693:34;22689:1;22681:6;22677:14;22670:58;22762:7;22757:2;22749:6;22745:15;22738:32;22553:224;:::o;22783:366::-;22925:3;22946:67;23010:2;23005:3;22946:67;:::i;:::-;22939:74;;23022:93;23111:3;23022:93;:::i;:::-;23140:2;23135:3;23131:12;23124:19;;22783:366;;;:::o;23155:419::-;23321:4;23359:2;23348:9;23344:18;23336:26;;23408:9;23402:4;23398:20;23394:1;23383:9;23379:17;23372:47;23436:131;23562:4;23436:131;:::i;:::-;23428:139;;23155:419;;;:::o;23580:222::-;23720:34;23716:1;23708:6;23704:14;23697:58;23789:5;23784:2;23776:6;23772:15;23765:30;23580:222;:::o;23808:366::-;23950:3;23971:67;24035:2;24030:3;23971:67;:::i;:::-;23964:74;;24047:93;24136:3;24047:93;:::i;:::-;24165:2;24160:3;24156:12;24149:19;;23808:366;;;:::o;24180:419::-;24346:4;24384:2;24373:9;24369:18;24361:26;;24433:9;24427:4;24423:20;24419:1;24408:9;24404:17;24397:47;24461:131;24587:4;24461:131;:::i;:::-;24453:139;;24180:419;;;:::o;24605:225::-;24745:34;24741:1;24733:6;24729:14;24722:58;24814:8;24809:2;24801:6;24797:15;24790:33;24605:225;:::o;24836:366::-;24978:3;24999:67;25063:2;25058:3;24999:67;:::i;:::-;24992:74;;25075:93;25164:3;25075:93;:::i;:::-;25193:2;25188:3;25184:12;25177:19;;24836:366;;;:::o;25208:419::-;25374:4;25412:2;25401:9;25397:18;25389:26;;25461:9;25455:4;25451:20;25447:1;25436:9;25432:17;25425:47;25489:131;25615:4;25489:131;:::i;:::-;25481:139;;25208:419;;;:::o;25633:220::-;25773:34;25769:1;25761:6;25757:14;25750:58;25842:3;25837:2;25829:6;25825:15;25818:28;25633:220;:::o;25859:366::-;26001:3;26022:67;26086:2;26081:3;26022:67;:::i;:::-;26015:74;;26098:93;26187:3;26098:93;:::i;:::-;26216:2;26211:3;26207:12;26200:19;;25859:366;;;:::o;26231:419::-;26397:4;26435:2;26424:9;26420:18;26412:26;;26484:9;26478:4;26474:20;26470:1;26459:9;26455:17;26448:47;26512:131;26638:4;26512:131;:::i;:::-;26504:139;;26231:419;;;:::o;26656:221::-;26796:34;26792:1;26784:6;26780:14;26773:58;26865:4;26860:2;26852:6;26848:15;26841:29;26656:221;:::o;26883:366::-;27025:3;27046:67;27110:2;27105:3;27046:67;:::i;:::-;27039:74;;27122:93;27211:3;27122:93;:::i;:::-;27240:2;27235:3;27231:12;27224:19;;26883:366;;;:::o;27255:419::-;27421:4;27459:2;27448:9;27444:18;27436:26;;27508:9;27502:4;27498:20;27494:1;27483:9;27479:17;27472:47;27536:131;27662:4;27536:131;:::i;:::-;27528:139;;27255:419;;;:::o;27680:161::-;27820:13;27816:1;27808:6;27804:14;27797:37;27680:161;:::o;27847:366::-;27989:3;28010:67;28074:2;28069:3;28010:67;:::i;:::-;28003:74;;28086:93;28175:3;28086:93;:::i;:::-;28204:2;28199:3;28195:12;28188:19;;27847:366;;;:::o;28219:419::-;28385:4;28423:2;28412:9;28408:18;28400:26;;28472:9;28466:4;28462:20;28458:1;28447:9;28443:17;28436:47;28500:131;28626:4;28500:131;:::i;:::-;28492:139;;28219:419;;;:::o;28644:172::-;28784:24;28780:1;28772:6;28768:14;28761:48;28644:172;:::o;28822:366::-;28964:3;28985:67;29049:2;29044:3;28985:67;:::i;:::-;28978:74;;29061:93;29150:3;29061:93;:::i;:::-;29179:2;29174:3;29170:12;29163:19;;28822:366;;;:::o;29194:419::-;29360:4;29398:2;29387:9;29383:18;29375:26;;29447:9;29441:4;29437:20;29433:1;29422:9;29418:17;29411:47;29475:131;29601:4;29475:131;:::i;:::-;29467:139;;29194:419;;;:::o;29619:156::-;29759:8;29755:1;29747:6;29743:14;29736:32;29619:156;:::o;29781:365::-;29923:3;29944:66;30008:1;30003:3;29944:66;:::i;:::-;29937:73;;30019:93;30108:3;30019:93;:::i;:::-;30137:2;30132:3;30128:12;30121:19;;29781:365;;;:::o;30152:419::-;30318:4;30356:2;30345:9;30341:18;30333:26;;30405:9;30399:4;30395:20;30391:1;30380:9;30376:17;30369:47;30433:131;30559:4;30433:131;:::i;:::-;30425:139;;30152:419;;;:::o

Swarm Source

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