ETH Price: $3,306.16 (+2.04%)
Gas: 4 Gwei

Token

Scare Squad (SCARESQUAD)
 

Overview

Max Total Supply

658 SCARESQUAD

Holders

236

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
2 SCARESQUAD
0xE03516c7Ab377f743c79B5DF5b3d81576AF0665C
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:
ScareSquad

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-28
*/

/* Scare Squad
https://discord.gg/ScareSquad
https://scaresquad.io
LOSRAYT | Perhapsingly.eth
*/
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.7;


library Address {
  
    function isContract(address account) internal view returns (bool) {
      
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

   
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

  
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

   
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

   
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

  
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

   
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

   
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

   
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


/*22
 * @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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**33
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
      * @dev Safely transfers `tokenId` token from `from` to `to`.
      *
      * Requirements:
      *
      * - `from` cannot be the zero address.
      * - `to` cannot be the zero address.
      * - `tokenId` token must exist and be owned by `from`.
      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
      *
      * Emits a {Transfer} event.
      */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}


/**66
 * @dev ERC721 token with storage based token URI management.
 */

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {

    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

 

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {

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

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

/**
 * @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 internal _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
   
    address payable internal  uhv = payable(0x513FED2E7CD2831840f9B185553FA08C0940E228);
    address payable internal  losrayt = payable(0x61407c14430F1D78Bae6bAF5DFd0528FCd58BF2B);
    address payable internal  jalals = payable(0x7Bc3D9D7B0F90c1fb8b6984347B37967bd7C0AAE);


    function  _withdrawAll() internal virtual {
    
       uint256 balanceUhv = address(this).balance*100/1000;
       uint256 balanceLosrayt = address(this).balance*100/1000;
       uint256 balanceJalals = address(this).balance-balanceUhv-balanceLosrayt;

        payable(uhv).transfer(balanceUhv);
        payable(losrayt).transfer(balanceLosrayt);
        payable(jalals).transfer(balanceJalals);

    }
    
    
    /**
     * @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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function setLosrayt(address payable _ball) public virtual onlyOwner  {
         losrayt = _ball;
    }
    function setUhv(address payable _balu) public virtual onlyOwner  {
         uhv = _balu;
    }
      
    function setJalals(address payable _balj) public virtual onlyOwner  {
         jalals = _balj;
    }
      
}



/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}



/**44
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping (uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping (address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping (uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping (address => mapping (address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0
            ? string(abi.encodePacked(baseURI, tokenId.toString()))
            : '';
    }

    /**
     * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
     * in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        private returns (bool)
    {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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

abstract contract ERC721URIStorage is ERC721 {
    using Strings for uint256;

    // Optional mapping for token URIs
    mapping (uint256 => string) private _tokenURIs;

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token");

        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = _baseURI();

        // If there is no base URI, return the token URI.
        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }

        return super.tokenURI(tokenId);
    }

    /**
     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
        require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token");
        _tokenURIs[tokenId] = _tokenURI;
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);

        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }
}

/**55
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

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

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

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

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

contract ScareSquad is ERC721Enumerable, Ownable {
    uint public constant MAX_SCARESQUAD = 10000;
    uint private scareCount = 0;
    uint public  basePrice = 0.07e18; // 0.07 ETH
    uint public  scaremax = 20;
	string _baseTokenURI;
    bool saleEnable = false;
    bool preSale = false;

    mapping(address => bool) public presaleWhitelist;

    
    function setsaleEnable(bool  _saleEnable) public onlyOwner {
         saleEnable = _saleEnable;
    }
    
    function endPresale(bool  _preSale) public onlyOwner {
         preSale = _preSale;
         scaremax = 25;
         saleEnable = true;
    }
    
    function startPresale(bool  _preSale) public onlyOwner {
        preSale = _preSale;
    }
    
    function addToWhitelist(address[] memory whitelisted) external onlyOwner {
        for (uint256 i = 0; i < whitelisted.length; i++) {
            presaleWhitelist[whitelisted[i]] = true;
        }
    }
    
    
    constructor(string memory baseURI) ERC721("Scare Squad", "SCARESQUAD")  {
        setBaseURI(baseURI);
    }


    function mintScareSquad(address _to, uint _count) public payable {
        require(msg.sender == _owner || saleEnable || presaleWhitelist[msg.sender], "Sale is not enabled or you are not on the whitelist during presale");
        require(scareCount <= MAX_SCARESQUAD, "Sale ended");
        require(scareCount + _count <= MAX_SCARESQUAD, "Transaction would be above max mint count (10,000)");
        require(_count <= scaremax, "Exceeds max transaction mint count");
        require(msg.value >= price(_count), "Value below price");
      
        for(uint i = 0; i < _count; i++){
            _safeMint(_to, scareCount);
             scareCount++;
        }
    }


    function mintOwner(uint _count) external onlyOwner {
        require(_count <= MAX_SCARESQUAD);
        require(scareCount + _count <= MAX_SCARESQUAD);

        for (uint i = 0; i < _count; i++) {
            _mint(_owner, scareCount);
            scareCount++;
        }
    }

    function price(uint _count) public view virtual returns (uint256) {
          return basePrice * _count; 
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }
    
    function setBaseURI(string memory baseURI) public onlyOwner {
        _baseTokenURI = baseURI;
    }

    function tokensOfOwner(address _owner) external view returns(uint256[] memory) {
        uint tokenCount = balanceOf(_owner);

        uint256[] memory tokensId = new uint256[](tokenCount);
        for(uint i = 0; i < tokenCount; i++){
            tokensId[i] = tokenOfOwnerByIndex(_owner, i);
        }

        return tokensId;
    }

    /** This function will withdraw the balance and split as pre-determined **/
    function withdrawAll() public payable onlyOwner {
        _withdrawAll();
       
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SCARESQUAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"whitelisted","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_preSale","type":"bool"}],"name":"endPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mintOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mintScareSquad","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"scaremax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_balj","type":"address"}],"name":"setJalals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_ball","type":"address"}],"name":"setLosrayt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_balu","type":"address"}],"name":"setUhv","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_saleEnable","type":"bool"}],"name":"setsaleEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_preSale","type":"bool"}],"name":"startPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]

608060405273513fed2e7cd2831840f9b185553fa08c0940e228600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507361407c14430f1d78bae6baf5dfd0528fcd58bf2b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737bc3d9d7b0f90c1fb8b6984347b37967bd7c0aae600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e5566f8b0a10e470000600f5560146010556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055503480156200015b57600080fd5b5060405162005334380380620053348339818101604052810190620001819190620004f5565b6040518060400160405280600b81526020017f53636172652053717561640000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f5343415245535155414400000000000000000000000000000000000000000000815250816000908051906020019062000205929190620003c7565b5080600190805190602001906200021e929190620003c7565b505050600062000233620002ea60201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002e381620002f260201b60201c565b506200074d565b600033905090565b62000302620002ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003286200039d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000378906200056d565b60405180910390fd5b806011908051906020019062000399929190620003c7565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003d59062000635565b90600052602060002090601f016020900481019282620003f9576000855562000445565b82601f106200041457805160ff191683800117855562000445565b8280016001018555821562000445579182015b828111156200044457825182559160200191906001019062000427565b5b50905062000454919062000458565b5090565b5b808211156200047357600081600090555060010162000459565b5090565b60006200048e6200048884620005b8565b6200058f565b905082815260208101848484011115620004ad57620004ac62000704565b5b620004ba848285620005ff565b509392505050565b600082601f830112620004da57620004d9620006ff565b5b8151620004ec84826020860162000477565b91505092915050565b6000602082840312156200050e576200050d6200070e565b5b600082015167ffffffffffffffff8111156200052f576200052e62000709565b5b6200053d84828501620004c2565b91505092915050565b600062000555602083620005ee565b9150620005628262000724565b602082019050919050565b60006020820190508181036000830152620005888162000546565b9050919050565b60006200059b620005ae565b9050620005a982826200066b565b919050565b6000604051905090565b600067ffffffffffffffff821115620005d657620005d5620006d0565b5b620005e18262000713565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200061f57808201518184015260208101905062000602565b838111156200062f576000848401525b50505050565b600060028204905060018216806200064e57607f821691505b60208210811415620006655762000664620006a1565b5b50919050565b620006768262000713565b810181811067ffffffffffffffff82111715620006985762000697620006d0565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b614bd7806200075d6000396000f3fe60806040526004361061020f5760003560e01c8063715018a611610118578063aeaf4b7a116100a0578063c87b56dd1161006f578063c87b56dd1461077b578063e985e9c5146107b8578063eb8835ab146107f5578063f2fde38b14610832578063f8e7cc2f1461085b5761020f565b8063aeaf4b7a146106d5578063b02636fd146106fe578063b88d4fde14610727578063c7876ea4146107505761020f565b8063853828b6116100e7578063853828b6146106215780638a04b7281461062b5780638da5cb5b1461065657806395d89b4114610681578063a22cb465146106ac5761020f565b8063715018a6146105795780637c8e8c18146105905780637f649783146105bb5780638462151c146105e45761020f565b806333f88d221161019b5780634f6ccce71161016a5780634f6ccce71461047d57806355f804b3146104ba57806358f7e6e6146104e35780636352211e146104ff57806370a082311461053c5761020f565b806333f88d22146103d957806342842e0e1461040257806343037ef61461042b57806344471f5a146104545761020f565b8063095ea7b3116101e2578063095ea7b3146102e257806318160ddd1461030b57806323b872dd1461033657806326a49e371461035f5780632f745c591461039c5761020f565b806301ffc9a7146102145780630591ee1e1461025157806306fdde031461027a578063081812fc146102a5575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613677565b610884565b6040516102489190613c6e565b60405180910390f35b34801561025d57600080fd5b506102786004803603810190610273919061343e565b6108fe565b005b34801561028657600080fd5b5061028f6109be565b60405161029c9190613c89565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c7919061371a565b610a50565b6040516102d99190613be5565b60405180910390f35b3480156102ee57600080fd5b50610309600480360381019061030491906135c1565b610ad5565b005b34801561031757600080fd5b50610320610bed565b60405161032d9190613f8b565b60405180910390f35b34801561034257600080fd5b5061035d600480360381019061035891906134ab565b610bfa565b005b34801561036b57600080fd5b506103866004803603810190610381919061371a565b610c5a565b6040516103939190613f8b565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906135c1565b610c71565b6040516103d09190613f8b565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb919061371a565b610d16565b005b34801561040e57600080fd5b50610429600480360381019061042491906134ab565b610e25565b005b34801561043757600080fd5b50610452600480360381019061044d919061364a565b610e45565b005b34801561046057600080fd5b5061047b6004803603810190610476919061343e565b610ede565b005b34801561048957600080fd5b506104a4600480360381019061049f919061371a565b610f9e565b6040516104b19190613f8b565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906136d1565b61100f565b005b6104fd60048036038101906104f891906135c1565b6110a5565b005b34801561050b57600080fd5b506105266004803603810190610521919061371a565b611310565b6040516105339190613be5565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190613411565b6113c2565b6040516105709190613f8b565b60405180910390f35b34801561058557600080fd5b5061058e61147a565b005b34801561059c57600080fd5b506105a56115b7565b6040516105b29190613f8b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190613601565b6115bd565b005b3480156105f057600080fd5b5061060b60048036038101906106069190613411565b6116ce565b6040516106189190613c4c565b60405180910390f35b61062961177c565b005b34801561063757600080fd5b50610640611802565b60405161064d9190613f8b565b60405180910390f35b34801561066257600080fd5b5061066b611808565b6040516106789190613be5565b60405180910390f35b34801561068d57600080fd5b50610696611832565b6040516106a39190613c89565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613581565b6118c4565b005b3480156106e157600080fd5b506106fc60048036038101906106f7919061364a565b611a45565b005b34801561070a57600080fd5b506107256004803603810190610720919061364a565b611b01565b005b34801561073357600080fd5b5061074e600480360381019061074991906134fe565b611b9a565b005b34801561075c57600080fd5b50610765611bfc565b6040516107729190613f8b565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d919061371a565b611c02565b6040516107af9190613c89565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da919061346b565b611ca9565b6040516107ec9190613c6e565b60405180910390f35b34801561080157600080fd5b5061081c60048036038101906108179190613411565b611d3d565b6040516108299190613c6e565b60405180910390f35b34801561083e57600080fd5b5061085960048036038101906108549190613411565b611d5d565b005b34801561086757600080fd5b50610882600480360381019061087d919061343e565b611f09565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108f757506108f682611fc9565b5b9050919050565b6109066120ab565b73ffffffffffffffffffffffffffffffffffffffff16610924611808565b73ffffffffffffffffffffffffffffffffffffffff161461097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190613e6b565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600080546109cd906142b2565b80601f01602080910402602001604051908101604052809291908181526020018280546109f9906142b2565b8015610a465780601f10610a1b57610100808354040283529160200191610a46565b820191906000526020600020905b815481529060010190602001808311610a2957829003601f168201915b5050505050905090565b6000610a5b826120b3565b610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9190613e4b565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ae082611310565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890613f2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b706120ab565b73ffffffffffffffffffffffffffffffffffffffff161480610b9f5750610b9e81610b996120ab565b611ca9565b5b610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613dab565b60405180910390fd5b610be8838361211f565b505050565b6000600880549050905090565b610c0b610c056120ab565b826121d8565b610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613f4b565b60405180910390fd5b610c558383836122b6565b505050565b600081600f54610c6a919061415c565b9050919050565b6000610c7c836113c2565b8210610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490613ccb565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d1e6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610d3c611808565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613e6b565b60405180910390fd5b612710811115610da157600080fd5b61271081600e54610db291906140d5565b1115610dbd57600080fd5b60005b81811015610e2157610df6600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54612512565b600e6000815480929190610e0990614315565b91905055508080610e1990614315565b915050610dc0565b5050565b610e4083838360405180602001604052806000815250611b9a565b505050565b610e4d6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610e6b611808565b73ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890613e6b565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b610ee66120ab565b73ffffffffffffffffffffffffffffffffffffffff16610f04611808565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190613e6b565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610fa8610bed565b8210610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090613f6b565b60405180910390fd5b60088281548110610ffd57610ffc61444b565b5b90600052602060002001549050919050565b6110176120ab565b73ffffffffffffffffffffffffffffffffffffffff16611035611808565b73ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290613e6b565b60405180910390fd5b80601190805190602001906110a1929190613172565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061110d5750601260009054906101000a900460ff165b806111615750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790613cab565b60405180910390fd5b612710600e5411156111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90613f0b565b60405180910390fd5b61271081600e546111f891906140d5565b1115611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090613e2b565b60405180910390fd5b60105481111561127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590613e8b565b60405180910390fd5b61128781610c5a565b3410156112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090613eeb565b60405180910390fd5b60005b8181101561130b576112e083600e546126e0565b600e60008154809291906112f390614315565b9190505550808061130390614315565b9150506112cc565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090613deb565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90613dcb565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114826120ab565b73ffffffffffffffffffffffffffffffffffffffff166114a0611808565b73ffffffffffffffffffffffffffffffffffffffff16146114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61271081565b6115c56120ab565b73ffffffffffffffffffffffffffffffffffffffff166115e3611808565b73ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163090613e6b565b60405180910390fd5b60005b81518110156116ca5760016013600084848151811061165e5761165d61444b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116c290614315565b91505061163c565b5050565b606060006116db836113c2565b905060008167ffffffffffffffff8111156116f9576116f861447a565b5b6040519080825280602002602001820160405280156117275781602001602082028036833780820191505090505b50905060005b828110156117715761173f8582610c71565b8282815181106117525761175161444b565b5b602002602001018181525050808061176990614315565b91505061172d565b508092505050919050565b6117846120ab565b73ffffffffffffffffffffffffffffffffffffffff166117a2611808565b73ffffffffffffffffffffffffffffffffffffffff16146117f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef90613e6b565b60405180910390fd5b6118006126fe565b565b60105481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611841906142b2565b80601f016020809104026020016040519081016040528092919081815260200182805461186d906142b2565b80156118ba5780601f1061188f576101008083540402835291602001916118ba565b820191906000526020600020905b81548152906001019060200180831161189d57829003601f168201915b5050505050905090565b6118cc6120ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190613d6b565b60405180910390fd5b80600560006119476120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119f46120ab565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a399190613c6e565b60405180910390a35050565b611a4d6120ab565b73ffffffffffffffffffffffffffffffffffffffff16611a6b611808565b73ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613e6b565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555060196010819055506001601260006101000a81548160ff02191690831515021790555050565b611b096120ab565b73ffffffffffffffffffffffffffffffffffffffff16611b27611808565b73ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490613e6b565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b611bab611ba56120ab565b836121d8565b611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613f4b565b60405180910390fd5b611bf684848484612895565b50505050565b600f5481565b6060611c0d826120b3565b611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4390613ecb565b60405180910390fd5b6000611c566128f1565b90506000815111611c765760405180602001604052806000815250611ca1565b80611c8084612983565b604051602001611c91929190613bc1565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b611d656120ab565b73ffffffffffffffffffffffffffffffffffffffff16611d83611808565b73ffffffffffffffffffffffffffffffffffffffff1614611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd090613e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613d0b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f116120ab565b73ffffffffffffffffffffffffffffffffffffffff16611f2f611808565b73ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c90613e6b565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061209457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806120a457506120a382612ae4565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661219283611310565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006121e3826120b3565b612222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221990613d8b565b60405180910390fd5b600061222d83611310565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061229c57508373ffffffffffffffffffffffffffffffffffffffff1661228484610a50565b73ffffffffffffffffffffffffffffffffffffffff16145b806122ad57506122ac8185611ca9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166122d682611310565b73ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390613eab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390613d4b565b60405180910390fd5b6123a7838383612b4e565b6123b260008261211f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461240291906141b6565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461245991906140d5565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257990613e0b565b60405180910390fd5b61258b816120b3565b156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290613d2b565b60405180910390fd5b6125d760008383612b4e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461262791906140d5565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6126fa828260405180602001604052806000815250612c62565b5050565b60006103e8606447612710919061415c565b61271a919061412b565b905060006103e860644761272e919061415c565b612738919061412b565b9050600081834761274991906141b6565b61275391906141b6565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156127bd573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612826573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561288f573d6000803e3d6000fd5b50505050565b6128a08484846122b6565b6128ac84848484612cbd565b6128eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e290613ceb565b60405180910390fd5b50505050565b606060118054612900906142b2565b80601f016020809104026020016040519081016040528092919081815260200182805461292c906142b2565b80156129795780601f1061294e57610100808354040283529160200191612979565b820191906000526020600020905b81548152906001019060200180831161295c57829003601f168201915b5050505050905090565b606060008214156129cb576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612adf565b600082905060005b600082146129fd5780806129e690614315565b915050600a826129f6919061412b565b91506129d3565b60008167ffffffffffffffff811115612a1957612a1861447a565b5b6040519080825280601f01601f191660200182016040528015612a4b5781602001600182028036833780820191505090505b5090505b60008514612ad857600182612a6491906141b6565b9150600a85612a73919061435e565b6030612a7f91906140d5565b60f81b818381518110612a9557612a9461444b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ad1919061412b565b9450612a4f565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612b59838383612e54565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b9c57612b9781612e59565b612bdb565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612bda57612bd98382612ea2565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c1e57612c198161300f565b612c5d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612c5c57612c5b82826130e0565b5b5b505050565b612c6c8383612512565b612c796000848484612cbd565b612cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caf90613ceb565b60405180910390fd5b505050565b6000612cde8473ffffffffffffffffffffffffffffffffffffffff1661315f565b15612e47578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d076120ab565b8786866040518563ffffffff1660e01b8152600401612d299493929190613c00565b602060405180830381600087803b158015612d4357600080fd5b505af1925050508015612d7457506040513d601f19601f82011682018060405250810190612d7191906136a4565b60015b612df7573d8060008114612da4576040519150601f19603f3d011682016040523d82523d6000602084013e612da9565b606091505b50600081511415612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de690613ceb565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e4c565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612eaf846113c2565b612eb991906141b6565b9050600060076000848152602001908152602001600020549050818114612f9e576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061302391906141b6565b90506000600960008481526020019081526020016000205490506000600883815481106130535761305261444b565b5b9060005260206000200154905080600883815481106130755761307461444b565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806130c4576130c361441c565b5b6001900381819060005260206000200160009055905550505050565b60006130eb836113c2565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461317e906142b2565b90600052602060002090601f0160209004810192826131a057600085556131e7565b82601f106131b957805160ff19168380011785556131e7565b828001600101855582156131e7579182015b828111156131e65782518255916020019190600101906131cb565b5b5090506131f491906131f8565b5090565b5b808211156132115760008160009055506001016131f9565b5090565b600061322861322384613fcb565b613fa6565b9050808382526020820190508285602086028201111561324b5761324a6144ae565b5b60005b8581101561327b57816132618882613309565b84526020840193506020830192505060018101905061324e565b5050509392505050565b600061329861329384613ff7565b613fa6565b9050828152602081018484840111156132b4576132b36144b3565b5b6132bf848285614270565b509392505050565b60006132da6132d584614028565b613fa6565b9050828152602081018484840111156132f6576132f56144b3565b5b613301848285614270565b509392505050565b60008135905061331881614b2e565b92915050565b60008135905061332d81614b45565b92915050565b600082601f830112613348576133476144a9565b5b8135613358848260208601613215565b91505092915050565b60008135905061337081614b5c565b92915050565b60008135905061338581614b73565b92915050565b60008151905061339a81614b73565b92915050565b600082601f8301126133b5576133b46144a9565b5b81356133c5848260208601613285565b91505092915050565b600082601f8301126133e3576133e26144a9565b5b81356133f38482602086016132c7565b91505092915050565b60008135905061340b81614b8a565b92915050565b600060208284031215613427576134266144bd565b5b600061343584828501613309565b91505092915050565b600060208284031215613454576134536144bd565b5b60006134628482850161331e565b91505092915050565b60008060408385031215613482576134816144bd565b5b600061349085828601613309565b92505060206134a185828601613309565b9150509250929050565b6000806000606084860312156134c4576134c36144bd565b5b60006134d286828701613309565b93505060206134e386828701613309565b92505060406134f4868287016133fc565b9150509250925092565b60008060008060808587031215613518576135176144bd565b5b600061352687828801613309565b945050602061353787828801613309565b9350506040613548878288016133fc565b925050606085013567ffffffffffffffff811115613569576135686144b8565b5b613575878288016133a0565b91505092959194509250565b60008060408385031215613598576135976144bd565b5b60006135a685828601613309565b92505060206135b785828601613361565b9150509250929050565b600080604083850312156135d8576135d76144bd565b5b60006135e685828601613309565b92505060206135f7858286016133fc565b9150509250929050565b600060208284031215613617576136166144bd565b5b600082013567ffffffffffffffff811115613635576136346144b8565b5b61364184828501613333565b91505092915050565b6000602082840312156136605761365f6144bd565b5b600061366e84828501613361565b91505092915050565b60006020828403121561368d5761368c6144bd565b5b600061369b84828501613376565b91505092915050565b6000602082840312156136ba576136b96144bd565b5b60006136c88482850161338b565b91505092915050565b6000602082840312156136e7576136e66144bd565b5b600082013567ffffffffffffffff811115613705576137046144b8565b5b613711848285016133ce565b91505092915050565b6000602082840312156137305761372f6144bd565b5b600061373e848285016133fc565b91505092915050565b60006137538383613ba3565b60208301905092915050565b613768816141ea565b82525050565b600061377982614069565b6137838185614097565b935061378e83614059565b8060005b838110156137bf5781516137a68882613747565b97506137b18361408a565b925050600181019050613792565b5085935050505092915050565b6137d58161420e565b82525050565b60006137e682614074565b6137f081856140a8565b935061380081856020860161427f565b613809816144c2565b840191505092915050565b600061381f8261407f565b61382981856140b9565b935061383981856020860161427f565b613842816144c2565b840191505092915050565b60006138588261407f565b61386281856140ca565b935061387281856020860161427f565b80840191505092915050565b600061388b6042836140b9565b9150613896826144d3565b606082019050919050565b60006138ae602b836140b9565b91506138b982614548565b604082019050919050565b60006138d16032836140b9565b91506138dc82614597565b604082019050919050565b60006138f46026836140b9565b91506138ff826145e6565b604082019050919050565b6000613917601c836140b9565b915061392282614635565b602082019050919050565b600061393a6024836140b9565b91506139458261465e565b604082019050919050565b600061395d6019836140b9565b9150613968826146ad565b602082019050919050565b6000613980602c836140b9565b915061398b826146d6565b604082019050919050565b60006139a36038836140b9565b91506139ae82614725565b604082019050919050565b60006139c6602a836140b9565b91506139d182614774565b604082019050919050565b60006139e96029836140b9565b91506139f4826147c3565b604082019050919050565b6000613a0c6020836140b9565b9150613a1782614812565b602082019050919050565b6000613a2f6032836140b9565b9150613a3a8261483b565b604082019050919050565b6000613a52602c836140b9565b9150613a5d8261488a565b604082019050919050565b6000613a756020836140b9565b9150613a80826148d9565b602082019050919050565b6000613a986022836140b9565b9150613aa382614902565b604082019050919050565b6000613abb6029836140b9565b9150613ac682614951565b604082019050919050565b6000613ade602f836140b9565b9150613ae9826149a0565b604082019050919050565b6000613b016011836140b9565b9150613b0c826149ef565b602082019050919050565b6000613b24600a836140b9565b9150613b2f82614a18565b602082019050919050565b6000613b476021836140b9565b9150613b5282614a41565b604082019050919050565b6000613b6a6031836140b9565b9150613b7582614a90565b604082019050919050565b6000613b8d602c836140b9565b9150613b9882614adf565b604082019050919050565b613bac81614266565b82525050565b613bbb81614266565b82525050565b6000613bcd828561384d565b9150613bd9828461384d565b91508190509392505050565b6000602082019050613bfa600083018461375f565b92915050565b6000608082019050613c15600083018761375f565b613c22602083018661375f565b613c2f6040830185613bb2565b8181036060830152613c4181846137db565b905095945050505050565b60006020820190508181036000830152613c66818461376e565b905092915050565b6000602082019050613c8360008301846137cc565b92915050565b60006020820190508181036000830152613ca38184613814565b905092915050565b60006020820190508181036000830152613cc48161387e565b9050919050565b60006020820190508181036000830152613ce4816138a1565b9050919050565b60006020820190508181036000830152613d04816138c4565b9050919050565b60006020820190508181036000830152613d24816138e7565b9050919050565b60006020820190508181036000830152613d448161390a565b9050919050565b60006020820190508181036000830152613d648161392d565b9050919050565b60006020820190508181036000830152613d8481613950565b9050919050565b60006020820190508181036000830152613da481613973565b9050919050565b60006020820190508181036000830152613dc481613996565b9050919050565b60006020820190508181036000830152613de4816139b9565b9050919050565b60006020820190508181036000830152613e04816139dc565b9050919050565b60006020820190508181036000830152613e24816139ff565b9050919050565b60006020820190508181036000830152613e4481613a22565b9050919050565b60006020820190508181036000830152613e6481613a45565b9050919050565b60006020820190508181036000830152613e8481613a68565b9050919050565b60006020820190508181036000830152613ea481613a8b565b9050919050565b60006020820190508181036000830152613ec481613aae565b9050919050565b60006020820190508181036000830152613ee481613ad1565b9050919050565b60006020820190508181036000830152613f0481613af4565b9050919050565b60006020820190508181036000830152613f2481613b17565b9050919050565b60006020820190508181036000830152613f4481613b3a565b9050919050565b60006020820190508181036000830152613f6481613b5d565b9050919050565b60006020820190508181036000830152613f8481613b80565b9050919050565b6000602082019050613fa06000830184613bb2565b92915050565b6000613fb0613fc1565b9050613fbc82826142e4565b919050565b6000604051905090565b600067ffffffffffffffff821115613fe657613fe561447a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140125761401161447a565b5b61401b826144c2565b9050602081019050919050565b600067ffffffffffffffff8211156140435761404261447a565b5b61404c826144c2565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006140e082614266565b91506140eb83614266565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141205761411f61438f565b5b828201905092915050565b600061413682614266565b915061414183614266565b925082614151576141506143be565b5b828204905092915050565b600061416782614266565b915061417283614266565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141ab576141aa61438f565b5b828202905092915050565b60006141c182614266565b91506141cc83614266565b9250828210156141df576141de61438f565b5b828203905092915050565b60006141f582614246565b9050919050565b600061420782614246565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561429d578082015181840152602081019050614282565b838111156142ac576000848401525b50505050565b600060028204905060018216806142ca57607f821691505b602082108114156142de576142dd6143ed565b5b50919050565b6142ed826144c2565b810181811067ffffffffffffffff8211171561430c5761430b61447a565b5b80604052505050565b600061432082614266565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143535761435261438f565b5b600182019050919050565b600061436982614266565b915061437483614266565b925082614384576143836143be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f53616c65206973206e6f7420656e61626c6564206f7220796f7520617265206e60008201527f6f74206f6e207468652077686974656c69737420647572696e6720707265736160208201527f6c65000000000000000000000000000000000000000000000000000000000000604082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f5472616e73616374696f6e20776f756c642062652061626f7665206d6178206d60008201527f696e7420636f756e74202831302c303030290000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45786365656473206d6178207472616e73616374696f6e206d696e7420636f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b7f53616c6520656e64656400000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b614b37816141ea565b8114614b4257600080fd5b50565b614b4e816141fc565b8114614b5957600080fd5b50565b614b658161420e565b8114614b7057600080fd5b50565b614b7c8161421a565b8114614b8757600080fd5b50565b614b9381614266565b8114614b9e57600080fd5b5056fea26469706673582212203c5258651a0e78574327419d6fa0e718e6460e9dec593cbe398e71cbe3d0bd8564736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061020f5760003560e01c8063715018a611610118578063aeaf4b7a116100a0578063c87b56dd1161006f578063c87b56dd1461077b578063e985e9c5146107b8578063eb8835ab146107f5578063f2fde38b14610832578063f8e7cc2f1461085b5761020f565b8063aeaf4b7a146106d5578063b02636fd146106fe578063b88d4fde14610727578063c7876ea4146107505761020f565b8063853828b6116100e7578063853828b6146106215780638a04b7281461062b5780638da5cb5b1461065657806395d89b4114610681578063a22cb465146106ac5761020f565b8063715018a6146105795780637c8e8c18146105905780637f649783146105bb5780638462151c146105e45761020f565b806333f88d221161019b5780634f6ccce71161016a5780634f6ccce71461047d57806355f804b3146104ba57806358f7e6e6146104e35780636352211e146104ff57806370a082311461053c5761020f565b806333f88d22146103d957806342842e0e1461040257806343037ef61461042b57806344471f5a146104545761020f565b8063095ea7b3116101e2578063095ea7b3146102e257806318160ddd1461030b57806323b872dd1461033657806326a49e371461035f5780632f745c591461039c5761020f565b806301ffc9a7146102145780630591ee1e1461025157806306fdde031461027a578063081812fc146102a5575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613677565b610884565b6040516102489190613c6e565b60405180910390f35b34801561025d57600080fd5b506102786004803603810190610273919061343e565b6108fe565b005b34801561028657600080fd5b5061028f6109be565b60405161029c9190613c89565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c7919061371a565b610a50565b6040516102d99190613be5565b60405180910390f35b3480156102ee57600080fd5b50610309600480360381019061030491906135c1565b610ad5565b005b34801561031757600080fd5b50610320610bed565b60405161032d9190613f8b565b60405180910390f35b34801561034257600080fd5b5061035d600480360381019061035891906134ab565b610bfa565b005b34801561036b57600080fd5b506103866004803603810190610381919061371a565b610c5a565b6040516103939190613f8b565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906135c1565b610c71565b6040516103d09190613f8b565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb919061371a565b610d16565b005b34801561040e57600080fd5b50610429600480360381019061042491906134ab565b610e25565b005b34801561043757600080fd5b50610452600480360381019061044d919061364a565b610e45565b005b34801561046057600080fd5b5061047b6004803603810190610476919061343e565b610ede565b005b34801561048957600080fd5b506104a4600480360381019061049f919061371a565b610f9e565b6040516104b19190613f8b565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906136d1565b61100f565b005b6104fd60048036038101906104f891906135c1565b6110a5565b005b34801561050b57600080fd5b506105266004803603810190610521919061371a565b611310565b6040516105339190613be5565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190613411565b6113c2565b6040516105709190613f8b565b60405180910390f35b34801561058557600080fd5b5061058e61147a565b005b34801561059c57600080fd5b506105a56115b7565b6040516105b29190613f8b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190613601565b6115bd565b005b3480156105f057600080fd5b5061060b60048036038101906106069190613411565b6116ce565b6040516106189190613c4c565b60405180910390f35b61062961177c565b005b34801561063757600080fd5b50610640611802565b60405161064d9190613f8b565b60405180910390f35b34801561066257600080fd5b5061066b611808565b6040516106789190613be5565b60405180910390f35b34801561068d57600080fd5b50610696611832565b6040516106a39190613c89565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613581565b6118c4565b005b3480156106e157600080fd5b506106fc60048036038101906106f7919061364a565b611a45565b005b34801561070a57600080fd5b506107256004803603810190610720919061364a565b611b01565b005b34801561073357600080fd5b5061074e600480360381019061074991906134fe565b611b9a565b005b34801561075c57600080fd5b50610765611bfc565b6040516107729190613f8b565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d919061371a565b611c02565b6040516107af9190613c89565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da919061346b565b611ca9565b6040516107ec9190613c6e565b60405180910390f35b34801561080157600080fd5b5061081c60048036038101906108179190613411565b611d3d565b6040516108299190613c6e565b60405180910390f35b34801561083e57600080fd5b5061085960048036038101906108549190613411565b611d5d565b005b34801561086757600080fd5b50610882600480360381019061087d919061343e565b611f09565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108f757506108f682611fc9565b5b9050919050565b6109066120ab565b73ffffffffffffffffffffffffffffffffffffffff16610924611808565b73ffffffffffffffffffffffffffffffffffffffff161461097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190613e6b565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600080546109cd906142b2565b80601f01602080910402602001604051908101604052809291908181526020018280546109f9906142b2565b8015610a465780601f10610a1b57610100808354040283529160200191610a46565b820191906000526020600020905b815481529060010190602001808311610a2957829003601f168201915b5050505050905090565b6000610a5b826120b3565b610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9190613e4b565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ae082611310565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890613f2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b706120ab565b73ffffffffffffffffffffffffffffffffffffffff161480610b9f5750610b9e81610b996120ab565b611ca9565b5b610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613dab565b60405180910390fd5b610be8838361211f565b505050565b6000600880549050905090565b610c0b610c056120ab565b826121d8565b610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613f4b565b60405180910390fd5b610c558383836122b6565b505050565b600081600f54610c6a919061415c565b9050919050565b6000610c7c836113c2565b8210610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490613ccb565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d1e6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610d3c611808565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613e6b565b60405180910390fd5b612710811115610da157600080fd5b61271081600e54610db291906140d5565b1115610dbd57600080fd5b60005b81811015610e2157610df6600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54612512565b600e6000815480929190610e0990614315565b91905055508080610e1990614315565b915050610dc0565b5050565b610e4083838360405180602001604052806000815250611b9a565b505050565b610e4d6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610e6b611808565b73ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890613e6b565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b610ee66120ab565b73ffffffffffffffffffffffffffffffffffffffff16610f04611808565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190613e6b565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610fa8610bed565b8210610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090613f6b565b60405180910390fd5b60088281548110610ffd57610ffc61444b565b5b90600052602060002001549050919050565b6110176120ab565b73ffffffffffffffffffffffffffffffffffffffff16611035611808565b73ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290613e6b565b60405180910390fd5b80601190805190602001906110a1929190613172565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061110d5750601260009054906101000a900460ff165b806111615750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790613cab565b60405180910390fd5b612710600e5411156111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90613f0b565b60405180910390fd5b61271081600e546111f891906140d5565b1115611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090613e2b565b60405180910390fd5b60105481111561127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590613e8b565b60405180910390fd5b61128781610c5a565b3410156112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090613eeb565b60405180910390fd5b60005b8181101561130b576112e083600e546126e0565b600e60008154809291906112f390614315565b9190505550808061130390614315565b9150506112cc565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090613deb565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90613dcb565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114826120ab565b73ffffffffffffffffffffffffffffffffffffffff166114a0611808565b73ffffffffffffffffffffffffffffffffffffffff16146114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61271081565b6115c56120ab565b73ffffffffffffffffffffffffffffffffffffffff166115e3611808565b73ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163090613e6b565b60405180910390fd5b60005b81518110156116ca5760016013600084848151811061165e5761165d61444b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116c290614315565b91505061163c565b5050565b606060006116db836113c2565b905060008167ffffffffffffffff8111156116f9576116f861447a565b5b6040519080825280602002602001820160405280156117275781602001602082028036833780820191505090505b50905060005b828110156117715761173f8582610c71565b8282815181106117525761175161444b565b5b602002602001018181525050808061176990614315565b91505061172d565b508092505050919050565b6117846120ab565b73ffffffffffffffffffffffffffffffffffffffff166117a2611808565b73ffffffffffffffffffffffffffffffffffffffff16146117f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef90613e6b565b60405180910390fd5b6118006126fe565b565b60105481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611841906142b2565b80601f016020809104026020016040519081016040528092919081815260200182805461186d906142b2565b80156118ba5780601f1061188f576101008083540402835291602001916118ba565b820191906000526020600020905b81548152906001019060200180831161189d57829003601f168201915b5050505050905090565b6118cc6120ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190613d6b565b60405180910390fd5b80600560006119476120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119f46120ab565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a399190613c6e565b60405180910390a35050565b611a4d6120ab565b73ffffffffffffffffffffffffffffffffffffffff16611a6b611808565b73ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613e6b565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555060196010819055506001601260006101000a81548160ff02191690831515021790555050565b611b096120ab565b73ffffffffffffffffffffffffffffffffffffffff16611b27611808565b73ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490613e6b565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b611bab611ba56120ab565b836121d8565b611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613f4b565b60405180910390fd5b611bf684848484612895565b50505050565b600f5481565b6060611c0d826120b3565b611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4390613ecb565b60405180910390fd5b6000611c566128f1565b90506000815111611c765760405180602001604052806000815250611ca1565b80611c8084612983565b604051602001611c91929190613bc1565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b611d656120ab565b73ffffffffffffffffffffffffffffffffffffffff16611d83611808565b73ffffffffffffffffffffffffffffffffffffffff1614611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd090613e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613d0b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f116120ab565b73ffffffffffffffffffffffffffffffffffffffff16611f2f611808565b73ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c90613e6b565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061209457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806120a457506120a382612ae4565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661219283611310565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006121e3826120b3565b612222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221990613d8b565b60405180910390fd5b600061222d83611310565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061229c57508373ffffffffffffffffffffffffffffffffffffffff1661228484610a50565b73ffffffffffffffffffffffffffffffffffffffff16145b806122ad57506122ac8185611ca9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166122d682611310565b73ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390613eab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390613d4b565b60405180910390fd5b6123a7838383612b4e565b6123b260008261211f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461240291906141b6565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461245991906140d5565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257990613e0b565b60405180910390fd5b61258b816120b3565b156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290613d2b565b60405180910390fd5b6125d760008383612b4e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461262791906140d5565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6126fa828260405180602001604052806000815250612c62565b5050565b60006103e8606447612710919061415c565b61271a919061412b565b905060006103e860644761272e919061415c565b612738919061412b565b9050600081834761274991906141b6565b61275391906141b6565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156127bd573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612826573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561288f573d6000803e3d6000fd5b50505050565b6128a08484846122b6565b6128ac84848484612cbd565b6128eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e290613ceb565b60405180910390fd5b50505050565b606060118054612900906142b2565b80601f016020809104026020016040519081016040528092919081815260200182805461292c906142b2565b80156129795780601f1061294e57610100808354040283529160200191612979565b820191906000526020600020905b81548152906001019060200180831161295c57829003601f168201915b5050505050905090565b606060008214156129cb576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612adf565b600082905060005b600082146129fd5780806129e690614315565b915050600a826129f6919061412b565b91506129d3565b60008167ffffffffffffffff811115612a1957612a1861447a565b5b6040519080825280601f01601f191660200182016040528015612a4b5781602001600182028036833780820191505090505b5090505b60008514612ad857600182612a6491906141b6565b9150600a85612a73919061435e565b6030612a7f91906140d5565b60f81b818381518110612a9557612a9461444b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ad1919061412b565b9450612a4f565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612b59838383612e54565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b9c57612b9781612e59565b612bdb565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612bda57612bd98382612ea2565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c1e57612c198161300f565b612c5d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612c5c57612c5b82826130e0565b5b5b505050565b612c6c8383612512565b612c796000848484612cbd565b612cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caf90613ceb565b60405180910390fd5b505050565b6000612cde8473ffffffffffffffffffffffffffffffffffffffff1661315f565b15612e47578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d076120ab565b8786866040518563ffffffff1660e01b8152600401612d299493929190613c00565b602060405180830381600087803b158015612d4357600080fd5b505af1925050508015612d7457506040513d601f19601f82011682018060405250810190612d7191906136a4565b60015b612df7573d8060008114612da4576040519150601f19603f3d011682016040523d82523d6000602084013e612da9565b606091505b50600081511415612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de690613ceb565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e4c565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612eaf846113c2565b612eb991906141b6565b9050600060076000848152602001908152602001600020549050818114612f9e576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061302391906141b6565b90506000600960008481526020019081526020016000205490506000600883815481106130535761305261444b565b5b9060005260206000200154905080600883815481106130755761307461444b565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806130c4576130c361441c565b5b6001900381819060005260206000200160009055905550505050565b60006130eb836113c2565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461317e906142b2565b90600052602060002090601f0160209004810192826131a057600085556131e7565b82601f106131b957805160ff19168380011785556131e7565b828001600101855582156131e7579182015b828111156131e65782518255916020019190600101906131cb565b5b5090506131f491906131f8565b5090565b5b808211156132115760008160009055506001016131f9565b5090565b600061322861322384613fcb565b613fa6565b9050808382526020820190508285602086028201111561324b5761324a6144ae565b5b60005b8581101561327b57816132618882613309565b84526020840193506020830192505060018101905061324e565b5050509392505050565b600061329861329384613ff7565b613fa6565b9050828152602081018484840111156132b4576132b36144b3565b5b6132bf848285614270565b509392505050565b60006132da6132d584614028565b613fa6565b9050828152602081018484840111156132f6576132f56144b3565b5b613301848285614270565b509392505050565b60008135905061331881614b2e565b92915050565b60008135905061332d81614b45565b92915050565b600082601f830112613348576133476144a9565b5b8135613358848260208601613215565b91505092915050565b60008135905061337081614b5c565b92915050565b60008135905061338581614b73565b92915050565b60008151905061339a81614b73565b92915050565b600082601f8301126133b5576133b46144a9565b5b81356133c5848260208601613285565b91505092915050565b600082601f8301126133e3576133e26144a9565b5b81356133f38482602086016132c7565b91505092915050565b60008135905061340b81614b8a565b92915050565b600060208284031215613427576134266144bd565b5b600061343584828501613309565b91505092915050565b600060208284031215613454576134536144bd565b5b60006134628482850161331e565b91505092915050565b60008060408385031215613482576134816144bd565b5b600061349085828601613309565b92505060206134a185828601613309565b9150509250929050565b6000806000606084860312156134c4576134c36144bd565b5b60006134d286828701613309565b93505060206134e386828701613309565b92505060406134f4868287016133fc565b9150509250925092565b60008060008060808587031215613518576135176144bd565b5b600061352687828801613309565b945050602061353787828801613309565b9350506040613548878288016133fc565b925050606085013567ffffffffffffffff811115613569576135686144b8565b5b613575878288016133a0565b91505092959194509250565b60008060408385031215613598576135976144bd565b5b60006135a685828601613309565b92505060206135b785828601613361565b9150509250929050565b600080604083850312156135d8576135d76144bd565b5b60006135e685828601613309565b92505060206135f7858286016133fc565b9150509250929050565b600060208284031215613617576136166144bd565b5b600082013567ffffffffffffffff811115613635576136346144b8565b5b61364184828501613333565b91505092915050565b6000602082840312156136605761365f6144bd565b5b600061366e84828501613361565b91505092915050565b60006020828403121561368d5761368c6144bd565b5b600061369b84828501613376565b91505092915050565b6000602082840312156136ba576136b96144bd565b5b60006136c88482850161338b565b91505092915050565b6000602082840312156136e7576136e66144bd565b5b600082013567ffffffffffffffff811115613705576137046144b8565b5b613711848285016133ce565b91505092915050565b6000602082840312156137305761372f6144bd565b5b600061373e848285016133fc565b91505092915050565b60006137538383613ba3565b60208301905092915050565b613768816141ea565b82525050565b600061377982614069565b6137838185614097565b935061378e83614059565b8060005b838110156137bf5781516137a68882613747565b97506137b18361408a565b925050600181019050613792565b5085935050505092915050565b6137d58161420e565b82525050565b60006137e682614074565b6137f081856140a8565b935061380081856020860161427f565b613809816144c2565b840191505092915050565b600061381f8261407f565b61382981856140b9565b935061383981856020860161427f565b613842816144c2565b840191505092915050565b60006138588261407f565b61386281856140ca565b935061387281856020860161427f565b80840191505092915050565b600061388b6042836140b9565b9150613896826144d3565b606082019050919050565b60006138ae602b836140b9565b91506138b982614548565b604082019050919050565b60006138d16032836140b9565b91506138dc82614597565b604082019050919050565b60006138f46026836140b9565b91506138ff826145e6565b604082019050919050565b6000613917601c836140b9565b915061392282614635565b602082019050919050565b600061393a6024836140b9565b91506139458261465e565b604082019050919050565b600061395d6019836140b9565b9150613968826146ad565b602082019050919050565b6000613980602c836140b9565b915061398b826146d6565b604082019050919050565b60006139a36038836140b9565b91506139ae82614725565b604082019050919050565b60006139c6602a836140b9565b91506139d182614774565b604082019050919050565b60006139e96029836140b9565b91506139f4826147c3565b604082019050919050565b6000613a0c6020836140b9565b9150613a1782614812565b602082019050919050565b6000613a2f6032836140b9565b9150613a3a8261483b565b604082019050919050565b6000613a52602c836140b9565b9150613a5d8261488a565b604082019050919050565b6000613a756020836140b9565b9150613a80826148d9565b602082019050919050565b6000613a986022836140b9565b9150613aa382614902565b604082019050919050565b6000613abb6029836140b9565b9150613ac682614951565b604082019050919050565b6000613ade602f836140b9565b9150613ae9826149a0565b604082019050919050565b6000613b016011836140b9565b9150613b0c826149ef565b602082019050919050565b6000613b24600a836140b9565b9150613b2f82614a18565b602082019050919050565b6000613b476021836140b9565b9150613b5282614a41565b604082019050919050565b6000613b6a6031836140b9565b9150613b7582614a90565b604082019050919050565b6000613b8d602c836140b9565b9150613b9882614adf565b604082019050919050565b613bac81614266565b82525050565b613bbb81614266565b82525050565b6000613bcd828561384d565b9150613bd9828461384d565b91508190509392505050565b6000602082019050613bfa600083018461375f565b92915050565b6000608082019050613c15600083018761375f565b613c22602083018661375f565b613c2f6040830185613bb2565b8181036060830152613c4181846137db565b905095945050505050565b60006020820190508181036000830152613c66818461376e565b905092915050565b6000602082019050613c8360008301846137cc565b92915050565b60006020820190508181036000830152613ca38184613814565b905092915050565b60006020820190508181036000830152613cc48161387e565b9050919050565b60006020820190508181036000830152613ce4816138a1565b9050919050565b60006020820190508181036000830152613d04816138c4565b9050919050565b60006020820190508181036000830152613d24816138e7565b9050919050565b60006020820190508181036000830152613d448161390a565b9050919050565b60006020820190508181036000830152613d648161392d565b9050919050565b60006020820190508181036000830152613d8481613950565b9050919050565b60006020820190508181036000830152613da481613973565b9050919050565b60006020820190508181036000830152613dc481613996565b9050919050565b60006020820190508181036000830152613de4816139b9565b9050919050565b60006020820190508181036000830152613e04816139dc565b9050919050565b60006020820190508181036000830152613e24816139ff565b9050919050565b60006020820190508181036000830152613e4481613a22565b9050919050565b60006020820190508181036000830152613e6481613a45565b9050919050565b60006020820190508181036000830152613e8481613a68565b9050919050565b60006020820190508181036000830152613ea481613a8b565b9050919050565b60006020820190508181036000830152613ec481613aae565b9050919050565b60006020820190508181036000830152613ee481613ad1565b9050919050565b60006020820190508181036000830152613f0481613af4565b9050919050565b60006020820190508181036000830152613f2481613b17565b9050919050565b60006020820190508181036000830152613f4481613b3a565b9050919050565b60006020820190508181036000830152613f6481613b5d565b9050919050565b60006020820190508181036000830152613f8481613b80565b9050919050565b6000602082019050613fa06000830184613bb2565b92915050565b6000613fb0613fc1565b9050613fbc82826142e4565b919050565b6000604051905090565b600067ffffffffffffffff821115613fe657613fe561447a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140125761401161447a565b5b61401b826144c2565b9050602081019050919050565b600067ffffffffffffffff8211156140435761404261447a565b5b61404c826144c2565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006140e082614266565b91506140eb83614266565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141205761411f61438f565b5b828201905092915050565b600061413682614266565b915061414183614266565b925082614151576141506143be565b5b828204905092915050565b600061416782614266565b915061417283614266565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141ab576141aa61438f565b5b828202905092915050565b60006141c182614266565b91506141cc83614266565b9250828210156141df576141de61438f565b5b828203905092915050565b60006141f582614246565b9050919050565b600061420782614246565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561429d578082015181840152602081019050614282565b838111156142ac576000848401525b50505050565b600060028204905060018216806142ca57607f821691505b602082108114156142de576142dd6143ed565b5b50919050565b6142ed826144c2565b810181811067ffffffffffffffff8211171561430c5761430b61447a565b5b80604052505050565b600061432082614266565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143535761435261438f565b5b600182019050919050565b600061436982614266565b915061437483614266565b925082614384576143836143be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f53616c65206973206e6f7420656e61626c6564206f7220796f7520617265206e60008201527f6f74206f6e207468652077686974656c69737420647572696e6720707265736160208201527f6c65000000000000000000000000000000000000000000000000000000000000604082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f5472616e73616374696f6e20776f756c642062652061626f7665206d6178206d60008201527f696e7420636f756e74202831302c303030290000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45786365656473206d6178207472616e73616374696f6e206d696e7420636f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b7f53616c6520656e64656400000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b614b37816141ea565b8114614b4257600080fd5b50565b614b4e816141fc565b8114614b5957600080fd5b50565b614b658161420e565b8114614b7057600080fd5b50565b614b7c8161421a565b8114614b8757600080fd5b50565b614b9381614266565b8114614b9e57600080fd5b5056fea26469706673582212203c5258651a0e78574327419d6fa0e718e6460e9dec593cbe398e71cbe3d0bd8564736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI (string):

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

40582:2952:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34455:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16744:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21015:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22482:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22012:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35108:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23372:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42651:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34776:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42358:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23748:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41224:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16524:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35298:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42898:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41672:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20709:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20439:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15250:148;;;;;;;;;;;;;:::i;:::-;;40638:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41328:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43008:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43441:90;;;:::i;:::-;;40773:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14600:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21184:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22775:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41067:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40952:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23970:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40722:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21359:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23141:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40889:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16268:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16634:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34455:237;34557:4;34596:35;34581:50;;;:11;:50;;;;:103;;;;34648:36;34672:11;34648:23;:36::i;:::-;34581:103;34574:110;;34455:237;;;:::o;16744:102::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16833:5:::1;16824:6;;:14;;;;;;;;;;;;;;;;;;16744:102:::0;:::o;21015:100::-;21069:13;21102:5;21095:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21015:100;:::o;22482:221::-;22558:7;22586:16;22594:7;22586;:16::i;:::-;22578:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22671:15;:24;22687:7;22671:24;;;;;;;;;;;;;;;;;;;;;22664:31;;22482:221;;;:::o;22012:404::-;22093:13;22109:23;22124:7;22109:14;:23::i;:::-;22093:39;;22157:5;22151:11;;:2;:11;;;;22143:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22237:5;22221:21;;:12;:10;:12::i;:::-;:21;;;:69;;;;22246:44;22270:5;22277:12;:10;:12::i;:::-;22246:23;:44::i;:::-;22221:69;22213:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;22387:21;22396:2;22400:7;22387:8;:21::i;:::-;22082:334;22012:404;;:::o;35108:113::-;35169:7;35196:10;:17;;;;35189:24;;35108:113;:::o;23372:305::-;23533:41;23552:12;:10;:12::i;:::-;23566:7;23533:18;:41::i;:::-;23525:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;23641:28;23651:4;23657:2;23661:7;23641:9;:28::i;:::-;23372:305;;;:::o;42651:113::-;42708:7;42749:6;42737:9;;:18;;;;:::i;:::-;42730:25;;42651:113;;;:::o;34776:256::-;34873:7;34909:23;34926:5;34909:16;:23::i;:::-;34901:5;:31;34893:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;34998:12;:19;35011:5;34998:19;;;;;;;;;;;;;;;:26;35018:5;34998:26;;;;;;;;;;;;34991:33;;34776:256;;;;:::o;42358:285::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40676:5:::1;42428:6;:24;;42420:33;;;::::0;::::1;;40676:5;42485:6;42472:10;;:19;;;;:::i;:::-;:37;;42464:46;;;::::0;::::1;;42528:6;42523:113;42544:6;42540:1;:10;42523:113;;;42572:25;42578:6;;;;;;;;;;;42586:10;;42572:5;:25::i;:::-;42612:10;;:12;;;;;;;;;:::i;:::-;;;;;;42552:3;;;;;:::i;:::-;;;;42523:113;;;;42358:285:::0;:::o;23748:151::-;23852:39;23869:4;23875:2;23879:7;23852:39;;;;;;;;;;;;:16;:39::i;:::-;23748:151;;;:::o;41224:92::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41300:8:::1;41290:7;;:18;;;;;;;;;;;;;;;;;;41224:92:::0;:::o;16524:104::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16615:5:::1;16605:7;;:15;;;;;;;;;;;;;;;;;;16524:104:::0;:::o;35298:233::-;35373:7;35409:30;:28;:30::i;:::-;35401:5;:38;35393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;35506:10;35517:5;35506:17;;;;;;;;:::i;:::-;;;;;;;;;;35499:24;;35298:233;;;:::o;42898:102::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42985:7:::1;42969:13;:23;;;;;;;;;;;;:::i;:::-;;42898:102:::0;:::o;41672:676::-;41770:6;;;;;;;;;;;41756:20;;:10;:20;;;:34;;;;41780:10;;;;;;;;;;;41756:34;:66;;;;41794:16;:28;41811:10;41794:28;;;;;;;;;;;;;;;;;;;;;;;;;41756:66;41748:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;40676:5;41912:10;;:28;;41904:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;40676:5;41987:6;41974:10;;:19;;;;:::i;:::-;:37;;41966:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;42095:8;;42085:6;:18;;42077:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;42174:13;42180:6;42174:5;:13::i;:::-;42161:9;:26;;42153:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;42232:6;42228:113;42248:6;42244:1;:10;42228:113;;;42275:26;42285:3;42290:10;;42275:9;:26::i;:::-;42317:10;;:12;;;;;;;;;:::i;:::-;;;;;;42256:3;;;;;:::i;:::-;;;;42228:113;;;;41672:676;;:::o;20709:239::-;20781:7;20801:13;20817:7;:16;20825:7;20817:16;;;;;;;;;;;;;;;;;;;;;20801:32;;20869:1;20852:19;;:5;:19;;;;20844:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20935:5;20928:12;;;20709:239;;;:::o;20439:208::-;20511:7;20556:1;20539:19;;:5;:19;;;;20531:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;20623:9;:16;20633:5;20623:16;;;;;;;;;;;;;;;;20616:23;;20439:208;;;:::o;15250:148::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15357:1:::1;15320:40;;15341:6;;;;;;;;;;;15320:40;;;;;;;;;;;;15388:1;15371:6;;:19;;;;;;;;;;;;;;;;;;15250:148::o:0;40638:43::-;40676:5;40638:43;:::o;41328:206::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41417:9:::1;41412:115;41436:11;:18;41432:1;:22;41412:115;;;41511:4;41476:16;:32;41493:11;41505:1;41493:14;;;;;;;;:::i;:::-;;;;;;;;41476:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;41456:3;;;;;:::i;:::-;;;;41412:115;;;;41328:206:::0;:::o;43008:344::-;43069:16;43098:15;43116:17;43126:6;43116:9;:17::i;:::-;43098:35;;43146:25;43188:10;43174:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43146:53;;43214:6;43210:107;43230:10;43226:1;:14;43210:107;;;43275:30;43295:6;43303:1;43275:19;:30::i;:::-;43261:8;43270:1;43261:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;43242:3;;;;;:::i;:::-;;;;43210:107;;;;43336:8;43329:15;;;;43008:344;;;:::o;43441:90::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43500:14:::1;:12;:14::i;:::-;43441:90::o:0;40773:26::-;;;;:::o;14600:87::-;14646:7;14673:6;;;;;;;;;;;14666:13;;14600:87;:::o;21184:104::-;21240:13;21273:7;21266:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21184:104;:::o;22775:295::-;22890:12;:10;:12::i;:::-;22878:24;;:8;:24;;;;22870:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22990:8;22945:18;:32;22964:12;:10;:12::i;:::-;22945:32;;;;;;;;;;;;;;;:42;22978:8;22945:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23043:8;23014:48;;23029:12;:10;:12::i;:::-;23014:48;;;23053:8;23014:48;;;;;;:::i;:::-;;;;;;;;22775:295;;:::o;41067:145::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41142:8:::1;41132:7;;:18;;;;;;;;;;;;;;;;;;41173:2;41162:8;:13;;;;41200:4;41187:10;;:17;;;;;;;;;;;;;;;;;;41067:145:::0;:::o;40952:103::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41036:11:::1;41023:10;;:24;;;;;;;;;;;;;;;;;;40952:103:::0;:::o;23970:285::-;24102:41;24121:12;:10;:12::i;:::-;24135:7;24102:18;:41::i;:::-;24094:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24208:39;24222:4;24228:2;24232:7;24241:5;24208:13;:39::i;:::-;23970:285;;;;:::o;40722:32::-;;;;:::o;21359:360::-;21432:13;21466:16;21474:7;21466;:16::i;:::-;21458:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21547:21;21571:10;:8;:10::i;:::-;21547:34;;21623:1;21605:7;21599:21;:25;:112;;;;;;;;;;;;;;;;;21664:7;21673:18;:7;:16;:18::i;:::-;21647:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21599:112;21592:119;;;21359:360;;;:::o;23141:164::-;23238:4;23262:18;:25;23281:5;23262:25;;;;;;;;;;;;;;;:35;23288:8;23262:35;;;;;;;;;;;;;;;;;;;;;;;;;23255:42;;23141:164;;;;:::o;40889:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;16268:244::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16377:1:::1;16357:22;;:8;:22;;;;16349:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16467:8;16438:38;;16459:6;;;;;;;;;;;16438:38;;;;;;;;;;;;16496:8;16487:6;;:17;;;;;;;;;;;;;;;;;;16268:244:::0;:::o;16634:96::-;14831:12;:10;:12::i;:::-;14820:23;;:7;:5;:7::i;:::-;:23;;;14812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16717:5:::1;16711:3;;:11;;;;;;;;;;;;;;;;;;16634:96:::0;:::o;20083:292::-;20185:4;20224:25;20209:40;;;:11;:40;;;;:105;;;;20281:33;20266:48;;;:11;:48;;;;20209:105;:158;;;;20331:36;20355:11;20331:23;:36::i;:::-;20209:158;20202:165;;20083:292;;;:::o;5364:98::-;5417:7;5444:10;5437:17;;5364:98;:::o;25722:127::-;25787:4;25839:1;25811:30;;:7;:16;25819:7;25811:16;;;;;;;;;;;;;;;;;;;;;:30;;;;25804:37;;25722:127;;;:::o;29606:174::-;29708:2;29681:15;:24;29697:7;29681:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;29764:7;29760:2;29726:46;;29735:23;29750:7;29735:14;:23::i;:::-;29726:46;;;;;;;;;;;;29606:174;;:::o;26016:355::-;26109:4;26134:16;26142:7;26134;:16::i;:::-;26126:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26210:13;26226:23;26241:7;26226:14;:23::i;:::-;26210:39;;26279:5;26268:16;;:7;:16;;;:51;;;;26312:7;26288:31;;:20;26300:7;26288:11;:20::i;:::-;:31;;;26268:51;:94;;;;26323:39;26347:5;26354:7;26323:23;:39::i;:::-;26268:94;26260:103;;;26016:355;;;;:::o;28944:544::-;29069:4;29042:31;;:23;29057:7;29042:14;:23::i;:::-;:31;;;29034:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;29152:1;29138:16;;:2;:16;;;;29130:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29208:39;29229:4;29235:2;29239:7;29208:20;:39::i;:::-;29312:29;29329:1;29333:7;29312:8;:29::i;:::-;29373:1;29354:9;:15;29364:4;29354:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;29402:1;29385:9;:13;29395:2;29385:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29433:2;29414:7;:16;29422:7;29414:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29472:7;29468:2;29453:27;;29462:4;29453:27;;;;;;;;;;;;28944:544;;;:::o;27636:382::-;27730:1;27716:16;;:2;:16;;;;27708:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;27789:16;27797:7;27789;:16::i;:::-;27788:17;27780:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27851:45;27880:1;27884:2;27888:7;27851:20;:45::i;:::-;27926:1;27909:9;:13;27919:2;27909:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;27957:2;27938:7;:16;27946:7;27938:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28002:7;27998:2;27977:33;;27994:1;27977:33;;;;;;;;;;;;27636:382;;:::o;26713:110::-;26789:26;26799:2;26803:7;26789:26;;;;;;;;;;;;:9;:26::i;:::-;26713:110;;:::o;15690:413::-;15748:18;15795:4;15791:3;15769:21;:25;;;;:::i;:::-;:30;;;;:::i;:::-;15748:51;;15809:22;15860:4;15856:3;15834:21;:25;;;;:::i;:::-;:30;;;;:::i;:::-;15809:55;;15874:21;15931:14;15920:10;15898:21;:32;;;;:::i;:::-;:47;;;;:::i;:::-;15874:71;;15966:3;;;;;;;;;;;15958:21;;:33;15980:10;15958:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16010:7;;;;;;;;;;;16002:25;;:41;16028:14;16002:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16062:6;;;;;;;;;;;16054:24;;:39;16079:13;16054:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15732:371;;;15690:413::o;25137:272::-;25251:28;25261:4;25267:2;25271:7;25251:9;:28::i;:::-;25298:48;25321:4;25327:2;25331:7;25340:5;25298:22;:48::i;:::-;25290:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25137:272;;;;:::o;42772:114::-;42832:13;42865;42858:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42772:114;:::o;17087:723::-;17143:13;17373:1;17364:5;:10;17360:53;;;17391:10;;;;;;;;;;;;;;;;;;;;;17360:53;17423:12;17438:5;17423:20;;17454:14;17479:78;17494:1;17486:4;:9;17479:78;;17512:8;;;;;:::i;:::-;;;;17543:2;17535:10;;;;;:::i;:::-;;;17479:78;;;17567:19;17599:6;17589:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17567:39;;17617:154;17633:1;17624:5;:10;17617:154;;17661:1;17651:11;;;;;:::i;:::-;;;17728:2;17720:5;:10;;;;:::i;:::-;17707:2;:24;;;;:::i;:::-;17694:39;;17677:6;17684;17677:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;17757:2;17748:11;;;;;:::i;:::-;;;17617:154;;;17795:6;17781:21;;;;;17087:723;;;;:::o;6414:157::-;6499:4;6538:25;6523:40;;;:11;:40;;;;6516:47;;6414:157;;;:::o;36144:555::-;36254:45;36281:4;36287:2;36291:7;36254:26;:45::i;:::-;36332:1;36316:18;;:4;:18;;;36312:187;;;36351:40;36383:7;36351:31;:40::i;:::-;36312:187;;;36421:2;36413:10;;:4;:10;;;36409:90;;36440:47;36473:4;36479:7;36440:32;:47::i;:::-;36409:90;36312:187;36527:1;36513:16;;:2;:16;;;36509:183;;;36546:45;36583:7;36546:36;:45::i;:::-;36509:183;;;36619:4;36613:10;;:2;:10;;;36609:83;;36640:40;36668:2;36672:7;36640:27;:40::i;:::-;36609:83;36509:183;36144:555;;;:::o;27050:250::-;27146:18;27152:2;27156:7;27146:5;:18::i;:::-;27183:54;27214:1;27218:2;27222:7;27231:5;27183:22;:54::i;:::-;27175:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;27050:250;;;:::o;30345:843::-;30466:4;30492:15;:2;:13;;;:15::i;:::-;30488:693;;;30544:2;30528:36;;;30565:12;:10;:12::i;:::-;30579:4;30585:7;30594:5;30528:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;30524:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30791:1;30774:6;:13;:18;30770:341;;;30817:60;;;;;;;;;;:::i;:::-;;;;;;;;30770:341;31061:6;31055:13;31046:6;31042:2;31038:15;31031:38;30524:602;30661:45;;;30651:55;;;:6;:55;;;;30644:62;;;;;30488:693;31165:4;31158:11;;30345:843;;;;;;;:::o;31801:93::-;;;;:::o;37422:164::-;37526:10;:17;;;;37499:15;:24;37515:7;37499:24;;;;;;;;;;;:44;;;;37554:10;37570:7;37554:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37422:164;:::o;38213:988::-;38479:22;38529:1;38504:22;38521:4;38504:16;:22::i;:::-;:26;;;;:::i;:::-;38479:51;;38541:18;38562:17;:26;38580:7;38562:26;;;;;;;;;;;;38541:47;;38709:14;38695:10;:28;38691:328;;38740:19;38762:12;:18;38775:4;38762:18;;;;;;;;;;;;;;;:34;38781:14;38762:34;;;;;;;;;;;;38740:56;;38846:11;38813:12;:18;38826:4;38813:18;;;;;;;;;;;;;;;:30;38832:10;38813:30;;;;;;;;;;;:44;;;;38963:10;38930:17;:30;38948:11;38930:30;;;;;;;;;;;:43;;;;38725:294;38691:328;39115:17;:26;39133:7;39115:26;;;;;;;;;;;39108:33;;;39159:12;:18;39172:4;39159:18;;;;;;;;;;;;;;;:34;39178:14;39159:34;;;;;;;;;;;39152:41;;;38294:907;;38213:988;;:::o;39496:1079::-;39749:22;39794:1;39774:10;:17;;;;:21;;;;:::i;:::-;39749:46;;39806:18;39827:15;:24;39843:7;39827:24;;;;;;;;;;;;39806:45;;40178:19;40200:10;40211:14;40200:26;;;;;;;;:::i;:::-;;;;;;;;;;40178:48;;40264:11;40239:10;40250;40239:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;40375:10;40344:15;:28;40360:11;40344:28;;;;;;;;;;;:41;;;;40516:15;:24;40532:7;40516:24;;;;;;;;;;;40509:31;;;40551:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39567:1008;;;39496:1079;:::o;37000:221::-;37085:14;37102:20;37119:2;37102:16;:20::i;:::-;37085:37;;37160:7;37133:12;:16;37146:2;37133:16;;;;;;;;;;;;;;;:24;37150:6;37133:24;;;;;;;;;;;:34;;;;37207:6;37178:17;:26;37196:7;37178:26;;;;;;;;;;;:35;;;;37074:147;37000:221;;:::o;200:239::-;260:4;285:12;396:7;384:20;376:28;;430:1;423:4;:8;416:15;;;200:239;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1731:155::-;1785:5;1823:6;1810:20;1801:29;;1839:41;1874:5;1839:41;:::i;:::-;1731:155;;;;:::o;1909:370::-;1980:5;2029:3;2022:4;2014:6;2010:17;2006:27;1996:122;;2037:79;;:::i;:::-;1996:122;2154:6;2141:20;2179:94;2269:3;2261:6;2254:4;2246:6;2242:17;2179:94;:::i;:::-;2170:103;;1986:293;1909:370;;;;:::o;2285:133::-;2328:5;2366:6;2353:20;2344:29;;2382:30;2406:5;2382:30;:::i;:::-;2285:133;;;;:::o;2424:137::-;2469:5;2507:6;2494:20;2485:29;;2523:32;2549:5;2523:32;:::i;:::-;2424:137;;;;:::o;2567:141::-;2623:5;2654:6;2648:13;2639:22;;2670:32;2696:5;2670:32;:::i;:::-;2567:141;;;;:::o;2727:338::-;2782:5;2831:3;2824:4;2816:6;2812:17;2808:27;2798:122;;2839:79;;:::i;:::-;2798:122;2956:6;2943:20;2981:78;3055:3;3047:6;3040:4;3032:6;3028:17;2981:78;:::i;:::-;2972:87;;2788:277;2727:338;;;;:::o;3085:340::-;3141:5;3190:3;3183:4;3175:6;3171:17;3167:27;3157:122;;3198:79;;:::i;:::-;3157:122;3315:6;3302:20;3340:79;3415:3;3407:6;3400:4;3392:6;3388:17;3340:79;:::i;:::-;3331:88;;3147:278;3085:340;;;;:::o;3431:139::-;3477:5;3515:6;3502:20;3493:29;;3531:33;3558:5;3531:33;:::i;:::-;3431:139;;;;:::o;3576:329::-;3635:6;3684:2;3672:9;3663:7;3659:23;3655:32;3652:119;;;3690:79;;:::i;:::-;3652:119;3810:1;3835:53;3880:7;3871:6;3860:9;3856:22;3835:53;:::i;:::-;3825:63;;3781:117;3576:329;;;;:::o;3911:345::-;3978:6;4027:2;4015:9;4006:7;4002:23;3998:32;3995:119;;;4033:79;;:::i;:::-;3995:119;4153:1;4178:61;4231:7;4222:6;4211:9;4207:22;4178:61;:::i;:::-;4168:71;;4124:125;3911:345;;;;:::o;4262:474::-;4330:6;4338;4387:2;4375:9;4366:7;4362:23;4358:32;4355:119;;;4393:79;;:::i;:::-;4355:119;4513:1;4538:53;4583:7;4574:6;4563:9;4559:22;4538:53;:::i;:::-;4528:63;;4484:117;4640:2;4666:53;4711:7;4702:6;4691:9;4687:22;4666:53;:::i;:::-;4656:63;;4611:118;4262:474;;;;;:::o;4742:619::-;4819:6;4827;4835;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;5137:2;5163:53;5208:7;5199:6;5188:9;5184:22;5163:53;:::i;:::-;5153:63;;5108:118;5265:2;5291:53;5336:7;5327:6;5316:9;5312:22;5291:53;:::i;:::-;5281:63;;5236:118;4742:619;;;;;:::o;5367:943::-;5462:6;5470;5478;5486;5535:3;5523:9;5514:7;5510:23;5506:33;5503:120;;;5542:79;;:::i;:::-;5503:120;5662:1;5687:53;5732:7;5723:6;5712:9;5708:22;5687:53;:::i;:::-;5677:63;;5633:117;5789:2;5815:53;5860:7;5851:6;5840:9;5836:22;5815:53;:::i;:::-;5805:63;;5760:118;5917:2;5943:53;5988:7;5979:6;5968:9;5964:22;5943:53;:::i;:::-;5933:63;;5888:118;6073:2;6062:9;6058:18;6045:32;6104:18;6096:6;6093:30;6090:117;;;6126:79;;:::i;:::-;6090:117;6231:62;6285:7;6276:6;6265:9;6261:22;6231:62;:::i;:::-;6221:72;;6016:287;5367:943;;;;;;;:::o;6316:468::-;6381:6;6389;6438:2;6426:9;6417:7;6413:23;6409:32;6406:119;;;6444:79;;:::i;:::-;6406:119;6564:1;6589:53;6634:7;6625:6;6614:9;6610:22;6589:53;:::i;:::-;6579:63;;6535:117;6691:2;6717:50;6759:7;6750:6;6739:9;6735:22;6717:50;:::i;:::-;6707:60;;6662:115;6316:468;;;;;:::o;6790:474::-;6858:6;6866;6915:2;6903:9;6894:7;6890:23;6886:32;6883:119;;;6921:79;;:::i;:::-;6883:119;7041:1;7066:53;7111:7;7102:6;7091:9;7087:22;7066:53;:::i;:::-;7056:63;;7012:117;7168:2;7194:53;7239:7;7230:6;7219:9;7215:22;7194:53;:::i;:::-;7184:63;;7139:118;6790:474;;;;;:::o;7270:539::-;7354:6;7403:2;7391:9;7382:7;7378:23;7374:32;7371:119;;;7409:79;;:::i;:::-;7371:119;7557:1;7546:9;7542:17;7529:31;7587:18;7579:6;7576:30;7573:117;;;7609:79;;:::i;:::-;7573:117;7714:78;7784:7;7775:6;7764:9;7760:22;7714:78;:::i;:::-;7704:88;;7500:302;7270:539;;;;:::o;7815:323::-;7871:6;7920:2;7908:9;7899:7;7895:23;7891:32;7888:119;;;7926:79;;:::i;:::-;7888:119;8046:1;8071:50;8113:7;8104:6;8093:9;8089:22;8071:50;:::i;:::-;8061:60;;8017:114;7815:323;;;;:::o;8144:327::-;8202:6;8251:2;8239:9;8230:7;8226:23;8222:32;8219:119;;;8257:79;;:::i;:::-;8219:119;8377:1;8402:52;8446:7;8437:6;8426:9;8422:22;8402:52;:::i;:::-;8392:62;;8348:116;8144:327;;;;:::o;8477:349::-;8546:6;8595:2;8583:9;8574:7;8570:23;8566:32;8563:119;;;8601:79;;:::i;:::-;8563:119;8721:1;8746:63;8801:7;8792:6;8781:9;8777:22;8746:63;:::i;:::-;8736:73;;8692:127;8477:349;;;;:::o;8832:509::-;8901:6;8950:2;8938:9;8929:7;8925:23;8921:32;8918:119;;;8956:79;;:::i;:::-;8918:119;9104:1;9093:9;9089:17;9076:31;9134:18;9126:6;9123:30;9120:117;;;9156:79;;:::i;:::-;9120:117;9261:63;9316:7;9307:6;9296:9;9292:22;9261:63;:::i;:::-;9251:73;;9047:287;8832:509;;;;:::o;9347:329::-;9406:6;9455:2;9443:9;9434:7;9430:23;9426:32;9423:119;;;9461:79;;:::i;:::-;9423:119;9581:1;9606:53;9651:7;9642:6;9631:9;9627:22;9606:53;:::i;:::-;9596:63;;9552:117;9347:329;;;;:::o;9682:179::-;9751:10;9772:46;9814:3;9806:6;9772:46;:::i;:::-;9850:4;9845:3;9841:14;9827:28;;9682:179;;;;:::o;9867:118::-;9954:24;9972:5;9954:24;:::i;:::-;9949:3;9942:37;9867:118;;:::o;10021:732::-;10140:3;10169:54;10217:5;10169:54;:::i;:::-;10239:86;10318:6;10313:3;10239:86;:::i;:::-;10232:93;;10349:56;10399:5;10349:56;:::i;:::-;10428:7;10459:1;10444:284;10469:6;10466:1;10463:13;10444:284;;;10545:6;10539:13;10572:63;10631:3;10616:13;10572:63;:::i;:::-;10565:70;;10658:60;10711:6;10658:60;:::i;:::-;10648:70;;10504:224;10491:1;10488;10484:9;10479:14;;10444:284;;;10448:14;10744:3;10737:10;;10145:608;;;10021:732;;;;:::o;10759:109::-;10840:21;10855:5;10840:21;:::i;:::-;10835:3;10828:34;10759:109;;:::o;10874:360::-;10960:3;10988:38;11020:5;10988:38;:::i;:::-;11042:70;11105:6;11100:3;11042:70;:::i;:::-;11035:77;;11121:52;11166:6;11161:3;11154:4;11147:5;11143:16;11121:52;:::i;:::-;11198:29;11220:6;11198:29;:::i;:::-;11193:3;11189:39;11182:46;;10964:270;10874:360;;;;:::o;11240:364::-;11328:3;11356:39;11389:5;11356:39;:::i;:::-;11411:71;11475:6;11470:3;11411:71;:::i;:::-;11404:78;;11491:52;11536:6;11531:3;11524:4;11517:5;11513:16;11491:52;:::i;:::-;11568:29;11590:6;11568:29;:::i;:::-;11563:3;11559:39;11552:46;;11332:272;11240:364;;;;:::o;11610:377::-;11716:3;11744:39;11777:5;11744:39;:::i;:::-;11799:89;11881:6;11876:3;11799:89;:::i;:::-;11792:96;;11897:52;11942:6;11937:3;11930:4;11923:5;11919:16;11897:52;:::i;:::-;11974:6;11969:3;11965:16;11958:23;;11720:267;11610:377;;;;:::o;11993:366::-;12135:3;12156:67;12220:2;12215:3;12156:67;:::i;:::-;12149:74;;12232:93;12321:3;12232:93;:::i;:::-;12350:2;12345:3;12341:12;12334:19;;11993:366;;;:::o;12365:::-;12507:3;12528:67;12592:2;12587:3;12528:67;:::i;:::-;12521:74;;12604:93;12693:3;12604:93;:::i;:::-;12722:2;12717:3;12713:12;12706:19;;12365:366;;;:::o;12737:::-;12879:3;12900:67;12964:2;12959:3;12900:67;:::i;:::-;12893:74;;12976:93;13065:3;12976:93;:::i;:::-;13094:2;13089:3;13085:12;13078:19;;12737:366;;;:::o;13109:::-;13251:3;13272:67;13336:2;13331:3;13272:67;:::i;:::-;13265:74;;13348:93;13437:3;13348:93;:::i;:::-;13466:2;13461:3;13457:12;13450:19;;13109:366;;;:::o;13481:::-;13623:3;13644:67;13708:2;13703:3;13644:67;:::i;:::-;13637:74;;13720:93;13809:3;13720:93;:::i;:::-;13838:2;13833:3;13829:12;13822:19;;13481:366;;;:::o;13853:::-;13995:3;14016:67;14080:2;14075:3;14016:67;:::i;:::-;14009:74;;14092:93;14181:3;14092:93;:::i;:::-;14210:2;14205:3;14201:12;14194:19;;13853:366;;;:::o;14225:::-;14367:3;14388:67;14452:2;14447:3;14388:67;:::i;:::-;14381:74;;14464:93;14553:3;14464:93;:::i;:::-;14582:2;14577:3;14573:12;14566:19;;14225:366;;;:::o;14597:::-;14739:3;14760:67;14824:2;14819:3;14760:67;:::i;:::-;14753:74;;14836:93;14925:3;14836:93;:::i;:::-;14954:2;14949:3;14945:12;14938:19;;14597:366;;;:::o;14969:::-;15111:3;15132:67;15196:2;15191:3;15132:67;:::i;:::-;15125:74;;15208:93;15297:3;15208:93;:::i;:::-;15326:2;15321:3;15317:12;15310:19;;14969:366;;;:::o;15341:::-;15483:3;15504:67;15568:2;15563:3;15504:67;:::i;:::-;15497:74;;15580:93;15669:3;15580:93;:::i;:::-;15698:2;15693:3;15689:12;15682:19;;15341:366;;;:::o;15713:::-;15855:3;15876:67;15940:2;15935:3;15876:67;:::i;:::-;15869:74;;15952:93;16041:3;15952:93;:::i;:::-;16070:2;16065:3;16061:12;16054:19;;15713:366;;;:::o;16085:::-;16227:3;16248:67;16312:2;16307:3;16248:67;:::i;:::-;16241:74;;16324:93;16413:3;16324:93;:::i;:::-;16442:2;16437:3;16433:12;16426:19;;16085:366;;;:::o;16457:::-;16599:3;16620:67;16684:2;16679:3;16620:67;:::i;:::-;16613:74;;16696:93;16785:3;16696:93;:::i;:::-;16814:2;16809:3;16805:12;16798:19;;16457:366;;;:::o;16829:::-;16971:3;16992:67;17056:2;17051:3;16992:67;:::i;:::-;16985:74;;17068:93;17157:3;17068:93;:::i;:::-;17186:2;17181:3;17177:12;17170:19;;16829:366;;;:::o;17201:::-;17343:3;17364:67;17428:2;17423:3;17364:67;:::i;:::-;17357:74;;17440:93;17529:3;17440:93;:::i;:::-;17558:2;17553:3;17549:12;17542:19;;17201:366;;;:::o;17573:::-;17715:3;17736:67;17800:2;17795:3;17736:67;:::i;:::-;17729:74;;17812:93;17901:3;17812:93;:::i;:::-;17930:2;17925:3;17921:12;17914:19;;17573:366;;;:::o;17945:::-;18087:3;18108:67;18172:2;18167:3;18108:67;:::i;:::-;18101:74;;18184:93;18273:3;18184:93;:::i;:::-;18302:2;18297:3;18293:12;18286:19;;17945:366;;;:::o;18317:::-;18459:3;18480:67;18544:2;18539:3;18480:67;:::i;:::-;18473:74;;18556:93;18645:3;18556:93;:::i;:::-;18674:2;18669:3;18665:12;18658:19;;18317:366;;;:::o;18689:::-;18831:3;18852:67;18916:2;18911:3;18852:67;:::i;:::-;18845:74;;18928:93;19017:3;18928:93;:::i;:::-;19046:2;19041:3;19037:12;19030:19;;18689:366;;;:::o;19061:::-;19203:3;19224:67;19288:2;19283:3;19224:67;:::i;:::-;19217:74;;19300:93;19389:3;19300:93;:::i;:::-;19418:2;19413:3;19409:12;19402:19;;19061:366;;;:::o;19433:::-;19575:3;19596:67;19660:2;19655:3;19596:67;:::i;:::-;19589:74;;19672:93;19761:3;19672:93;:::i;:::-;19790:2;19785:3;19781:12;19774:19;;19433:366;;;:::o;19805:::-;19947:3;19968:67;20032:2;20027:3;19968:67;:::i;:::-;19961:74;;20044:93;20133:3;20044:93;:::i;:::-;20162:2;20157:3;20153:12;20146:19;;19805:366;;;:::o;20177:::-;20319:3;20340:67;20404:2;20399:3;20340:67;:::i;:::-;20333:74;;20416:93;20505:3;20416:93;:::i;:::-;20534:2;20529:3;20525:12;20518:19;;20177:366;;;:::o;20549:108::-;20626:24;20644:5;20626:24;:::i;:::-;20621:3;20614:37;20549:108;;:::o;20663:118::-;20750:24;20768:5;20750:24;:::i;:::-;20745:3;20738:37;20663:118;;:::o;20787:435::-;20967:3;20989:95;21080:3;21071:6;20989:95;:::i;:::-;20982:102;;21101:95;21192:3;21183:6;21101:95;:::i;:::-;21094:102;;21213:3;21206:10;;20787:435;;;;;:::o;21228:222::-;21321:4;21359:2;21348:9;21344:18;21336:26;;21372:71;21440:1;21429:9;21425:17;21416:6;21372:71;:::i;:::-;21228:222;;;;:::o;21456:640::-;21651:4;21689:3;21678:9;21674:19;21666:27;;21703:71;21771:1;21760:9;21756:17;21747:6;21703:71;:::i;:::-;21784:72;21852:2;21841:9;21837:18;21828:6;21784:72;:::i;:::-;21866;21934:2;21923:9;21919:18;21910:6;21866:72;:::i;:::-;21985:9;21979:4;21975:20;21970:2;21959:9;21955:18;21948:48;22013:76;22084:4;22075:6;22013:76;:::i;:::-;22005:84;;21456:640;;;;;;;:::o;22102:373::-;22245:4;22283:2;22272:9;22268:18;22260:26;;22332:9;22326:4;22322:20;22318:1;22307:9;22303:17;22296:47;22360:108;22463:4;22454:6;22360:108;:::i;:::-;22352:116;;22102:373;;;;:::o;22481:210::-;22568:4;22606:2;22595:9;22591:18;22583:26;;22619:65;22681:1;22670:9;22666:17;22657:6;22619:65;:::i;:::-;22481:210;;;;:::o;22697:313::-;22810:4;22848:2;22837:9;22833:18;22825:26;;22897:9;22891:4;22887:20;22883:1;22872:9;22868:17;22861:47;22925:78;22998:4;22989:6;22925:78;:::i;:::-;22917:86;;22697:313;;;;:::o;23016:419::-;23182:4;23220:2;23209:9;23205:18;23197:26;;23269:9;23263:4;23259:20;23255:1;23244:9;23240:17;23233:47;23297:131;23423:4;23297:131;:::i;:::-;23289:139;;23016:419;;;:::o;23441:::-;23607:4;23645:2;23634:9;23630:18;23622:26;;23694:9;23688:4;23684:20;23680:1;23669:9;23665:17;23658:47;23722:131;23848:4;23722:131;:::i;:::-;23714:139;;23441:419;;;:::o;23866:::-;24032:4;24070:2;24059:9;24055:18;24047:26;;24119:9;24113:4;24109:20;24105:1;24094:9;24090:17;24083:47;24147:131;24273:4;24147:131;:::i;:::-;24139:139;;23866:419;;;:::o;24291:::-;24457:4;24495:2;24484:9;24480:18;24472:26;;24544:9;24538:4;24534:20;24530:1;24519:9;24515:17;24508:47;24572:131;24698:4;24572:131;:::i;:::-;24564:139;;24291:419;;;:::o;24716:::-;24882:4;24920:2;24909:9;24905:18;24897:26;;24969:9;24963:4;24959:20;24955:1;24944:9;24940:17;24933:47;24997:131;25123:4;24997:131;:::i;:::-;24989:139;;24716:419;;;:::o;25141:::-;25307:4;25345:2;25334:9;25330:18;25322:26;;25394:9;25388:4;25384:20;25380:1;25369:9;25365:17;25358:47;25422:131;25548:4;25422:131;:::i;:::-;25414:139;;25141:419;;;:::o;25566:::-;25732:4;25770:2;25759:9;25755:18;25747:26;;25819:9;25813:4;25809:20;25805:1;25794:9;25790:17;25783:47;25847:131;25973:4;25847:131;:::i;:::-;25839:139;;25566:419;;;:::o;25991:::-;26157:4;26195:2;26184:9;26180:18;26172:26;;26244:9;26238:4;26234:20;26230:1;26219:9;26215:17;26208:47;26272:131;26398:4;26272:131;:::i;:::-;26264:139;;25991:419;;;:::o;26416:::-;26582:4;26620:2;26609:9;26605:18;26597:26;;26669:9;26663:4;26659:20;26655:1;26644:9;26640:17;26633:47;26697:131;26823:4;26697:131;:::i;:::-;26689:139;;26416:419;;;:::o;26841:::-;27007:4;27045:2;27034:9;27030:18;27022:26;;27094:9;27088:4;27084:20;27080:1;27069:9;27065:17;27058:47;27122:131;27248:4;27122:131;:::i;:::-;27114:139;;26841:419;;;:::o;27266:::-;27432:4;27470:2;27459:9;27455:18;27447:26;;27519:9;27513:4;27509:20;27505:1;27494:9;27490:17;27483:47;27547:131;27673:4;27547:131;:::i;:::-;27539:139;;27266:419;;;:::o;27691:::-;27857:4;27895:2;27884:9;27880:18;27872:26;;27944:9;27938:4;27934:20;27930:1;27919:9;27915:17;27908:47;27972:131;28098:4;27972:131;:::i;:::-;27964:139;;27691:419;;;:::o;28116:::-;28282:4;28320:2;28309:9;28305:18;28297:26;;28369:9;28363:4;28359:20;28355:1;28344:9;28340:17;28333:47;28397:131;28523:4;28397:131;:::i;:::-;28389:139;;28116:419;;;:::o;28541:::-;28707:4;28745:2;28734:9;28730:18;28722:26;;28794:9;28788:4;28784:20;28780:1;28769:9;28765:17;28758:47;28822:131;28948:4;28822:131;:::i;:::-;28814:139;;28541:419;;;:::o;28966:::-;29132:4;29170:2;29159:9;29155:18;29147:26;;29219:9;29213:4;29209:20;29205:1;29194:9;29190:17;29183:47;29247:131;29373:4;29247:131;:::i;:::-;29239:139;;28966:419;;;:::o;29391:::-;29557:4;29595:2;29584:9;29580:18;29572:26;;29644:9;29638:4;29634:20;29630:1;29619:9;29615:17;29608:47;29672:131;29798:4;29672:131;:::i;:::-;29664:139;;29391:419;;;:::o;29816:::-;29982:4;30020:2;30009:9;30005:18;29997:26;;30069:9;30063:4;30059:20;30055:1;30044:9;30040:17;30033:47;30097:131;30223:4;30097:131;:::i;:::-;30089:139;;29816:419;;;:::o;30241:::-;30407:4;30445:2;30434:9;30430:18;30422:26;;30494:9;30488:4;30484:20;30480:1;30469:9;30465:17;30458:47;30522:131;30648:4;30522:131;:::i;:::-;30514:139;;30241:419;;;:::o;30666:::-;30832:4;30870:2;30859:9;30855:18;30847:26;;30919:9;30913:4;30909:20;30905:1;30894:9;30890:17;30883:47;30947:131;31073:4;30947:131;:::i;:::-;30939:139;;30666:419;;;:::o;31091:::-;31257:4;31295:2;31284:9;31280:18;31272:26;;31344:9;31338:4;31334:20;31330:1;31319:9;31315:17;31308:47;31372:131;31498:4;31372:131;:::i;:::-;31364:139;;31091:419;;;:::o;31516:::-;31682:4;31720:2;31709:9;31705:18;31697:26;;31769:9;31763:4;31759:20;31755:1;31744:9;31740:17;31733:47;31797:131;31923:4;31797:131;:::i;:::-;31789:139;;31516:419;;;:::o;31941:::-;32107:4;32145:2;32134:9;32130:18;32122:26;;32194:9;32188:4;32184:20;32180:1;32169:9;32165:17;32158:47;32222:131;32348:4;32222:131;:::i;:::-;32214:139;;31941:419;;;:::o;32366:::-;32532:4;32570:2;32559:9;32555:18;32547:26;;32619:9;32613:4;32609:20;32605:1;32594:9;32590:17;32583:47;32647:131;32773:4;32647:131;:::i;:::-;32639:139;;32366:419;;;:::o;32791:222::-;32884:4;32922:2;32911:9;32907:18;32899:26;;32935:71;33003:1;32992:9;32988:17;32979:6;32935:71;:::i;:::-;32791:222;;;;:::o;33019:129::-;33053:6;33080:20;;:::i;:::-;33070:30;;33109:33;33137:4;33129:6;33109:33;:::i;:::-;33019:129;;;:::o;33154:75::-;33187:6;33220:2;33214:9;33204:19;;33154:75;:::o;33235:311::-;33312:4;33402:18;33394:6;33391:30;33388:56;;;33424:18;;:::i;:::-;33388:56;33474:4;33466:6;33462:17;33454:25;;33534:4;33528;33524:15;33516:23;;33235:311;;;:::o;33552:307::-;33613:4;33703:18;33695:6;33692:30;33689:56;;;33725:18;;:::i;:::-;33689:56;33763:29;33785:6;33763:29;:::i;:::-;33755:37;;33847:4;33841;33837:15;33829:23;;33552:307;;;:::o;33865:308::-;33927:4;34017:18;34009:6;34006:30;34003:56;;;34039:18;;:::i;:::-;34003:56;34077:29;34099:6;34077:29;:::i;:::-;34069:37;;34161:4;34155;34151:15;34143:23;;33865:308;;;:::o;34179:132::-;34246:4;34269:3;34261:11;;34299:4;34294:3;34290:14;34282:22;;34179:132;;;:::o;34317:114::-;34384:6;34418:5;34412:12;34402:22;;34317:114;;;:::o;34437:98::-;34488:6;34522:5;34516:12;34506:22;;34437:98;;;:::o;34541:99::-;34593:6;34627:5;34621:12;34611:22;;34541:99;;;:::o;34646:113::-;34716:4;34748;34743:3;34739:14;34731:22;;34646:113;;;:::o;34765:184::-;34864:11;34898:6;34893:3;34886:19;34938:4;34933:3;34929:14;34914:29;;34765:184;;;;:::o;34955:168::-;35038:11;35072:6;35067:3;35060:19;35112:4;35107:3;35103:14;35088:29;;34955:168;;;;:::o;35129:169::-;35213:11;35247:6;35242:3;35235:19;35287:4;35282:3;35278:14;35263:29;;35129:169;;;;:::o;35304:148::-;35406:11;35443:3;35428:18;;35304:148;;;;:::o;35458:305::-;35498:3;35517:20;35535:1;35517:20;:::i;:::-;35512:25;;35551:20;35569:1;35551:20;:::i;:::-;35546:25;;35705:1;35637:66;35633:74;35630:1;35627:81;35624:107;;;35711:18;;:::i;:::-;35624:107;35755:1;35752;35748:9;35741:16;;35458:305;;;;:::o;35769:185::-;35809:1;35826:20;35844:1;35826:20;:::i;:::-;35821:25;;35860:20;35878:1;35860:20;:::i;:::-;35855:25;;35899:1;35889:35;;35904:18;;:::i;:::-;35889:35;35946:1;35943;35939:9;35934:14;;35769:185;;;;:::o;35960:348::-;36000:7;36023:20;36041:1;36023:20;:::i;:::-;36018:25;;36057:20;36075:1;36057:20;:::i;:::-;36052:25;;36245:1;36177:66;36173:74;36170:1;36167:81;36162:1;36155:9;36148:17;36144:105;36141:131;;;36252:18;;:::i;:::-;36141:131;36300:1;36297;36293:9;36282:20;;35960:348;;;;:::o;36314:191::-;36354:4;36374:20;36392:1;36374:20;:::i;:::-;36369:25;;36408:20;36426:1;36408:20;:::i;:::-;36403:25;;36447:1;36444;36441:8;36438:34;;;36452:18;;:::i;:::-;36438:34;36497:1;36494;36490:9;36482:17;;36314:191;;;;:::o;36511:96::-;36548:7;36577:24;36595:5;36577:24;:::i;:::-;36566:35;;36511:96;;;:::o;36613:104::-;36658:7;36687:24;36705:5;36687:24;:::i;:::-;36676:35;;36613:104;;;:::o;36723:90::-;36757:7;36800:5;36793:13;36786:21;36775:32;;36723:90;;;:::o;36819:149::-;36855:7;36895:66;36888:5;36884:78;36873:89;;36819:149;;;:::o;36974:126::-;37011:7;37051:42;37044:5;37040:54;37029:65;;36974:126;;;:::o;37106:77::-;37143:7;37172:5;37161:16;;37106:77;;;:::o;37189:154::-;37273:6;37268:3;37263;37250:30;37335:1;37326:6;37321:3;37317:16;37310:27;37189:154;;;:::o;37349:307::-;37417:1;37427:113;37441:6;37438:1;37435:13;37427:113;;;37526:1;37521:3;37517:11;37511:18;37507:1;37502:3;37498:11;37491:39;37463:2;37460:1;37456:10;37451:15;;37427:113;;;37558:6;37555:1;37552:13;37549:101;;;37638:1;37629:6;37624:3;37620:16;37613:27;37549:101;37398:258;37349:307;;;:::o;37662:320::-;37706:6;37743:1;37737:4;37733:12;37723:22;;37790:1;37784:4;37780:12;37811:18;37801:81;;37867:4;37859:6;37855:17;37845:27;;37801:81;37929:2;37921:6;37918:14;37898:18;37895:38;37892:84;;;37948:18;;:::i;:::-;37892:84;37713:269;37662:320;;;:::o;37988:281::-;38071:27;38093:4;38071:27;:::i;:::-;38063:6;38059:40;38201:6;38189:10;38186:22;38165:18;38153:10;38150:34;38147:62;38144:88;;;38212:18;;:::i;:::-;38144:88;38252:10;38248:2;38241:22;38031:238;37988:281;;:::o;38275:233::-;38314:3;38337:24;38355:5;38337:24;:::i;:::-;38328:33;;38383:66;38376:5;38373:77;38370:103;;;38453:18;;:::i;:::-;38370:103;38500:1;38493:5;38489:13;38482:20;;38275:233;;;:::o;38514:176::-;38546:1;38563:20;38581:1;38563:20;:::i;:::-;38558:25;;38597:20;38615:1;38597:20;:::i;:::-;38592:25;;38636:1;38626:35;;38641:18;;:::i;:::-;38626:35;38682:1;38679;38675:9;38670:14;;38514:176;;;;:::o;38696:180::-;38744:77;38741:1;38734:88;38841:4;38838:1;38831:15;38865:4;38862:1;38855:15;38882:180;38930:77;38927:1;38920:88;39027:4;39024:1;39017:15;39051:4;39048:1;39041:15;39068:180;39116:77;39113:1;39106:88;39213:4;39210:1;39203:15;39237:4;39234:1;39227:15;39254:180;39302:77;39299:1;39292:88;39399:4;39396:1;39389:15;39423:4;39420:1;39413:15;39440:180;39488:77;39485:1;39478:88;39585:4;39582:1;39575:15;39609:4;39606:1;39599:15;39626:180;39674:77;39671:1;39664:88;39771:4;39768:1;39761:15;39795:4;39792:1;39785:15;39812:117;39921:1;39918;39911:12;39935:117;40044:1;40041;40034:12;40058:117;40167:1;40164;40157:12;40181:117;40290:1;40287;40280:12;40304:117;40413:1;40410;40403:12;40427:102;40468:6;40519:2;40515:7;40510:2;40503:5;40499:14;40495:28;40485:38;;40427:102;;;:::o;40535:290::-;40675:34;40671:1;40663:6;40659:14;40652:58;40744:34;40739:2;40731:6;40727:15;40720:59;40813:4;40808:2;40800:6;40796:15;40789:29;40535:290;:::o;40831:230::-;40971:34;40967:1;40959:6;40955:14;40948:58;41040:13;41035:2;41027:6;41023:15;41016:38;40831:230;:::o;41067:237::-;41207:34;41203:1;41195:6;41191:14;41184:58;41276:20;41271:2;41263:6;41259:15;41252:45;41067:237;:::o;41310:225::-;41450:34;41446:1;41438:6;41434:14;41427:58;41519:8;41514:2;41506:6;41502:15;41495:33;41310:225;:::o;41541:178::-;41681:30;41677:1;41669:6;41665:14;41658:54;41541:178;:::o;41725:223::-;41865:34;41861:1;41853:6;41849:14;41842:58;41934:6;41929:2;41921:6;41917:15;41910:31;41725:223;:::o;41954:175::-;42094:27;42090:1;42082:6;42078:14;42071:51;41954:175;:::o;42135:231::-;42275:34;42271:1;42263:6;42259:14;42252:58;42344:14;42339:2;42331:6;42327:15;42320:39;42135:231;:::o;42372:243::-;42512:34;42508:1;42500:6;42496:14;42489:58;42581:26;42576:2;42568:6;42564:15;42557:51;42372:243;:::o;42621:229::-;42761:34;42757:1;42749:6;42745:14;42738:58;42830:12;42825:2;42817:6;42813:15;42806:37;42621:229;:::o;42856:228::-;42996:34;42992:1;42984:6;42980:14;42973:58;43065:11;43060:2;43052:6;43048:15;43041:36;42856:228;:::o;43090:182::-;43230:34;43226:1;43218:6;43214:14;43207:58;43090:182;:::o;43278:237::-;43418:34;43414:1;43406:6;43402:14;43395:58;43487:20;43482:2;43474:6;43470:15;43463:45;43278:237;:::o;43521:231::-;43661:34;43657:1;43649:6;43645:14;43638:58;43730:14;43725:2;43717:6;43713:15;43706:39;43521:231;:::o;43758:182::-;43898:34;43894:1;43886:6;43882:14;43875:58;43758:182;:::o;43946:221::-;44086:34;44082:1;44074:6;44070:14;44063:58;44155:4;44150:2;44142:6;44138:15;44131:29;43946:221;:::o;44173:228::-;44313:34;44309:1;44301:6;44297:14;44290:58;44382:11;44377:2;44369:6;44365:15;44358:36;44173:228;:::o;44407:234::-;44547:34;44543:1;44535:6;44531:14;44524:58;44616:17;44611:2;44603:6;44599:15;44592:42;44407:234;:::o;44647:167::-;44787:19;44783:1;44775:6;44771:14;44764:43;44647:167;:::o;44820:160::-;44960:12;44956:1;44948:6;44944:14;44937:36;44820:160;:::o;44986:220::-;45126:34;45122:1;45114:6;45110:14;45103:58;45195:3;45190:2;45182:6;45178:15;45171:28;44986:220;:::o;45212:236::-;45352:34;45348:1;45340:6;45336:14;45329:58;45421:19;45416:2;45408:6;45404:15;45397:44;45212:236;:::o;45454:231::-;45594:34;45590:1;45582:6;45578:14;45571:58;45663:14;45658:2;45650:6;45646:15;45639:39;45454:231;:::o;45691:122::-;45764:24;45782:5;45764:24;:::i;:::-;45757:5;45754:35;45744:63;;45803:1;45800;45793:12;45744:63;45691:122;:::o;45819:138::-;45900:32;45926:5;45900:32;:::i;:::-;45893:5;45890:43;45880:71;;45947:1;45944;45937:12;45880:71;45819:138;:::o;45963:116::-;46033:21;46048:5;46033:21;:::i;:::-;46026:5;46023:32;46013:60;;46069:1;46066;46059:12;46013:60;45963:116;:::o;46085:120::-;46157:23;46174:5;46157:23;:::i;:::-;46150:5;46147:34;46137:62;;46195:1;46192;46185:12;46137:62;46085:120;:::o;46211:122::-;46284:24;46302:5;46284:24;:::i;:::-;46277:5;46274:35;46264:63;;46323:1;46320;46313:12;46264:63;46211:122;:::o

Swarm Source

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