ETH Price: $3,513.67 (+4.23%)
Gas: 3 Gwei

Token

 

Overview

Max Total Supply

1,799

Holders

439

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0x48193776062991c2fe024d9c99c35576a51dade0
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:
CanvasRegistry

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 99999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-01-13
*/

// hevm: flattened sources of src/CanvasRegistry.sol
// SPDX-License-Identifier: MIT AND AGPL-3.0-only AND Unlicense
pragma solidity =0.8.10 >=0.8.0 >=0.8.0 <0.9.0;

////// lib/openzeppelin-contracts/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

/* pragma solidity ^0.8.0; */

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

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

////// lib/openzeppelin-contracts/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

/* pragma solidity ^0.8.0; */

/* import "../utils/Context.sol"; */

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

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

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

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

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

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

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

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

////// lib/openzeppelin-contracts/contracts/utils/Strings.sol
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

/* pragma solidity ^0.8.0; */

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "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] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

////// lib/solmate/src/tokens/ERC1155.sol
/* pragma solidity >=0.8.0; */

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*///////////////////////////////////////////////////////////////
                                EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    event URI(string value, uint256 indexed id);

    /*///////////////////////////////////////////////////////////////
                            ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*///////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                             ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        for (uint256 i = 0; i < idsLength; ) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                i++;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] memory owners, uint256[] memory ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        uint256 ownersLength = owners.length; // Saves MLOADs.

        require(ownersLength == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < ownersLength; i++) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*///////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                i++;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                i++;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
interface ERC1155TokenReceiver {
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external returns (bytes4);
}

////// src/CanvasRegistry.sol
/* pragma solidity 0.8.10; */


/* import "../lib/openzeppelin-contracts/contracts/access/Ownable.sol"; */
/* import "../lib/openzeppelin-contracts/contracts/utils/Strings.sol"; */
/* import "../lib/solmate/src/tokens/ERC1155.sol"; */

contract CanvasRegistry is ERC1155, Ownable {
    using Strings for uint;
    string private _uri;

    event TransferCanvasOwnership(address indexed from, address indexed to, uint indexed tokenId);

    mapping (uint => address) public canvasOwners;
    ERC1155 presaleMintPass;
    uint public mintPrice = 0.01 ether;

    bool publicSale;
    bool mintingPaused;

    constructor(address presaleMintPassAddress, string memory initialURI) {
        presaleMintPass = ERC1155(presaleMintPassAddress);
        _uri = initialURI;
    }

    function transferCanvasOwnership(uint tokenId, address newOwner) public {
        require(canvasOwners[tokenId] == msg.sender);
        canvasOwners[tokenId] = newOwner; 
        emit TransferCanvasOwnership(msg.sender, newOwner, tokenId);
    }

    function mint(uint label, uint amount) public payable {
        require(publicSale && !mintingPaused, "Presale active");
        require(msg.value >= mintPrice * amount, "Requires more Ether");
        require(canvasOwners[label] == address(0), "This CNVS already exists.");

        canvasOwners[label] = msg.sender; 
        _mint(msg.sender, label, amount, "");
    }

    function gift(uint label, uint amount, address to) public payable {
        require(publicSale && !mintingPaused, "Presale active");
        require(msg.value >= mintPrice * amount, "Requires more Ether");
        require(canvasOwners[label] == address(0), "This CNVS already exists.");

        canvasOwners[label] = to; 
        _mint(to, label, amount, "");
    }

    function mintPresale(uint label, uint amount) public {
        require(
            !publicSale && 
            !mintingPaused && 
            (presaleMintPass.balanceOf(msg.sender, 1) > 0 || presaleMintPass.balanceOf(msg.sender, 2) > 0),
             "You are not elligible for presale."
        );
        require(canvasOwners[label] == address(0), "This CNVS already exists.");

        canvasOwners[label] = msg.sender; 
        _mint(msg.sender, label, amount, "");
    }

    function setMintPrice(uint newMintPrice) public onlyOwner {
        mintPrice = newMintPrice;
    }

    function setURI(string memory newURI) public onlyOwner {
        _uri = newURI;
    }

    /// @dev Can only be activated once, on purpose
    function setPublicSale() public onlyOwner {
        publicSale = true;
    }

    function setMintingPaused(bool paused) public onlyOwner {
        mintingPaused = paused;
    }

    function uri(uint id) public view virtual override returns (string memory) {
        return string(abi.encodePacked(_uri, id.toString()));
    } 

    function withdrawal(address receiver) public onlyOwner {
        payable(receiver).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"presaleMintPassAddress","type":"address"},{"internalType":"string","name":"initialURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","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":"TransferCanvasOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"canvasOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"label","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"gift","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"label","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"label","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setMintingPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferCanvasOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"withdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052662386f26fc100006006553480156200001c57600080fd5b5060405162003d1138038062003d11833981810160405281019062000042919062000444565b6200006262000056620000c460201b60201c565b620000cc60201b60201c565b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060039080519060200190620000bb92919062000192565b5050506200050f565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001a090620004d9565b90600052602060002090601f016020900481019282620001c4576000855562000210565b82601f10620001df57805160ff191683800117855562000210565b8280016001018555821562000210579182015b828111156200020f578251825591602001919060010190620001f2565b5b5090506200021f919062000223565b5090565b5b808211156200023e57600081600090555060010162000224565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002838262000256565b9050919050565b620002958162000276565b8114620002a157600080fd5b50565b600081519050620002b5816200028a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200031082620002c5565b810181811067ffffffffffffffff82111715620003325762000331620002d6565b5b80604052505050565b60006200034762000242565b905062000355828262000305565b919050565b600067ffffffffffffffff821115620003785762000377620002d6565b5b6200038382620002c5565b9050602081019050919050565b60005b83811015620003b057808201518184015260208101905062000393565b83811115620003c0576000848401525b50505050565b6000620003dd620003d7846200035a565b6200033b565b905082815260208101848484011115620003fc57620003fb620002c0565b5b6200040984828562000390565b509392505050565b600082601f830112620004295762000428620002bb565b5b81516200043b848260208601620003c6565b91505092915050565b600080604083850312156200045e576200045d6200024c565b5b60006200046e85828601620002a4565b925050602083015167ffffffffffffffff81111562000492576200049162000251565b5b620004a08582860162000411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f257607f821691505b60208210811415620005095762000508620004aa565b5b50919050565b6137f2806200051f6000396000f3fe6080604052600436106101745760003560e01c8063715018a6116100cb578063ad13419d1161007f578063f242432a11610059578063f242432a146104c2578063f2fde38b146104eb578063f4a0a5281461051457610174565b8063ad13419d14610440578063c260804c14610469578063e985e9c51461048557610174565b80638da5cb5b116100b05780638da5cb5b146103c357806396131049146103ee578063a22cb4651461041757610174565b8063715018a61461038357806389fd66eb1461039a57610174565b80632eb2c2d61161012d5780635d07c350116101075780635d07c350146102f25780636336a4341461031b5780636817c76c1461035857610174565b80632eb2c2d6146102755780634e1273f41461029e57806356f8f78c146102db57610174565b806302fe53051161015e57806302fe5305146101f35780630e89341c1461021c5780631b2ef1ca1461025957610174565b8062fdd58e1461017957806301ffc9a7146101b6575b600080fd5b34801561018557600080fd5b506101a0600480360381019061019b91906122ee565b61053d565b6040516101ad919061233d565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d891906123b0565b610562565b6040516101ea91906123f8565b60405180910390f35b3480156101ff57600080fd5b5061021a60048036038101906102159190612559565b6105f4565b005b34801561022857600080fd5b50610243600480360381019061023e91906125a2565b61068a565b6040516102509190612657565b60405180910390f35b610273600480360381019061026e9190612679565b6106be565b005b34801561028157600080fd5b5061029c60048036038101906102979190612822565b610889565b005b3480156102aa57600080fd5b506102c560048036038101906102c091906129b4565b610cdc565b6040516102d29190612aea565b60405180910390f35b3480156102e757600080fd5b506102f0610e36565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612679565b610ecf565b005b34801561032757600080fd5b50610342600480360381019061033d91906125a2565b61119c565b60405161034f9190612b1b565b60405180910390f35b34801561036457600080fd5b5061036d6111cf565b60405161037a919061233d565b60405180910390f35b34801561038f57600080fd5b506103986111d5565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190612b36565b61125d565b005b3480156103cf57600080fd5b506103d8611379565b6040516103e59190612b1b565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190612b76565b6113a3565b005b34801561042357600080fd5b5061043e60048036038101906104399190612bcf565b611469565b005b34801561044c57600080fd5b5061046760048036038101906104629190612c0f565b611566565b005b610483600480360381019061047e9190612c3c565b6115ff565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612c8f565b6117cb565b6040516104b991906123f8565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612ccf565b6117fa565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612b76565b611baa565b005b34801561052057600080fd5b5061053b600480360381019061053691906125a2565b611ca2565b005b6000602052816000526040600020602052806000526040600020600091509150505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105bd575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105ed5750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6105fc611d28565b73ffffffffffffffffffffffffffffffffffffffff1661061a611379565b73ffffffffffffffffffffffffffffffffffffffff1614610670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066790612db2565b60405180910390fd5b80600390805190602001906106869291906121a3565b5050565b6060600361069783611d30565b6040516020016106a8929190612f03565b6040516020818303038152906040529050919050565b600760009054906101000a900460ff1680156106e75750600760019054906101000a900460ff16155b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d90612f73565b60405180910390fd5b806006546107349190612fc2565b341015610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076d90613068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f906130d4565b60405180910390fd5b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061088533838360405180602001604052806000815250611e91565b5050565b600083519050825181146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990613140565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109925750600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c8906131ac565b60405180910390fd5b60005b81811015610af55760008582815181106109f1576109f06131cc565b5b602002602001015190506000858381518110610a1057610a0f6131cc565b5b60200260200101519050806000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000828254610a7991906131fb565b92505081905550806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000828254610adf919061322f565b92505081905550828060010193505050506109d4565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610b6c929190613285565b60405180910390a460008573ffffffffffffffffffffffffffffffffffffffff163b14610c635763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168573ffffffffffffffffffffffffffffffffffffffff1663bc197c8133898888886040518663ffffffff1660e01b8152600401610bfb959493929190613311565b6020604051808303816000875af1158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e919061338e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610c95565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613407565b60405180910390fd5b505050505050565b606060008351905082518114610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613140565b60405180910390fd5b835167ffffffffffffffff811115610d4257610d4161242e565b5b604051908082528060200260200182016040528015610d705781602001602082028036833780820191505090505b50915060005b81811015610e2e57600080868381518110610d9457610d936131cc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610deb57610dea6131cc565b5b6020026020010151815260200190815260200160002054838281518110610e1557610e146131cc565b5b6020026020010181815250508080600101915050610d76565b505092915050565b610e3e611d28565b73ffffffffffffffffffffffffffffffffffffffff16610e5c611379565b73ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990612db2565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b600760009054906101000a900460ff16158015610ef95750600760019054906101000a900460ff16155b801561104a57506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360016040518363ffffffff1660e01b8152600401610f5f92919061346c565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906134aa565b118061104957506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360026040518363ffffffff1660e01b8152600401611006929190613512565b602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906134aa565b115b5b611089576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611080906135ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611122906130d4565b60405180910390fd5b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061119833838360405180602001604052806000815250611e91565b5050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6111dd611d28565b73ffffffffffffffffffffffffffffffffffffffff166111fb611379565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890612db2565b60405180910390fd5b61125b60006120dd565b565b3373ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c857600080fd5b806004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f714f075c25484c168f193b3f402f357cc1befafa0d23dadc6467be5ec83a186160405160405180910390a45050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113ab611d28565b73ffffffffffffffffffffffffffffffffffffffff166113c9611379565b73ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612db2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611465573d6000803e3d6000fd5b5050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161155a91906123f8565b60405180910390a35050565b61156e611d28565b73ffffffffffffffffffffffffffffffffffffffff1661158c611379565b73ffffffffffffffffffffffffffffffffffffffff16146115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d990612db2565b60405180910390fd5b80600760016101000a81548160ff02191690831515021790555050565b600760009054906101000a900460ff1680156116285750600760019054906101000a900460ff16155b611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612f73565b60405180910390fd5b816006546116759190612fc2565b3410156116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90613068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906130d4565b60405180910390fd5b806004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117c681848460405180602001604052806000815250611e91565b505050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118ba5750600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906131ac565b60405180910390fd5b816000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461195891906131fb565b92505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008282546119be919061322f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611a3b9291906135cd565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b14611b325763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6133888787876040518663ffffffff1660e01b8152600401611aca9594939291906135f6565b6020604051808303816000875af1158015611ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0d919061338e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b64565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613407565b60405180910390fd5b5050505050565b611bb2611d28565b73ffffffffffffffffffffffffffffffffffffffff16611bd0611379565b73ffffffffffffffffffffffffffffffffffffffff1614611c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1d90612db2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d906136c2565b60405180910390fd5b611c9f816120dd565b50565b611caa611d28565b73ffffffffffffffffffffffffffffffffffffffff16611cc8611379565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590612db2565b60405180910390fd5b8060068190555050565b600033905090565b60606000821415611d78576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e8c565b600082905060005b60008214611daa578080611d93906136e2565b915050600a82611da3919061375a565b9150611d80565b60008167ffffffffffffffff811115611dc657611dc561242e565b5b6040519080825280601f01601f191660200182016040528015611df85781602001600182028036833780820191505090505b5090505b60008514611e8557600182611e1191906131fb565b9150600a85611e20919061378b565b6030611e2c919061322f565b60f81b818381518110611e4257611e416131cc565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e7e919061375a565b9450611dfc565b8093505050505b919050565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000828254611ef0919061322f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611f6e9291906135cd565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b146120665763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e613360008787876040518663ffffffff1660e01b8152600401611ffe9594939291906135f6565b6020604051808303816000875af115801561201d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612041919061338e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612098565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b6120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce90613407565b60405180910390fd5b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546121af90612e01565b90600052602060002090601f0160209004810192826121d15760008555612218565b82601f106121ea57805160ff1916838001178555612218565b82800160010185558215612218579182015b828111156122175782518255916020019190600101906121fc565b5b5090506122259190612229565b5090565b5b8082111561224257600081600090555060010161222a565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122858261225a565b9050919050565b6122958161227a565b81146122a057600080fd5b50565b6000813590506122b28161228c565b92915050565b6000819050919050565b6122cb816122b8565b81146122d657600080fd5b50565b6000813590506122e8816122c2565b92915050565b6000806040838503121561230557612304612250565b5b6000612313858286016122a3565b9250506020612324858286016122d9565b9150509250929050565b612337816122b8565b82525050565b6000602082019050612352600083018461232e565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61238d81612358565b811461239857600080fd5b50565b6000813590506123aa81612384565b92915050565b6000602082840312156123c6576123c5612250565b5b60006123d48482850161239b565b91505092915050565b60008115159050919050565b6123f2816123dd565b82525050565b600060208201905061240d60008301846123e9565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124668261241d565b810181811067ffffffffffffffff821117156124855761248461242e565b5b80604052505050565b6000612498612246565b90506124a4828261245d565b919050565b600067ffffffffffffffff8211156124c4576124c361242e565b5b6124cd8261241d565b9050602081019050919050565b82818337600083830152505050565b60006124fc6124f7846124a9565b61248e565b90508281526020810184848401111561251857612517612418565b5b6125238482856124da565b509392505050565b600082601f8301126125405761253f612413565b5b81356125508482602086016124e9565b91505092915050565b60006020828403121561256f5761256e612250565b5b600082013567ffffffffffffffff81111561258d5761258c612255565b5b6125998482850161252b565b91505092915050565b6000602082840312156125b8576125b7612250565b5b60006125c6848285016122d9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126095780820151818401526020810190506125ee565b83811115612618576000848401525b50505050565b6000612629826125cf565b61263381856125da565b93506126438185602086016125eb565b61264c8161241d565b840191505092915050565b60006020820190508181036000830152612671818461261e565b905092915050565b600080604083850312156126905761268f612250565b5b600061269e858286016122d9565b92505060206126af858286016122d9565b9150509250929050565b600067ffffffffffffffff8211156126d4576126d361242e565b5b602082029050602081019050919050565b600080fd5b60006126fd6126f8846126b9565b61248e565b905080838252602082019050602084028301858111156127205761271f6126e5565b5b835b81811015612749578061273588826122d9565b845260208401935050602081019050612722565b5050509392505050565b600082601f83011261276857612767612413565b5b81356127788482602086016126ea565b91505092915050565b600067ffffffffffffffff82111561279c5761279b61242e565b5b6127a58261241d565b9050602081019050919050565b60006127c56127c084612781565b61248e565b9050828152602081018484840111156127e1576127e0612418565b5b6127ec8482856124da565b509392505050565b600082601f83011261280957612808612413565b5b81356128198482602086016127b2565b91505092915050565b600080600080600060a0868803121561283e5761283d612250565b5b600061284c888289016122a3565b955050602061285d888289016122a3565b945050604086013567ffffffffffffffff81111561287e5761287d612255565b5b61288a88828901612753565b935050606086013567ffffffffffffffff8111156128ab576128aa612255565b5b6128b788828901612753565b925050608086013567ffffffffffffffff8111156128d8576128d7612255565b5b6128e4888289016127f4565b9150509295509295909350565b600067ffffffffffffffff82111561290c5761290b61242e565b5b602082029050602081019050919050565b600061293061292b846128f1565b61248e565b90508083825260208201905060208402830185811115612953576129526126e5565b5b835b8181101561297c578061296888826122a3565b845260208401935050602081019050612955565b5050509392505050565b600082601f83011261299b5761299a612413565b5b81356129ab84826020860161291d565b91505092915050565b600080604083850312156129cb576129ca612250565b5b600083013567ffffffffffffffff8111156129e9576129e8612255565b5b6129f585828601612986565b925050602083013567ffffffffffffffff811115612a1657612a15612255565b5b612a2285828601612753565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612a61816122b8565b82525050565b6000612a738383612a58565b60208301905092915050565b6000602082019050919050565b6000612a9782612a2c565b612aa18185612a37565b9350612aac83612a48565b8060005b83811015612add578151612ac48882612a67565b9750612acf83612a7f565b925050600181019050612ab0565b5085935050505092915050565b60006020820190508181036000830152612b048184612a8c565b905092915050565b612b158161227a565b82525050565b6000602082019050612b306000830184612b0c565b92915050565b60008060408385031215612b4d57612b4c612250565b5b6000612b5b858286016122d9565b9250506020612b6c858286016122a3565b9150509250929050565b600060208284031215612b8c57612b8b612250565b5b6000612b9a848285016122a3565b91505092915050565b612bac816123dd565b8114612bb757600080fd5b50565b600081359050612bc981612ba3565b92915050565b60008060408385031215612be657612be5612250565b5b6000612bf4858286016122a3565b9250506020612c0585828601612bba565b9150509250929050565b600060208284031215612c2557612c24612250565b5b6000612c3384828501612bba565b91505092915050565b600080600060608486031215612c5557612c54612250565b5b6000612c63868287016122d9565b9350506020612c74868287016122d9565b9250506040612c85868287016122a3565b9150509250925092565b60008060408385031215612ca657612ca5612250565b5b6000612cb4858286016122a3565b9250506020612cc5858286016122a3565b9150509250929050565b600080600080600060a08688031215612ceb57612cea612250565b5b6000612cf9888289016122a3565b9550506020612d0a888289016122a3565b9450506040612d1b888289016122d9565b9350506060612d2c888289016122d9565b925050608086013567ffffffffffffffff811115612d4d57612d4c612255565b5b612d59888289016127f4565b9150509295509295909350565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d9c6020836125da565b9150612da782612d66565b602082019050919050565b60006020820190508181036000830152612dcb81612d8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1957607f821691505b60208210811415612e2d57612e2c612dd2565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612e6081612e01565b612e6a8186612e33565b94506001821660008114612e855760018114612e9657612ec9565b60ff19831686528186019350612ec9565b612e9f85612e3e565b60005b83811015612ec157815481890152600182019150602081019050612ea2565b838801955050505b50505092915050565b6000612edd826125cf565b612ee78185612e33565b9350612ef78185602086016125eb565b80840191505092915050565b6000612f0f8285612e53565b9150612f1b8284612ed2565b91508190509392505050565b7f50726573616c6520616374697665000000000000000000000000000000000000600082015250565b6000612f5d600e836125da565b9150612f6882612f27565b602082019050919050565b60006020820190508181036000830152612f8c81612f50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fcd826122b8565b9150612fd8836122b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301157613010612f93565b5b828202905092915050565b7f5265717569726573206d6f726520457468657200000000000000000000000000600082015250565b60006130526013836125da565b915061305d8261301c565b602082019050919050565b6000602082019050818103600083015261308181613045565b9050919050565b7f5468697320434e565320616c7265616479206578697374732e00000000000000600082015250565b60006130be6019836125da565b91506130c982613088565b602082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f4c454e4754485f4d49534d415443480000000000000000000000000000000000600082015250565b600061312a600f836125da565b9150613135826130f4565b602082019050919050565b600060208201905081810360008301526131598161311d565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000613196600e836125da565b91506131a182613160565b602082019050919050565b600060208201905081810360008301526131c581613189565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613206826122b8565b9150613211836122b8565b92508282101561322457613223612f93565b5b828203905092915050565b600061323a826122b8565b9150613245836122b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561327a57613279612f93565b5b828201905092915050565b6000604082019050818103600083015261329f8185612a8c565b905081810360208301526132b38184612a8c565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006132e3826132bc565b6132ed81856132c7565b93506132fd8185602086016125eb565b6133068161241d565b840191505092915050565b600060a0820190506133266000830188612b0c565b6133336020830187612b0c565b81810360408301526133458186612a8c565b905081810360608301526133598185612a8c565b9050818103608083015261336d81846132d8565b90509695505050505050565b60008151905061338881612384565b92915050565b6000602082840312156133a4576133a3612250565b5b60006133b284828501613379565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006133f16010836125da565b91506133fc826133bb565b602082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b6000819050919050565b6000819050919050565b600061345661345161344c84613427565b613431565b6122b8565b9050919050565b6134668161343b565b82525050565b60006040820190506134816000830185612b0c565b61348e602083018461345d565b9392505050565b6000815190506134a4816122c2565b92915050565b6000602082840312156134c0576134bf612250565b5b60006134ce84828501613495565b91505092915050565b6000819050919050565b60006134fc6134f76134f2846134d7565b613431565b6122b8565b9050919050565b61350c816134e1565b82525050565b60006040820190506135276000830185612b0c565b6135346020830184613503565b9392505050565b7f596f7520617265206e6f7420656c6c696769626c6520666f722070726573616c60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006135976022836125da565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b60006040820190506135e2600083018561232e565b6135ef602083018461232e565b9392505050565b600060a08201905061360b6000830188612b0c565b6136186020830187612b0c565b613625604083018661232e565b613632606083018561232e565b818103608083015261364481846132d8565b90509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136ac6026836125da565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b60006136ed826122b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137205761371f612f93565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613765826122b8565b9150613770836122b8565b9250826137805761377f61372b565b5b828204905092915050565b6000613796826122b8565b91506137a1836122b8565b9250826137b1576137b061372b565b5b82820690509291505056fea2646970667358221220a32a3d96d337001b7cd504eb5776d69c22e37e2497225be4e3472a5bf026d96b64736f6c634300080a00330000000000000000000000000bd4d37e0907c9f564aaa0a7528837b81b25c6050000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002968747470733a2f2f7069786c65742e73747564696f2f6170692f76312f63616e7661732f6d6574612f0000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101745760003560e01c8063715018a6116100cb578063ad13419d1161007f578063f242432a11610059578063f242432a146104c2578063f2fde38b146104eb578063f4a0a5281461051457610174565b8063ad13419d14610440578063c260804c14610469578063e985e9c51461048557610174565b80638da5cb5b116100b05780638da5cb5b146103c357806396131049146103ee578063a22cb4651461041757610174565b8063715018a61461038357806389fd66eb1461039a57610174565b80632eb2c2d61161012d5780635d07c350116101075780635d07c350146102f25780636336a4341461031b5780636817c76c1461035857610174565b80632eb2c2d6146102755780634e1273f41461029e57806356f8f78c146102db57610174565b806302fe53051161015e57806302fe5305146101f35780630e89341c1461021c5780631b2ef1ca1461025957610174565b8062fdd58e1461017957806301ffc9a7146101b6575b600080fd5b34801561018557600080fd5b506101a0600480360381019061019b91906122ee565b61053d565b6040516101ad919061233d565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d891906123b0565b610562565b6040516101ea91906123f8565b60405180910390f35b3480156101ff57600080fd5b5061021a60048036038101906102159190612559565b6105f4565b005b34801561022857600080fd5b50610243600480360381019061023e91906125a2565b61068a565b6040516102509190612657565b60405180910390f35b610273600480360381019061026e9190612679565b6106be565b005b34801561028157600080fd5b5061029c60048036038101906102979190612822565b610889565b005b3480156102aa57600080fd5b506102c560048036038101906102c091906129b4565b610cdc565b6040516102d29190612aea565b60405180910390f35b3480156102e757600080fd5b506102f0610e36565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612679565b610ecf565b005b34801561032757600080fd5b50610342600480360381019061033d91906125a2565b61119c565b60405161034f9190612b1b565b60405180910390f35b34801561036457600080fd5b5061036d6111cf565b60405161037a919061233d565b60405180910390f35b34801561038f57600080fd5b506103986111d5565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190612b36565b61125d565b005b3480156103cf57600080fd5b506103d8611379565b6040516103e59190612b1b565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190612b76565b6113a3565b005b34801561042357600080fd5b5061043e60048036038101906104399190612bcf565b611469565b005b34801561044c57600080fd5b5061046760048036038101906104629190612c0f565b611566565b005b610483600480360381019061047e9190612c3c565b6115ff565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612c8f565b6117cb565b6040516104b991906123f8565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612ccf565b6117fa565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612b76565b611baa565b005b34801561052057600080fd5b5061053b600480360381019061053691906125a2565b611ca2565b005b6000602052816000526040600020602052806000526040600020600091509150505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105bd575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105ed5750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6105fc611d28565b73ffffffffffffffffffffffffffffffffffffffff1661061a611379565b73ffffffffffffffffffffffffffffffffffffffff1614610670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066790612db2565b60405180910390fd5b80600390805190602001906106869291906121a3565b5050565b6060600361069783611d30565b6040516020016106a8929190612f03565b6040516020818303038152906040529050919050565b600760009054906101000a900460ff1680156106e75750600760019054906101000a900460ff16155b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d90612f73565b60405180910390fd5b806006546107349190612fc2565b341015610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076d90613068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f906130d4565b60405180910390fd5b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061088533838360405180602001604052806000815250611e91565b5050565b600083519050825181146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990613140565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109925750600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c8906131ac565b60405180910390fd5b60005b81811015610af55760008582815181106109f1576109f06131cc565b5b602002602001015190506000858381518110610a1057610a0f6131cc565b5b60200260200101519050806000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000828254610a7991906131fb565b92505081905550806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000828254610adf919061322f565b92505081905550828060010193505050506109d4565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610b6c929190613285565b60405180910390a460008573ffffffffffffffffffffffffffffffffffffffff163b14610c635763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168573ffffffffffffffffffffffffffffffffffffffff1663bc197c8133898888886040518663ffffffff1660e01b8152600401610bfb959493929190613311565b6020604051808303816000875af1158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e919061338e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610c95565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613407565b60405180910390fd5b505050505050565b606060008351905082518114610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613140565b60405180910390fd5b835167ffffffffffffffff811115610d4257610d4161242e565b5b604051908082528060200260200182016040528015610d705781602001602082028036833780820191505090505b50915060005b81811015610e2e57600080868381518110610d9457610d936131cc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610deb57610dea6131cc565b5b6020026020010151815260200190815260200160002054838281518110610e1557610e146131cc565b5b6020026020010181815250508080600101915050610d76565b505092915050565b610e3e611d28565b73ffffffffffffffffffffffffffffffffffffffff16610e5c611379565b73ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990612db2565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b600760009054906101000a900460ff16158015610ef95750600760019054906101000a900460ff16155b801561104a57506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360016040518363ffffffff1660e01b8152600401610f5f92919061346c565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906134aa565b118061104957506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360026040518363ffffffff1660e01b8152600401611006929190613512565b602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906134aa565b115b5b611089576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611080906135ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611122906130d4565b60405180910390fd5b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061119833838360405180602001604052806000815250611e91565b5050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6111dd611d28565b73ffffffffffffffffffffffffffffffffffffffff166111fb611379565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890612db2565b60405180910390fd5b61125b60006120dd565b565b3373ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c857600080fd5b806004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f714f075c25484c168f193b3f402f357cc1befafa0d23dadc6467be5ec83a186160405160405180910390a45050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113ab611d28565b73ffffffffffffffffffffffffffffffffffffffff166113c9611379565b73ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612db2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611465573d6000803e3d6000fd5b5050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161155a91906123f8565b60405180910390a35050565b61156e611d28565b73ffffffffffffffffffffffffffffffffffffffff1661158c611379565b73ffffffffffffffffffffffffffffffffffffffff16146115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d990612db2565b60405180910390fd5b80600760016101000a81548160ff02191690831515021790555050565b600760009054906101000a900460ff1680156116285750600760019054906101000a900460ff16155b611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612f73565b60405180910390fd5b816006546116759190612fc2565b3410156116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90613068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906130d4565b60405180910390fd5b806004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117c681848460405180602001604052806000815250611e91565b505050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118ba5750600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906131ac565b60405180910390fd5b816000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461195891906131fb565b92505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008282546119be919061322f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611a3b9291906135cd565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b14611b325763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6133888787876040518663ffffffff1660e01b8152600401611aca9594939291906135f6565b6020604051808303816000875af1158015611ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0d919061338e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b64565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613407565b60405180910390fd5b5050505050565b611bb2611d28565b73ffffffffffffffffffffffffffffffffffffffff16611bd0611379565b73ffffffffffffffffffffffffffffffffffffffff1614611c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1d90612db2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d906136c2565b60405180910390fd5b611c9f816120dd565b50565b611caa611d28565b73ffffffffffffffffffffffffffffffffffffffff16611cc8611379565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590612db2565b60405180910390fd5b8060068190555050565b600033905090565b60606000821415611d78576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e8c565b600082905060005b60008214611daa578080611d93906136e2565b915050600a82611da3919061375a565b9150611d80565b60008167ffffffffffffffff811115611dc657611dc561242e565b5b6040519080825280601f01601f191660200182016040528015611df85781602001600182028036833780820191505090505b5090505b60008514611e8557600182611e1191906131fb565b9150600a85611e20919061378b565b6030611e2c919061322f565b60f81b818381518110611e4257611e416131cc565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e7e919061375a565b9450611dfc565b8093505050505b919050565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000828254611ef0919061322f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611f6e9291906135cd565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b146120665763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e613360008787876040518663ffffffff1660e01b8152600401611ffe9594939291906135f6565b6020604051808303816000875af115801561201d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612041919061338e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612098565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b6120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce90613407565b60405180910390fd5b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546121af90612e01565b90600052602060002090601f0160209004810192826121d15760008555612218565b82601f106121ea57805160ff1916838001178555612218565b82800160010185558215612218579182015b828111156122175782518255916020019190600101906121fc565b5b5090506122259190612229565b5090565b5b8082111561224257600081600090555060010161222a565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122858261225a565b9050919050565b6122958161227a565b81146122a057600080fd5b50565b6000813590506122b28161228c565b92915050565b6000819050919050565b6122cb816122b8565b81146122d657600080fd5b50565b6000813590506122e8816122c2565b92915050565b6000806040838503121561230557612304612250565b5b6000612313858286016122a3565b9250506020612324858286016122d9565b9150509250929050565b612337816122b8565b82525050565b6000602082019050612352600083018461232e565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61238d81612358565b811461239857600080fd5b50565b6000813590506123aa81612384565b92915050565b6000602082840312156123c6576123c5612250565b5b60006123d48482850161239b565b91505092915050565b60008115159050919050565b6123f2816123dd565b82525050565b600060208201905061240d60008301846123e9565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124668261241d565b810181811067ffffffffffffffff821117156124855761248461242e565b5b80604052505050565b6000612498612246565b90506124a4828261245d565b919050565b600067ffffffffffffffff8211156124c4576124c361242e565b5b6124cd8261241d565b9050602081019050919050565b82818337600083830152505050565b60006124fc6124f7846124a9565b61248e565b90508281526020810184848401111561251857612517612418565b5b6125238482856124da565b509392505050565b600082601f8301126125405761253f612413565b5b81356125508482602086016124e9565b91505092915050565b60006020828403121561256f5761256e612250565b5b600082013567ffffffffffffffff81111561258d5761258c612255565b5b6125998482850161252b565b91505092915050565b6000602082840312156125b8576125b7612250565b5b60006125c6848285016122d9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126095780820151818401526020810190506125ee565b83811115612618576000848401525b50505050565b6000612629826125cf565b61263381856125da565b93506126438185602086016125eb565b61264c8161241d565b840191505092915050565b60006020820190508181036000830152612671818461261e565b905092915050565b600080604083850312156126905761268f612250565b5b600061269e858286016122d9565b92505060206126af858286016122d9565b9150509250929050565b600067ffffffffffffffff8211156126d4576126d361242e565b5b602082029050602081019050919050565b600080fd5b60006126fd6126f8846126b9565b61248e565b905080838252602082019050602084028301858111156127205761271f6126e5565b5b835b81811015612749578061273588826122d9565b845260208401935050602081019050612722565b5050509392505050565b600082601f83011261276857612767612413565b5b81356127788482602086016126ea565b91505092915050565b600067ffffffffffffffff82111561279c5761279b61242e565b5b6127a58261241d565b9050602081019050919050565b60006127c56127c084612781565b61248e565b9050828152602081018484840111156127e1576127e0612418565b5b6127ec8482856124da565b509392505050565b600082601f83011261280957612808612413565b5b81356128198482602086016127b2565b91505092915050565b600080600080600060a0868803121561283e5761283d612250565b5b600061284c888289016122a3565b955050602061285d888289016122a3565b945050604086013567ffffffffffffffff81111561287e5761287d612255565b5b61288a88828901612753565b935050606086013567ffffffffffffffff8111156128ab576128aa612255565b5b6128b788828901612753565b925050608086013567ffffffffffffffff8111156128d8576128d7612255565b5b6128e4888289016127f4565b9150509295509295909350565b600067ffffffffffffffff82111561290c5761290b61242e565b5b602082029050602081019050919050565b600061293061292b846128f1565b61248e565b90508083825260208201905060208402830185811115612953576129526126e5565b5b835b8181101561297c578061296888826122a3565b845260208401935050602081019050612955565b5050509392505050565b600082601f83011261299b5761299a612413565b5b81356129ab84826020860161291d565b91505092915050565b600080604083850312156129cb576129ca612250565b5b600083013567ffffffffffffffff8111156129e9576129e8612255565b5b6129f585828601612986565b925050602083013567ffffffffffffffff811115612a1657612a15612255565b5b612a2285828601612753565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612a61816122b8565b82525050565b6000612a738383612a58565b60208301905092915050565b6000602082019050919050565b6000612a9782612a2c565b612aa18185612a37565b9350612aac83612a48565b8060005b83811015612add578151612ac48882612a67565b9750612acf83612a7f565b925050600181019050612ab0565b5085935050505092915050565b60006020820190508181036000830152612b048184612a8c565b905092915050565b612b158161227a565b82525050565b6000602082019050612b306000830184612b0c565b92915050565b60008060408385031215612b4d57612b4c612250565b5b6000612b5b858286016122d9565b9250506020612b6c858286016122a3565b9150509250929050565b600060208284031215612b8c57612b8b612250565b5b6000612b9a848285016122a3565b91505092915050565b612bac816123dd565b8114612bb757600080fd5b50565b600081359050612bc981612ba3565b92915050565b60008060408385031215612be657612be5612250565b5b6000612bf4858286016122a3565b9250506020612c0585828601612bba565b9150509250929050565b600060208284031215612c2557612c24612250565b5b6000612c3384828501612bba565b91505092915050565b600080600060608486031215612c5557612c54612250565b5b6000612c63868287016122d9565b9350506020612c74868287016122d9565b9250506040612c85868287016122a3565b9150509250925092565b60008060408385031215612ca657612ca5612250565b5b6000612cb4858286016122a3565b9250506020612cc5858286016122a3565b9150509250929050565b600080600080600060a08688031215612ceb57612cea612250565b5b6000612cf9888289016122a3565b9550506020612d0a888289016122a3565b9450506040612d1b888289016122d9565b9350506060612d2c888289016122d9565b925050608086013567ffffffffffffffff811115612d4d57612d4c612255565b5b612d59888289016127f4565b9150509295509295909350565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d9c6020836125da565b9150612da782612d66565b602082019050919050565b60006020820190508181036000830152612dcb81612d8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1957607f821691505b60208210811415612e2d57612e2c612dd2565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612e6081612e01565b612e6a8186612e33565b94506001821660008114612e855760018114612e9657612ec9565b60ff19831686528186019350612ec9565b612e9f85612e3e565b60005b83811015612ec157815481890152600182019150602081019050612ea2565b838801955050505b50505092915050565b6000612edd826125cf565b612ee78185612e33565b9350612ef78185602086016125eb565b80840191505092915050565b6000612f0f8285612e53565b9150612f1b8284612ed2565b91508190509392505050565b7f50726573616c6520616374697665000000000000000000000000000000000000600082015250565b6000612f5d600e836125da565b9150612f6882612f27565b602082019050919050565b60006020820190508181036000830152612f8c81612f50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fcd826122b8565b9150612fd8836122b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301157613010612f93565b5b828202905092915050565b7f5265717569726573206d6f726520457468657200000000000000000000000000600082015250565b60006130526013836125da565b915061305d8261301c565b602082019050919050565b6000602082019050818103600083015261308181613045565b9050919050565b7f5468697320434e565320616c7265616479206578697374732e00000000000000600082015250565b60006130be6019836125da565b91506130c982613088565b602082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f4c454e4754485f4d49534d415443480000000000000000000000000000000000600082015250565b600061312a600f836125da565b9150613135826130f4565b602082019050919050565b600060208201905081810360008301526131598161311d565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000613196600e836125da565b91506131a182613160565b602082019050919050565b600060208201905081810360008301526131c581613189565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613206826122b8565b9150613211836122b8565b92508282101561322457613223612f93565b5b828203905092915050565b600061323a826122b8565b9150613245836122b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561327a57613279612f93565b5b828201905092915050565b6000604082019050818103600083015261329f8185612a8c565b905081810360208301526132b38184612a8c565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006132e3826132bc565b6132ed81856132c7565b93506132fd8185602086016125eb565b6133068161241d565b840191505092915050565b600060a0820190506133266000830188612b0c565b6133336020830187612b0c565b81810360408301526133458186612a8c565b905081810360608301526133598185612a8c565b9050818103608083015261336d81846132d8565b90509695505050505050565b60008151905061338881612384565b92915050565b6000602082840312156133a4576133a3612250565b5b60006133b284828501613379565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006133f16010836125da565b91506133fc826133bb565b602082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b6000819050919050565b6000819050919050565b600061345661345161344c84613427565b613431565b6122b8565b9050919050565b6134668161343b565b82525050565b60006040820190506134816000830185612b0c565b61348e602083018461345d565b9392505050565b6000815190506134a4816122c2565b92915050565b6000602082840312156134c0576134bf612250565b5b60006134ce84828501613495565b91505092915050565b6000819050919050565b60006134fc6134f76134f2846134d7565b613431565b6122b8565b9050919050565b61350c816134e1565b82525050565b60006040820190506135276000830185612b0c565b6135346020830184613503565b9392505050565b7f596f7520617265206e6f7420656c6c696769626c6520666f722070726573616c60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006135976022836125da565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b60006040820190506135e2600083018561232e565b6135ef602083018461232e565b9392505050565b600060a08201905061360b6000830188612b0c565b6136186020830187612b0c565b613625604083018661232e565b613632606083018561232e565b818103608083015261364481846132d8565b90509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136ac6026836125da565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b60006136ed826122b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137205761371f612f93565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613765826122b8565b9150613770836122b8565b9250826137805761377f61372b565b5b828204905092915050565b6000613796826122b8565b91506137a1836122b8565b9250826137b1576137b061372b565b5b82820690509291505056fea2646970667358221220a32a3d96d337001b7cd504eb5776d69c22e37e2497225be4e3472a5bf026d96b64736f6c634300080a0033

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

0000000000000000000000000bd4d37e0907c9f564aaa0a7528837b81b25c6050000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002968747470733a2f2f7069786c65742e73747564696f2f6170692f76312f63616e7661732f6d6574612f0000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : presaleMintPassAddress (address): 0x0BD4D37E0907C9F564aaa0a7528837B81B25c605
Arg [1] : initialURI (string): https://pixlet.studio/api/v1/canvas/meta/

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bd4d37e0907c9f564aaa0a7528837b81b25c605
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000029
Arg [3] : 68747470733a2f2f7069786c65742e73747564696f2f6170692f76312f63616e
Arg [4] : 7661732f6d6574612f0000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

14385:2805:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6950:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10551:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16570:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16909:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15200:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8493:1195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9696:660;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16718:78;;;;;;;;;;;;;:::i;:::-;;15966:487;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14595:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14677:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2840:103;;;;;;;;;;;;;:::i;:::-;;14943:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2189:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17064:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7552:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16804:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15585:373;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7023:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7767:718;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3098:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16461:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6950:64;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10551:345::-;10627:4;10679:10;10664:25;;:11;:25;;;;:101;;;;10755:10;10740:25;;:11;:25;;;;10664:101;:178;;;;10832:10;10817:25;;:11;:25;;;;10664:178;10644:198;;10551:345;;;:::o;16570:87::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16643:6:::1;16636:4;:13;;;;;;;;;;;;:::i;:::-;;16570:87:::0;:::o;16909:146::-;16969:13;17026:4;17032:13;:2;:11;:13::i;:::-;17009:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16995:52;;16909:146;;;:::o;15200:377::-;15273:10;;;;;;;;;;;:28;;;;;15288:13;;;;;;;;;;;15287:14;15273:28;15265:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15364:6;15352:9;;:18;;;;:::i;:::-;15339:9;:31;;15331:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15444:1;15413:33;;:12;:19;15426:5;15413:19;;;;;;;;;;;;;;;;;;;;;:33;;;15405:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15511:10;15489:12;:19;15502:5;15489:19;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15533:36;15539:10;15551:5;15558:6;15533:36;;;;;;;;;;;;:5;:36::i;:::-;15200:377;;:::o;8493:1195::-;8695:17;8715:3;:10;8695:30;;8776:7;:14;8763:9;:27;8755:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:4;8831:18;;:10;:18;;;:56;;;;8853:16;:22;8870:4;8853:22;;;;;;;;;;;;;;;:34;8876:10;8853:34;;;;;;;;;;;;;;;;;;;;;;;;;8831:56;8823:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;8924:9;8919:379;8943:9;8939:1;:13;8919:379;;;8971:10;8984:3;8988:1;8984:6;;;;;;;;:::i;:::-;;;;;;;;8971:19;;9005:14;9022:7;9030:1;9022:10;;;;;;;;:::i;:::-;;;;;;;;9005:27;;9072:6;9049:9;:15;9059:4;9049:15;;;;;;;;;;;;;;;:19;9065:2;9049:19;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;9114:6;9093:9;:13;9103:2;9093:13;;;;;;;;;;;;;;;:17;9107:2;9093:17;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;9268:3;;;;;;;8956:342;;8919:379;;;;9347:2;9315:49;;9341:4;9315:49;;9329:10;9315:49;;;9351:3;9356:7;9315:49;;;;;;;:::i;:::-;;;;;;;;9417:1;9399:2;:14;;;:19;:237;;9584:52;;;9474:162;;;9495:2;9474:47;;;9522:10;9534:4;9540:3;9545:7;9554:4;9474:85;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:162;;;;9399:237;;;9452:1;9438:16;;:2;:16;;;;9399:237;9377:303;;;;;;;;;;;;:::i;:::-;;;;;;;;;8684:1004;8493:1195;;;;;:::o;9696:660::-;9832:25;9875:20;9898:6;:13;9875:36;;9965:3;:10;9949:12;:26;9941:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10033:6;:13;10019:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10008:39;;10223:9;10218:120;10242:12;10238:1;:16;10218:120;;;10294:9;:20;10304:6;10311:1;10304:9;;;;;;;;:::i;:::-;;;;;;;;10294:20;;;;;;;;;;;;;;;:28;10315:3;10319:1;10315:6;;;;;;;;:::i;:::-;;;;;;;;10294:28;;;;;;;;;;;;10280:8;10289:1;10280:11;;;;;;;;:::i;:::-;;;;;;;:42;;;;;10256:3;;;;;;;10218:120;;;;9864:492;9696:660;;;;:::o;16718:78::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16784:4:::1;16771:10;;:17;;;;;;;;;;;;;;;;;;16718:78::o:0;15966:487::-;16053:10;;;;;;;;;;;16052:11;:43;;;;;16082:13;;;;;;;;;;;16081:14;16052:43;:155;;;;;16157:1;16114:15;;;;;;;;;;;:25;;;16140:10;16152:1;16114:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;:92;;;;16205:1;16162:15;;;;;;;;;;;:25;;;16188:10;16200:1;16162:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;16114:92;16052:155;16030:240;;;;;;;;;;;;:::i;:::-;;;;;;;;;16320:1;16289:33;;:12;:19;16302:5;16289:19;;;;;;;;;;;;;;;;;;;;;:33;;;16281:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:10;16365:12;:19;16378:5;16365:19;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16409:36;16415:10;16427:5;16434:6;16409:36;;;;;;;;;;;;:5;:36::i;:::-;15966:487;;:::o;14595:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14677:34::-;;;;:::o;2840:103::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2905:30:::1;2932:1;2905:18;:30::i;:::-;2840:103::o:0;14943:249::-;15059:10;15034:35;;:12;:21;15047:7;15034:21;;;;;;;;;;;;;;;;;;;;;:35;;;15026:44;;;;;;15105:8;15081:12;:21;15094:7;15081:21;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15176:7;15166:8;15130:54;;15154:10;15130:54;;;;;;;;;;;;14943:249;;:::o;2189:87::-;2235:7;2262:6;;;;;;;;;;;2255:13;;2189:87;:::o;17064:123::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17138:8:::1;17130:26;;:49;17157:21;17130:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17064:123:::0;:::o;7552:207::-;7679:8;7638:16;:28;7655:10;7638:28;;;;;;;;;;;;;;;:38;7667:8;7638:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;7732:8;7705:46;;7720:10;7705:46;;;7742:8;7705:46;;;;;;:::i;:::-;;;;;;;;7552:207;;:::o;16804:97::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16887:6:::1;16871:13;;:22;;;;;;;;;;;;;;;;;;16804:97:::0;:::o;15585:373::-;15670:10;;;;;;;;;;;:28;;;;;15685:13;;;;;;;;;;;15684:14;15670:28;15662:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15761:6;15749:9;;:18;;;;:::i;:::-;15736:9;:31;;15728:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15841:1;15810:33;;:12;:19;15823:5;15810:19;;;;;;;;;;;;;;;;;;;;;:33;;;15802:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15908:2;15886:12;:19;15899:5;15886:19;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15922:28;15928:2;15932:5;15939:6;15922:28;;;;;;;;;;;;:5;:28::i;:::-;15585:373;;;:::o;7023:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7767:718::-;7966:4;7952:18;;:10;:18;;;:56;;;;7974:16;:22;7991:4;7974:22;;;;;;;;;;;;;;;:34;7997:10;7974:34;;;;;;;;;;;;;;;;;;;;;;;;;7952:56;7944:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;8063:6;8040:9;:15;8050:4;8040:15;;;;;;;;;;;;;;;:19;8056:2;8040:19;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;8101:6;8080:9;:13;8090:2;8080:13;;;;;;;;;;;;;;;:17;8094:2;8080:17;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;8158:2;8125:48;;8152:4;8125:48;;8140:10;8125:48;;;8162:2;8166:6;8125:48;;;;;;;:::i;:::-;;;;;;;;8226:1;8208:2;:14;;;:19;:225;;8386:47;;;8283:150;;;8304:2;8283:42;;;8326:10;8338:4;8344:2;8348:6;8356:4;8283:78;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:150;;;;8208:225;;;8261:1;8247:16;;:2;:16;;;;8208:225;8186:291;;;;;;;;;;;;:::i;:::-;;;;;;;;;7767:718;;;;;:::o;3098:201::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3207:1:::1;3187:22;;:8;:22;;;;3179:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3263:28;3282:8;3263:18;:28::i;:::-;3098:201:::0;:::o;16461:101::-;2420:12;:10;:12::i;:::-;2409:23;;:7;:5;:7::i;:::-;:23;;;2401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16542:12:::1;16530:9;:24;;;;16461:101:::0;:::o;862:98::-;915:7;942:10;935:17;;862:98;:::o;4035:723::-;4091:13;4321:1;4312:5;:10;4308:53;;;4339:10;;;;;;;;;;;;;;;;;;;;;4308:53;4371:12;4386:5;4371:20;;4402:14;4427:78;4442:1;4434:4;:9;4427:78;;4460:8;;;;;:::i;:::-;;;;4491:2;4483:10;;;;;:::i;:::-;;;4427:78;;;4515:19;4547:6;4537:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4515:39;;4565:154;4581:1;4572:5;:10;4565:154;;4609:1;4599:11;;;;;:::i;:::-;;;4676:2;4668:5;:10;;;;:::i;:::-;4655:2;:24;;;;:::i;:::-;4642:39;;4625:6;4632;4625:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;4705:2;4696:11;;;;;:::i;:::-;;;4565:154;;;4743:6;4729:21;;;;;4035:723;;;;:::o;11097:554::-;11255:6;11234:9;:13;11244:2;11234:13;;;;;;;;;;;;;;;:17;11248:2;11234:17;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;11318:2;11279:54;;11314:1;11279:54;;11294:10;11279:54;;;11322:2;11326:6;11279:54;;;;;;;:::i;:::-;;;;;;;;11386:1;11368:2;:14;;;:19;:231;;11552:47;;;11443:156;;;11464:2;11443:42;;;11486:10;11506:1;11510:2;11514:6;11522:4;11443:84;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:156;;;;11368:231;;;11421:1;11407:16;;:2;:16;;;;11368:231;11346:297;;;;;;;;;;;;:::i;:::-;;;;;;;;;11097:554;;;;:::o;3459:191::-;3533:16;3552:6;;;;;;;;;;;3533:25;;3578:8;3569:6;;:17;;;;;;;;;;;;;;;;;;3633:8;3602:40;;3623:8;3602:40;;;;;;;;;;;;3522:128;3459:191;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:149::-;2065:7;2105:66;2098:5;2094:78;2083:89;;2029:149;;;:::o;2184:120::-;2256:23;2273:5;2256:23;:::i;:::-;2249:5;2246:34;2236:62;;2294:1;2291;2284:12;2236:62;2184:120;:::o;2310:137::-;2355:5;2393:6;2380:20;2371:29;;2409:32;2435:5;2409:32;:::i;:::-;2310:137;;;;:::o;2453:327::-;2511:6;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:52;2755:7;2746:6;2735:9;2731:22;2711:52;:::i;:::-;2701:62;;2657:116;2453:327;;;;:::o;2786:90::-;2820:7;2863:5;2856:13;2849:21;2838:32;;2786:90;;;:::o;2882:109::-;2963:21;2978:5;2963:21;:::i;:::-;2958:3;2951:34;2882:109;;:::o;2997:210::-;3084:4;3122:2;3111:9;3107:18;3099:26;;3135:65;3197:1;3186:9;3182:17;3173:6;3135:65;:::i;:::-;2997:210;;;;:::o;3213:117::-;3322:1;3319;3312:12;3336:117;3445:1;3442;3435:12;3459:102;3500:6;3551:2;3547:7;3542:2;3535:5;3531:14;3527:28;3517:38;;3459:102;;;:::o;3567:180::-;3615:77;3612:1;3605:88;3712:4;3709:1;3702:15;3736:4;3733:1;3726:15;3753:281;3836:27;3858:4;3836:27;:::i;:::-;3828:6;3824:40;3966:6;3954:10;3951:22;3930:18;3918:10;3915:34;3912:62;3909:88;;;3977:18;;:::i;:::-;3909:88;4017:10;4013:2;4006:22;3796:238;3753:281;;:::o;4040:129::-;4074:6;4101:20;;:::i;:::-;4091:30;;4130:33;4158:4;4150:6;4130:33;:::i;:::-;4040:129;;;:::o;4175:308::-;4237:4;4327:18;4319:6;4316:30;4313:56;;;4349:18;;:::i;:::-;4313:56;4387:29;4409:6;4387:29;:::i;:::-;4379:37;;4471:4;4465;4461:15;4453:23;;4175:308;;;:::o;4489:154::-;4573:6;4568:3;4563;4550:30;4635:1;4626:6;4621:3;4617:16;4610:27;4489:154;;;:::o;4649:412::-;4727:5;4752:66;4768:49;4810:6;4768:49;:::i;:::-;4752:66;:::i;:::-;4743:75;;4841:6;4834:5;4827:21;4879:4;4872:5;4868:16;4917:3;4908:6;4903:3;4899:16;4896:25;4893:112;;;4924:79;;:::i;:::-;4893:112;5014:41;5048:6;5043:3;5038;5014:41;:::i;:::-;4733:328;4649:412;;;;;:::o;5081:340::-;5137:5;5186:3;5179:4;5171:6;5167:17;5163:27;5153:122;;5194:79;;:::i;:::-;5153:122;5311:6;5298:20;5336:79;5411:3;5403:6;5396:4;5388:6;5384:17;5336:79;:::i;:::-;5327:88;;5143:278;5081:340;;;;:::o;5427:509::-;5496:6;5545:2;5533:9;5524:7;5520:23;5516:32;5513:119;;;5551:79;;:::i;:::-;5513:119;5699:1;5688:9;5684:17;5671:31;5729:18;5721:6;5718:30;5715:117;;;5751:79;;:::i;:::-;5715:117;5856:63;5911:7;5902:6;5891:9;5887:22;5856:63;:::i;:::-;5846:73;;5642:287;5427:509;;;;:::o;5942:329::-;6001:6;6050:2;6038:9;6029:7;6025:23;6021:32;6018:119;;;6056:79;;:::i;:::-;6018:119;6176:1;6201:53;6246:7;6237:6;6226:9;6222:22;6201:53;:::i;:::-;6191:63;;6147:117;5942:329;;;;:::o;6277:99::-;6329:6;6363:5;6357:12;6347:22;;6277:99;;;:::o;6382:169::-;6466:11;6500:6;6495:3;6488:19;6540:4;6535:3;6531:14;6516:29;;6382:169;;;;:::o;6557:307::-;6625:1;6635:113;6649:6;6646:1;6643:13;6635:113;;;6734:1;6729:3;6725:11;6719:18;6715:1;6710:3;6706:11;6699:39;6671:2;6668:1;6664:10;6659:15;;6635:113;;;6766:6;6763:1;6760:13;6757:101;;;6846:1;6837:6;6832:3;6828:16;6821:27;6757:101;6606:258;6557:307;;;:::o;6870:364::-;6958:3;6986:39;7019:5;6986:39;:::i;:::-;7041:71;7105:6;7100:3;7041:71;:::i;:::-;7034:78;;7121:52;7166:6;7161:3;7154:4;7147:5;7143:16;7121:52;:::i;:::-;7198:29;7220:6;7198:29;:::i;:::-;7193:3;7189:39;7182:46;;6962:272;6870:364;;;;:::o;7240:313::-;7353:4;7391:2;7380:9;7376:18;7368:26;;7440:9;7434:4;7430:20;7426:1;7415:9;7411:17;7404:47;7468:78;7541:4;7532:6;7468:78;:::i;:::-;7460:86;;7240:313;;;;:::o;7559:474::-;7627:6;7635;7684:2;7672:9;7663:7;7659:23;7655:32;7652:119;;;7690:79;;:::i;:::-;7652:119;7810:1;7835:53;7880:7;7871:6;7860:9;7856:22;7835:53;:::i;:::-;7825:63;;7781:117;7937:2;7963:53;8008:7;7999:6;7988:9;7984:22;7963:53;:::i;:::-;7953:63;;7908:118;7559:474;;;;;:::o;8039:311::-;8116:4;8206:18;8198:6;8195:30;8192:56;;;8228:18;;:::i;:::-;8192:56;8278:4;8270:6;8266:17;8258:25;;8338:4;8332;8328:15;8320:23;;8039:311;;;:::o;8356:117::-;8465:1;8462;8455:12;8496:710;8592:5;8617:81;8633:64;8690:6;8633:64;:::i;:::-;8617:81;:::i;:::-;8608:90;;8718:5;8747:6;8740:5;8733:21;8781:4;8774:5;8770:16;8763:23;;8834:4;8826:6;8822:17;8814:6;8810:30;8863:3;8855:6;8852:15;8849:122;;;8882:79;;:::i;:::-;8849:122;8997:6;8980:220;9014:6;9009:3;9006:15;8980:220;;;9089:3;9118:37;9151:3;9139:10;9118:37;:::i;:::-;9113:3;9106:50;9185:4;9180:3;9176:14;9169:21;;9056:144;9040:4;9035:3;9031:14;9024:21;;8980:220;;;8984:21;8598:608;;8496:710;;;;;:::o;9229:370::-;9300:5;9349:3;9342:4;9334:6;9330:17;9326:27;9316:122;;9357:79;;:::i;:::-;9316:122;9474:6;9461:20;9499:94;9589:3;9581:6;9574:4;9566:6;9562:17;9499:94;:::i;:::-;9490:103;;9306:293;9229:370;;;;:::o;9605:307::-;9666:4;9756:18;9748:6;9745:30;9742:56;;;9778:18;;:::i;:::-;9742:56;9816:29;9838:6;9816:29;:::i;:::-;9808:37;;9900:4;9894;9890:15;9882:23;;9605:307;;;:::o;9918:410::-;9995:5;10020:65;10036:48;10077:6;10036:48;:::i;:::-;10020:65;:::i;:::-;10011:74;;10108:6;10101:5;10094:21;10146:4;10139:5;10135:16;10184:3;10175:6;10170:3;10166:16;10163:25;10160:112;;;10191:79;;:::i;:::-;10160:112;10281:41;10315:6;10310:3;10305;10281:41;:::i;:::-;10001:327;9918:410;;;;;:::o;10347:338::-;10402:5;10451:3;10444:4;10436:6;10432:17;10428:27;10418:122;;10459:79;;:::i;:::-;10418:122;10576:6;10563:20;10601:78;10675:3;10667:6;10660:4;10652:6;10648:17;10601:78;:::i;:::-;10592:87;;10408:277;10347:338;;;;:::o;10691:1509::-;10845:6;10853;10861;10869;10877;10926:3;10914:9;10905:7;10901:23;10897:33;10894:120;;;10933:79;;:::i;:::-;10894:120;11053:1;11078:53;11123:7;11114:6;11103:9;11099:22;11078:53;:::i;:::-;11068:63;;11024:117;11180:2;11206:53;11251:7;11242:6;11231:9;11227:22;11206:53;:::i;:::-;11196:63;;11151:118;11336:2;11325:9;11321:18;11308:32;11367:18;11359:6;11356:30;11353:117;;;11389:79;;:::i;:::-;11353:117;11494:78;11564:7;11555:6;11544:9;11540:22;11494:78;:::i;:::-;11484:88;;11279:303;11649:2;11638:9;11634:18;11621:32;11680:18;11672:6;11669:30;11666:117;;;11702:79;;:::i;:::-;11666:117;11807:78;11877:7;11868:6;11857:9;11853:22;11807:78;:::i;:::-;11797:88;;11592:303;11962:3;11951:9;11947:19;11934:33;11994:18;11986:6;11983:30;11980:117;;;12016:79;;:::i;:::-;11980:117;12121:62;12175:7;12166:6;12155:9;12151:22;12121:62;:::i;:::-;12111:72;;11905:288;10691:1509;;;;;;;;:::o;12206:311::-;12283:4;12373:18;12365:6;12362:30;12359:56;;;12395:18;;:::i;:::-;12359:56;12445:4;12437:6;12433:17;12425:25;;12505:4;12499;12495:15;12487:23;;12206:311;;;:::o;12540:710::-;12636:5;12661:81;12677:64;12734:6;12677:64;:::i;:::-;12661:81;:::i;:::-;12652:90;;12762:5;12791:6;12784:5;12777:21;12825:4;12818:5;12814:16;12807:23;;12878:4;12870:6;12866:17;12858:6;12854:30;12907:3;12899:6;12896:15;12893:122;;;12926:79;;:::i;:::-;12893:122;13041:6;13024:220;13058:6;13053:3;13050:15;13024:220;;;13133:3;13162:37;13195:3;13183:10;13162:37;:::i;:::-;13157:3;13150:50;13229:4;13224:3;13220:14;13213:21;;13100:144;13084:4;13079:3;13075:14;13068:21;;13024:220;;;13028:21;12642:608;;12540:710;;;;;:::o;13273:370::-;13344:5;13393:3;13386:4;13378:6;13374:17;13370:27;13360:122;;13401:79;;:::i;:::-;13360:122;13518:6;13505:20;13543:94;13633:3;13625:6;13618:4;13610:6;13606:17;13543:94;:::i;:::-;13534:103;;13350:293;13273:370;;;;:::o;13649:894::-;13767:6;13775;13824:2;13812:9;13803:7;13799:23;13795:32;13792:119;;;13830:79;;:::i;:::-;13792:119;13978:1;13967:9;13963:17;13950:31;14008:18;14000:6;13997:30;13994:117;;;14030:79;;:::i;:::-;13994:117;14135:78;14205:7;14196:6;14185:9;14181:22;14135:78;:::i;:::-;14125:88;;13921:302;14290:2;14279:9;14275:18;14262:32;14321:18;14313:6;14310:30;14307:117;;;14343:79;;:::i;:::-;14307:117;14448:78;14518:7;14509:6;14498:9;14494:22;14448:78;:::i;:::-;14438:88;;14233:303;13649:894;;;;;:::o;14549:114::-;14616:6;14650:5;14644:12;14634:22;;14549:114;;;:::o;14669:184::-;14768:11;14802:6;14797:3;14790:19;14842:4;14837:3;14833:14;14818:29;;14669:184;;;;:::o;14859:132::-;14926:4;14949:3;14941:11;;14979:4;14974:3;14970:14;14962:22;;14859:132;;;:::o;14997:108::-;15074:24;15092:5;15074:24;:::i;:::-;15069:3;15062:37;14997:108;;:::o;15111:179::-;15180:10;15201:46;15243:3;15235:6;15201:46;:::i;:::-;15279:4;15274:3;15270:14;15256:28;;15111:179;;;;:::o;15296:113::-;15366:4;15398;15393:3;15389:14;15381:22;;15296:113;;;:::o;15445:732::-;15564:3;15593:54;15641:5;15593:54;:::i;:::-;15663:86;15742:6;15737:3;15663:86;:::i;:::-;15656:93;;15773:56;15823:5;15773:56;:::i;:::-;15852:7;15883:1;15868:284;15893:6;15890:1;15887:13;15868:284;;;15969:6;15963:13;15996:63;16055:3;16040:13;15996:63;:::i;:::-;15989:70;;16082:60;16135:6;16082:60;:::i;:::-;16072:70;;15928:224;15915:1;15912;15908:9;15903:14;;15868:284;;;15872:14;16168:3;16161:10;;15569:608;;;15445:732;;;;:::o;16183:373::-;16326:4;16364:2;16353:9;16349:18;16341:26;;16413:9;16407:4;16403:20;16399:1;16388:9;16384:17;16377:47;16441:108;16544:4;16535:6;16441:108;:::i;:::-;16433:116;;16183:373;;;;:::o;16562:118::-;16649:24;16667:5;16649:24;:::i;:::-;16644:3;16637:37;16562:118;;:::o;16686:222::-;16779:4;16817:2;16806:9;16802:18;16794:26;;16830:71;16898:1;16887:9;16883:17;16874:6;16830:71;:::i;:::-;16686:222;;;;:::o;16914:474::-;16982:6;16990;17039:2;17027:9;17018:7;17014:23;17010:32;17007:119;;;17045:79;;:::i;:::-;17007:119;17165:1;17190:53;17235:7;17226:6;17215:9;17211:22;17190:53;:::i;:::-;17180:63;;17136:117;17292:2;17318:53;17363:7;17354:6;17343:9;17339:22;17318:53;:::i;:::-;17308:63;;17263:118;16914:474;;;;;:::o;17394:329::-;17453:6;17502:2;17490:9;17481:7;17477:23;17473:32;17470:119;;;17508:79;;:::i;:::-;17470:119;17628:1;17653:53;17698:7;17689:6;17678:9;17674:22;17653:53;:::i;:::-;17643:63;;17599:117;17394:329;;;;:::o;17729:116::-;17799:21;17814:5;17799:21;:::i;:::-;17792:5;17789:32;17779:60;;17835:1;17832;17825:12;17779:60;17729:116;:::o;17851:133::-;17894:5;17932:6;17919:20;17910:29;;17948:30;17972:5;17948:30;:::i;:::-;17851:133;;;;:::o;17990:468::-;18055:6;18063;18112:2;18100:9;18091:7;18087:23;18083:32;18080:119;;;18118:79;;:::i;:::-;18080:119;18238:1;18263:53;18308:7;18299:6;18288:9;18284:22;18263:53;:::i;:::-;18253:63;;18209:117;18365:2;18391:50;18433:7;18424:6;18413:9;18409:22;18391:50;:::i;:::-;18381:60;;18336:115;17990:468;;;;;:::o;18464:323::-;18520:6;18569:2;18557:9;18548:7;18544:23;18540:32;18537:119;;;18575:79;;:::i;:::-;18537:119;18695:1;18720:50;18762:7;18753:6;18742:9;18738:22;18720:50;:::i;:::-;18710:60;;18666:114;18464:323;;;;:::o;18793:619::-;18870:6;18878;18886;18935:2;18923:9;18914:7;18910:23;18906:32;18903:119;;;18941:79;;:::i;:::-;18903:119;19061:1;19086:53;19131:7;19122:6;19111:9;19107:22;19086:53;:::i;:::-;19076:63;;19032:117;19188:2;19214:53;19259:7;19250:6;19239:9;19235:22;19214:53;:::i;:::-;19204:63;;19159:118;19316:2;19342:53;19387:7;19378:6;19367:9;19363:22;19342:53;:::i;:::-;19332:63;;19287:118;18793:619;;;;;:::o;19418:474::-;19486:6;19494;19543:2;19531:9;19522:7;19518:23;19514:32;19511:119;;;19549:79;;:::i;:::-;19511:119;19669:1;19694:53;19739:7;19730:6;19719:9;19715:22;19694:53;:::i;:::-;19684:63;;19640:117;19796:2;19822:53;19867:7;19858:6;19847:9;19843:22;19822:53;:::i;:::-;19812:63;;19767:118;19418:474;;;;;:::o;19898:1089::-;20002:6;20010;20018;20026;20034;20083:3;20071:9;20062:7;20058:23;20054:33;20051:120;;;20090:79;;:::i;:::-;20051:120;20210:1;20235:53;20280:7;20271:6;20260:9;20256:22;20235:53;:::i;:::-;20225:63;;20181:117;20337:2;20363:53;20408:7;20399:6;20388:9;20384:22;20363:53;:::i;:::-;20353:63;;20308:118;20465:2;20491:53;20536:7;20527:6;20516:9;20512:22;20491:53;:::i;:::-;20481:63;;20436:118;20593:2;20619:53;20664:7;20655:6;20644:9;20640:22;20619:53;:::i;:::-;20609:63;;20564:118;20749:3;20738:9;20734:19;20721:33;20781:18;20773:6;20770:30;20767:117;;;20803:79;;:::i;:::-;20767:117;20908:62;20962:7;20953:6;20942:9;20938:22;20908:62;:::i;:::-;20898:72;;20692:288;19898:1089;;;;;;;;:::o;20993:182::-;21133:34;21129:1;21121:6;21117:14;21110:58;20993:182;:::o;21181:366::-;21323:3;21344:67;21408:2;21403:3;21344:67;:::i;:::-;21337:74;;21420:93;21509:3;21420:93;:::i;:::-;21538:2;21533:3;21529:12;21522:19;;21181:366;;;:::o;21553:419::-;21719:4;21757:2;21746:9;21742:18;21734:26;;21806:9;21800:4;21796:20;21792:1;21781:9;21777:17;21770:47;21834:131;21960:4;21834:131;:::i;:::-;21826:139;;21553:419;;;:::o;21978:180::-;22026:77;22023:1;22016:88;22123:4;22120:1;22113:15;22147:4;22144:1;22137:15;22164:320;22208:6;22245:1;22239:4;22235:12;22225:22;;22292:1;22286:4;22282:12;22313:18;22303:81;;22369:4;22361:6;22357:17;22347:27;;22303:81;22431:2;22423:6;22420:14;22400:18;22397:38;22394:84;;;22450:18;;:::i;:::-;22394:84;22215:269;22164:320;;;:::o;22490:148::-;22592:11;22629:3;22614:18;;22490:148;;;;:::o;22644:141::-;22693:4;22716:3;22708:11;;22739:3;22736:1;22729:14;22773:4;22770:1;22760:18;22752:26;;22644:141;;;:::o;22815:845::-;22918:3;22955:5;22949:12;22984:36;23010:9;22984:36;:::i;:::-;23036:89;23118:6;23113:3;23036:89;:::i;:::-;23029:96;;23156:1;23145:9;23141:17;23172:1;23167:137;;;;23318:1;23313:341;;;;23134:520;;23167:137;23251:4;23247:9;23236;23232:25;23227:3;23220:38;23287:6;23282:3;23278:16;23271:23;;23167:137;;23313:341;23380:38;23412:5;23380:38;:::i;:::-;23440:1;23454:154;23468:6;23465:1;23462:13;23454:154;;;23542:7;23536:14;23532:1;23527:3;23523:11;23516:35;23592:1;23583:7;23579:15;23568:26;;23490:4;23487:1;23483:12;23478:17;;23454:154;;;23637:6;23632:3;23628:16;23621:23;;23320:334;;23134:520;;22922:738;;22815:845;;;;:::o;23666:377::-;23772:3;23800:39;23833:5;23800:39;:::i;:::-;23855:89;23937:6;23932:3;23855:89;:::i;:::-;23848:96;;23953:52;23998:6;23993:3;23986:4;23979:5;23975:16;23953:52;:::i;:::-;24030:6;24025:3;24021:16;24014:23;;23776:267;23666:377;;;;:::o;24049:429::-;24226:3;24248:92;24336:3;24327:6;24248:92;:::i;:::-;24241:99;;24357:95;24448:3;24439:6;24357:95;:::i;:::-;24350:102;;24469:3;24462:10;;24049:429;;;;;:::o;24484:164::-;24624:16;24620:1;24612:6;24608:14;24601:40;24484:164;:::o;24654:366::-;24796:3;24817:67;24881:2;24876:3;24817:67;:::i;:::-;24810:74;;24893:93;24982:3;24893:93;:::i;:::-;25011:2;25006:3;25002:12;24995:19;;24654:366;;;:::o;25026:419::-;25192:4;25230:2;25219:9;25215:18;25207:26;;25279:9;25273:4;25269:20;25265:1;25254:9;25250:17;25243:47;25307:131;25433:4;25307:131;:::i;:::-;25299:139;;25026:419;;;:::o;25451:180::-;25499:77;25496:1;25489:88;25596:4;25593:1;25586:15;25620:4;25617:1;25610:15;25637:348;25677:7;25700:20;25718:1;25700:20;:::i;:::-;25695:25;;25734:20;25752:1;25734:20;:::i;:::-;25729:25;;25922:1;25854:66;25850:74;25847:1;25844:81;25839:1;25832:9;25825:17;25821:105;25818:131;;;25929:18;;:::i;:::-;25818:131;25977:1;25974;25970:9;25959:20;;25637:348;;;;:::o;25991:169::-;26131:21;26127:1;26119:6;26115:14;26108:45;25991:169;:::o;26166:366::-;26308:3;26329:67;26393:2;26388:3;26329:67;:::i;:::-;26322:74;;26405:93;26494:3;26405:93;:::i;:::-;26523:2;26518:3;26514:12;26507:19;;26166:366;;;:::o;26538:419::-;26704:4;26742:2;26731:9;26727:18;26719:26;;26791:9;26785:4;26781:20;26777:1;26766:9;26762:17;26755:47;26819:131;26945:4;26819:131;:::i;:::-;26811:139;;26538:419;;;:::o;26963:175::-;27103:27;27099:1;27091:6;27087:14;27080:51;26963:175;:::o;27144:366::-;27286:3;27307:67;27371:2;27366:3;27307:67;:::i;:::-;27300:74;;27383:93;27472:3;27383:93;:::i;:::-;27501:2;27496:3;27492:12;27485:19;;27144:366;;;:::o;27516:419::-;27682:4;27720:2;27709:9;27705:18;27697:26;;27769:9;27763:4;27759:20;27755:1;27744:9;27740:17;27733:47;27797:131;27923:4;27797:131;:::i;:::-;27789:139;;27516:419;;;:::o;27941:165::-;28081:17;28077:1;28069:6;28065:14;28058:41;27941:165;:::o;28112:366::-;28254:3;28275:67;28339:2;28334:3;28275:67;:::i;:::-;28268:74;;28351:93;28440:3;28351:93;:::i;:::-;28469:2;28464:3;28460:12;28453:19;;28112:366;;;:::o;28484:419::-;28650:4;28688:2;28677:9;28673:18;28665:26;;28737:9;28731:4;28727:20;28723:1;28712:9;28708:17;28701:47;28765:131;28891:4;28765:131;:::i;:::-;28757:139;;28484:419;;;:::o;28909:164::-;29049:16;29045:1;29037:6;29033:14;29026:40;28909:164;:::o;29079:366::-;29221:3;29242:67;29306:2;29301:3;29242:67;:::i;:::-;29235:74;;29318:93;29407:3;29318:93;:::i;:::-;29436:2;29431:3;29427:12;29420:19;;29079:366;;;:::o;29451:419::-;29617:4;29655:2;29644:9;29640:18;29632:26;;29704:9;29698:4;29694:20;29690:1;29679:9;29675:17;29668:47;29732:131;29858:4;29732:131;:::i;:::-;29724:139;;29451:419;;;:::o;29876:180::-;29924:77;29921:1;29914:88;30021:4;30018:1;30011:15;30045:4;30042:1;30035:15;30062:191;30102:4;30122:20;30140:1;30122:20;:::i;:::-;30117:25;;30156:20;30174:1;30156:20;:::i;:::-;30151:25;;30195:1;30192;30189:8;30186:34;;;30200:18;;:::i;:::-;30186:34;30245:1;30242;30238:9;30230:17;;30062:191;;;;:::o;30259:305::-;30299:3;30318:20;30336:1;30318:20;:::i;:::-;30313:25;;30352:20;30370:1;30352:20;:::i;:::-;30347:25;;30506:1;30438:66;30434:74;30431:1;30428:81;30425:107;;;30512:18;;:::i;:::-;30425:107;30556:1;30553;30549:9;30542:16;;30259:305;;;;:::o;30570:634::-;30791:4;30829:2;30818:9;30814:18;30806:26;;30878:9;30872:4;30868:20;30864:1;30853:9;30849:17;30842:47;30906:108;31009:4;31000:6;30906:108;:::i;:::-;30898:116;;31061:9;31055:4;31051:20;31046:2;31035:9;31031:18;31024:48;31089:108;31192:4;31183:6;31089:108;:::i;:::-;31081:116;;30570:634;;;;;:::o;31210:98::-;31261:6;31295:5;31289:12;31279:22;;31210:98;;;:::o;31314:168::-;31397:11;31431:6;31426:3;31419:19;31471:4;31466:3;31462:14;31447:29;;31314:168;;;;:::o;31488:360::-;31574:3;31602:38;31634:5;31602:38;:::i;:::-;31656:70;31719:6;31714:3;31656:70;:::i;:::-;31649:77;;31735:52;31780:6;31775:3;31768:4;31761:5;31757:16;31735:52;:::i;:::-;31812:29;31834:6;31812:29;:::i;:::-;31807:3;31803:39;31796:46;;31578:270;31488:360;;;;:::o;31854:1053::-;32177:4;32215:3;32204:9;32200:19;32192:27;;32229:71;32297:1;32286:9;32282:17;32273:6;32229:71;:::i;:::-;32310:72;32378:2;32367:9;32363:18;32354:6;32310:72;:::i;:::-;32429:9;32423:4;32419:20;32414:2;32403:9;32399:18;32392:48;32457:108;32560:4;32551:6;32457:108;:::i;:::-;32449:116;;32612:9;32606:4;32602:20;32597:2;32586:9;32582:18;32575:48;32640:108;32743:4;32734:6;32640:108;:::i;:::-;32632:116;;32796:9;32790:4;32786:20;32780:3;32769:9;32765:19;32758:49;32824:76;32895:4;32886:6;32824:76;:::i;:::-;32816:84;;31854:1053;;;;;;;;:::o;32913:141::-;32969:5;33000:6;32994:13;32985:22;;33016:32;33042:5;33016:32;:::i;:::-;32913:141;;;;:::o;33060:349::-;33129:6;33178:2;33166:9;33157:7;33153:23;33149:32;33146:119;;;33184:79;;:::i;:::-;33146:119;33304:1;33329:63;33384:7;33375:6;33364:9;33360:22;33329:63;:::i;:::-;33319:73;;33275:127;33060:349;;;;:::o;33415:166::-;33555:18;33551:1;33543:6;33539:14;33532:42;33415:166;:::o;33587:366::-;33729:3;33750:67;33814:2;33809:3;33750:67;:::i;:::-;33743:74;;33826:93;33915:3;33826:93;:::i;:::-;33944:2;33939:3;33935:12;33928:19;;33587:366;;;:::o;33959:419::-;34125:4;34163:2;34152:9;34148:18;34140:26;;34212:9;34206:4;34202:20;34198:1;34187:9;34183:17;34176:47;34240:131;34366:4;34240:131;:::i;:::-;34232:139;;33959:419;;;:::o;34384:85::-;34429:7;34458:5;34447:16;;34384:85;;;:::o;34475:60::-;34503:3;34524:5;34517:12;;34475:60;;;:::o;34541:158::-;34599:9;34632:61;34650:42;34659:32;34685:5;34659:32;:::i;:::-;34650:42;:::i;:::-;34632:61;:::i;:::-;34619:74;;34541:158;;;:::o;34705:147::-;34800:45;34839:5;34800:45;:::i;:::-;34795:3;34788:58;34705:147;;:::o;34858:348::-;34987:4;35025:2;35014:9;35010:18;35002:26;;35038:71;35106:1;35095:9;35091:17;35082:6;35038:71;:::i;:::-;35119:80;35195:2;35184:9;35180:18;35171:6;35119:80;:::i;:::-;34858:348;;;;;:::o;35212:143::-;35269:5;35300:6;35294:13;35285:22;;35316:33;35343:5;35316:33;:::i;:::-;35212:143;;;;:::o;35361:351::-;35431:6;35480:2;35468:9;35459:7;35455:23;35451:32;35448:119;;;35486:79;;:::i;:::-;35448:119;35606:1;35631:64;35687:7;35678:6;35667:9;35663:22;35631:64;:::i;:::-;35621:74;;35577:128;35361:351;;;;:::o;35718:85::-;35763:7;35792:5;35781:16;;35718:85;;;:::o;35809:158::-;35867:9;35900:61;35918:42;35927:32;35953:5;35927:32;:::i;:::-;35918:42;:::i;:::-;35900:61;:::i;:::-;35887:74;;35809:158;;;:::o;35973:147::-;36068:45;36107:5;36068:45;:::i;:::-;36063:3;36056:58;35973:147;;:::o;36126:348::-;36255:4;36293:2;36282:9;36278:18;36270:26;;36306:71;36374:1;36363:9;36359:17;36350:6;36306:71;:::i;:::-;36387:80;36463:2;36452:9;36448:18;36439:6;36387:80;:::i;:::-;36126:348;;;;;:::o;36480:221::-;36620:34;36616:1;36608:6;36604:14;36597:58;36689:4;36684:2;36676:6;36672:15;36665:29;36480:221;:::o;36707:366::-;36849:3;36870:67;36934:2;36929:3;36870:67;:::i;:::-;36863:74;;36946:93;37035:3;36946:93;:::i;:::-;37064:2;37059:3;37055:12;37048:19;;36707:366;;;:::o;37079:419::-;37245:4;37283:2;37272:9;37268:18;37260:26;;37332:9;37326:4;37322:20;37318:1;37307:9;37303:17;37296:47;37360:131;37486:4;37360:131;:::i;:::-;37352:139;;37079:419;;;:::o;37504:332::-;37625:4;37663:2;37652:9;37648:18;37640:26;;37676:71;37744:1;37733:9;37729:17;37720:6;37676:71;:::i;:::-;37757:72;37825:2;37814:9;37810:18;37801:6;37757:72;:::i;:::-;37504:332;;;;;:::o;37842:751::-;38065:4;38103:3;38092:9;38088:19;38080:27;;38117:71;38185:1;38174:9;38170:17;38161:6;38117:71;:::i;:::-;38198:72;38266:2;38255:9;38251:18;38242:6;38198:72;:::i;:::-;38280;38348:2;38337:9;38333:18;38324:6;38280:72;:::i;:::-;38362;38430:2;38419:9;38415:18;38406:6;38362:72;:::i;:::-;38482:9;38476:4;38472:20;38466:3;38455:9;38451:19;38444:49;38510:76;38581:4;38572:6;38510:76;:::i;:::-;38502:84;;37842:751;;;;;;;;:::o;38599:225::-;38739:34;38735:1;38727:6;38723:14;38716:58;38808:8;38803:2;38795:6;38791:15;38784:33;38599:225;:::o;38830:366::-;38972:3;38993:67;39057:2;39052:3;38993:67;:::i;:::-;38986:74;;39069:93;39158:3;39069:93;:::i;:::-;39187:2;39182:3;39178:12;39171:19;;38830:366;;;:::o;39202:419::-;39368:4;39406:2;39395:9;39391:18;39383:26;;39455:9;39449:4;39445:20;39441:1;39430:9;39426:17;39419:47;39483:131;39609:4;39483:131;:::i;:::-;39475:139;;39202:419;;;:::o;39627:233::-;39666:3;39689:24;39707:5;39689:24;:::i;:::-;39680:33;;39735:66;39728:5;39725:77;39722:103;;;39805:18;;:::i;:::-;39722:103;39852:1;39845:5;39841:13;39834:20;;39627:233;;;:::o;39866:180::-;39914:77;39911:1;39904:88;40011:4;40008:1;40001:15;40035:4;40032:1;40025:15;40052:185;40092:1;40109:20;40127:1;40109:20;:::i;:::-;40104:25;;40143:20;40161:1;40143:20;:::i;:::-;40138:25;;40182:1;40172:35;;40187:18;;:::i;:::-;40172:35;40229:1;40226;40222:9;40217:14;;40052:185;;;;:::o;40243:176::-;40275:1;40292:20;40310:1;40292:20;:::i;:::-;40287:25;;40326:20;40344:1;40326:20;:::i;:::-;40321:25;;40365:1;40355:35;;40370:18;;:::i;:::-;40355:35;40411:1;40408;40404:9;40399:14;;40243:176;;;;:::o

Swarm Source

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