ETH Price: $3,217.78 (+0.67%)

Contract

0x185c8078285A3dE3EC9a2C203AD12853F03c462D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MasksRegistry

Compiler Version
v0.7.1+commit.f4a555be

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: MasksRegistry.sol
pragma solidity ^0.7.0;

import "./IMasksMetadataStore.sol";
import "./IMasksMinimalForRegistry.sol";

contract MasksRegistry {
    // Public variables

    //Constants
    address public constant MASKS_CONTRACT = 0xC2C747E0F7004F9E8817Db2ca4997657a7746928;
    address public constant DATASTORE_CONTRACT = 0x7327DbF06b1FcB0D190533fDD244B52361f0d241;

    uint256 public startingIndexFromMasksContract;
    uint256 public maxMasksSupply;

    // Internal variables
    bytes internal constant _ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

    constructor() {
        startingIndexFromMasksContract = IMasksMinimalForRegistry(MASKS_CONTRACT).startingIndex();
        maxMasksSupply = IMasksMinimalForRegistry(MASKS_CONTRACT).MAX_NFT_SUPPLY();
    }

    function getTraitsOfMaskId(uint256 maskId)
        public
        view
        returns (
            string memory character,
            string memory mask,
            string memory eyeColor,
            string memory skinColor,
            string memory item
        )
    {
        require(maskId < maxMasksSupply, "Mask ID must be less than 16384");

        // Derives the index of the image in the original sequence assigned to the Mask ID
        uint256 correspondingOriginalSequenceIndex =
            (maskId + startingIndexFromMasksContract) % maxMasksSupply;

        bytes3 traitBytes = IMasksMetadataStore(DATASTORE_CONTRACT).getTraitBytesAtIndex(
            correspondingOriginalSequenceIndex)
        ;

        character = _extractCharacterTrait(traitBytes);
        mask = _extractMaskTrait(traitBytes);
        eyeColor = _extractEyeColorTrait(traitBytes);
        skinColor = _extractSkinColorTrait(traitBytes);
        item = _extractItemTrait(traitBytes);
    }

    function getIPFSHashOfMaskId(uint256 maskId)
        public
        view
        returns (string memory ipfsHash)
    {
        require(maskId < maxMasksSupply, "Mask ID must be less than 16384");

        // Derives the index of the image in the original sequence assigned to the Mask ID
        uint256 correspondingOriginalSequenceIndex =
            (maskId + startingIndexFromMasksContract) % maxMasksSupply;

        ipfsHash = _getIPFSHashOfIndexInOriginalSequence(
            correspondingOriginalSequenceIndex
        );
    }

    function _extractCharacterTrait(bytes3 traitBytes)
        internal
        pure
        returns (string memory character)
    {
        bytes1 characterBits = traitBytes[0] & 0x0F;

        if (characterBits == 0x00) {
            character = "Female";
        } else if (characterBits == 0x01) {
            character = "Golden Robot";
        } else if (characterBits == 0x02) {
            character = "Male";
        } else if (characterBits == 0x03) {
            character = "Mystical";
        } else if (characterBits == 0x04) {
            character = "Puppet";
        } else if (characterBits == 0x05) {
            character = "Robot";
        }
    }

    function _extractMaskTrait(bytes3 traitBytes)
        internal
        pure
        returns (string memory mask)
    {
        bytes1 maskBits = traitBytes[1] >> 4;

        if (maskBits == 0x00) {
            mask = "Abstract";
        } else if (maskBits == 0x01) {
            mask = "African";
        } else if (maskBits == 0x02) {
            mask = "Animal";
        } else if (maskBits == 0x03) {
            mask = "Aztec";
        } else if (maskBits == 0x04) {
            mask = "Basic";
        } else if (maskBits == 0x05) {
            mask = "Chinese";
        } else if (maskBits == 0x06) {
            mask = "Crayon";
        } else if (maskBits == 0x07) {
            mask = "Doodle";
        } else if (maskBits == 0x08) {
            mask = "Hawaiian";
        } else if (maskBits == 0x09) {
            mask = "Indian";
        } else if (maskBits == 0x0A) {
            mask = "Mexican";
        } else if (maskBits == 0x0B) {
            mask = "Pixel";
        } else if (maskBits == 0x0C) {
            mask = "Steampunk";
        } else if (maskBits == 0x0D) {
            mask = "Street";
        } else if (maskBits == 0x0E) {
            mask = "Unique";
        } else if (maskBits == 0x0F) {
            mask = "Unmasked";
        }
    }

    function _extractEyeColorTrait(bytes3 traitBytes)
        internal
        pure
        returns (string memory eyeColor)
    {
        bytes1 eyeColorBits = traitBytes[1] & 0x0F;

        if (eyeColorBits == 0x00) {
            eyeColor = "Blue";
        } else if (eyeColorBits == 0x01) {
            eyeColor = "Dark";
        } else if (eyeColorBits == 0x02) {
            eyeColor = "Freak";
        } else if (eyeColorBits == 0x03) {
            eyeColor = "Glass";
        } else if (eyeColorBits == 0x04) {
            eyeColor = "Green";
        } else if (eyeColorBits == 0x05) {
            eyeColor = "Heterochromatic";
        } else if (eyeColorBits == 0x06) {
            eyeColor = "Mystical";
        } else if (eyeColorBits == 0x07) {
            eyeColor = "Painted";
        }
    }

    function _extractSkinColorTrait(bytes3 traitBytes)
        internal
        pure
        returns (string memory skinColor)
    {
        bytes1 skinColorBits = traitBytes[2] >> 4;

        if (skinColorBits == 0x00) {
            skinColor = "Blue";
        } else if (skinColorBits == 0x01) {
            skinColor = "Dark";
        } else if (skinColorBits == 0x02) {
            skinColor = "Freak";
        } else if (skinColorBits == 0x03) {
            skinColor = "Gold";
        } else if (skinColorBits == 0x04) {
            skinColor = "Gray";
        } else if (skinColorBits == 0x05) {
            skinColor = "Light";
        } else if (skinColorBits == 0x06) {
            skinColor = "Mystical";
        } else if (skinColorBits == 0x07) {
            skinColor = "Steel";
        } else if (skinColorBits == 0x08) {
            skinColor = "Transparent";
        } else if (skinColorBits == 0x09) {
            skinColor = "Wood";
        }
    }

    function _extractItemTrait(bytes3 traitBytes)
        internal
        pure
        returns (string memory item)
    {
        bytes1 itemBits = traitBytes[2] & 0x0F;

        if (itemBits == 0x00) {
            item = "Book";
        } else if (itemBits == 0x01) {
            item = "Bottle";
        } else if (itemBits == 0x02) {
            item = "Golden Toilet Paper";
        } else if (itemBits == 0x03) {
            item = "Mirror";
        } else if (itemBits == 0x04) {
            item = "No Item";
        } else if (itemBits == 0x05) {
            item = "Shadow Monkey";
        } else if (itemBits == 0x06) {
            item = "Toilet Paper";
        }
    }

    function _getIPFSHashOfIndexInOriginalSequence(uint256 index)
        internal
        view
        returns (string memory)
    {
        return
            _toBase58(
                IMasksMetadataStore(DATASTORE_CONTRACT).getIPFSHashHexAtIndex(index)
            );
    }

    // Source: verifyIPFS (https://github.com/MrChico/verifyIPFS/blob/master/contracts/verifyIPFS.sol)
    // @author Martin Lundfall ([email protected])
    // @dev Converts hex string to base 58
    function _toBase58(bytes memory source)
        internal
        pure
        returns (string memory)
    {
        if (source.length == 0) return new string(0);
        uint8[] memory digits = new uint8[](46);
        digits[0] = 0;
        uint8 digitlength = 1;
        for (uint256 i = 0; i < source.length; ++i) {
            uint256 carry = uint8(source[i]);
            for (uint256 j = 0; j < digitlength; ++j) {
                carry += uint256(digits[j]) * 256;
                digits[j] = uint8(carry % 58);
                carry = carry / 58;
            }

            while (carry > 0) {
                digits[digitlength] = uint8(carry % 58);
                digitlength++;
                carry = carry / 58;
            }
        }
        return string(_toAlphabet(_reverse(_truncate(digits, digitlength))));
    }

    function _truncate(uint8[] memory array, uint8 length)
        internal
        pure
        returns (uint8[] memory)
    {
        uint8[] memory output = new uint8[](length);
        for (uint256 i = 0; i < length; i++) {
            output[i] = array[i];
        }
        return output;
    }

    function _reverse(uint8[] memory input)
        internal
        pure
        returns (uint8[] memory)
    {
        uint8[] memory output = new uint8[](input.length);
        for (uint256 i = 0; i < input.length; i++) {
            output[i] = input[input.length - 1 - i];
        }
        return output;
    }

    function _toAlphabet(uint8[] memory indices)
        internal
        pure
        returns (bytes memory)
    {
        bytes memory output = new bytes(indices.length);
        for (uint256 i = 0; i < indices.length; i++) {
            output[i] = _ALPHABET[indices[i]];
        }
        return output;
    }
}

File 2 of 3: IMasksMetadataStore.sol
pragma solidity ^0.7.0;

interface IMasksMetadataStore {
    function getIPFSHashHexAtIndex(uint index) external view returns (bytes memory);
    function getTraitBytesAtIndex(uint index) external view returns (bytes3);
}

File 3 of 3: IMasksMinimalForRegistry.sol
pragma solidity ^0.7.0;

interface IMasksMinimalForRegistry {

    function startingIndex() external view returns (uint256);
    function MAX_NFT_SUPPLY() external view returns (uint256);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DATASTORE_CONTRACT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MASKS_CONTRACT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maskId","type":"uint256"}],"name":"getIPFSHashOfMaskId","outputs":[{"internalType":"string","name":"ipfsHash","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maskId","type":"uint256"}],"name":"getTraitsOfMaskId","outputs":[{"internalType":"string","name":"character","type":"string"},{"internalType":"string","name":"mask","type":"string"},{"internalType":"string","name":"eyeColor","type":"string"},{"internalType":"string","name":"skinColor","type":"string"},{"internalType":"string","name":"item","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMasksSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startingIndexFromMasksContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5073c2c747e0f7004f9e8817db2ca4997657a774692873ffffffffffffffffffffffffffffffffffffffff1663cb774d476040518163ffffffff1660e01b815260040160206040518083038186803b1580156200006d57600080fd5b505afa15801562000082573d6000803e3d6000fd5b505050506040513d60208110156200009957600080fd5b810190808051906020019092919050505060008190555073c2c747e0f7004f9e8817db2ca4997657a774692873ffffffffffffffffffffffffffffffffffffffff1663b5077f446040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010b57600080fd5b505afa15801562000120573d6000803e3d6000fd5b505050506040513d60208110156200013757600080fd5b8101908080519060200190929190505050600181905550612121806200015e6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632ec76986146100675780633164d947146102be57806358063be3146102dc57806394e2e4d9146102fa578063b08ba24a146103a1578063b2dd12b4146103d5575b600080fd5b6100936004803603602081101561007d57600080fd5b8101908080359060200190929190505050610409565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156100e35780820151818401526020810190506100c8565b50505050905090810190601f1680156101105780820380516001836020036101000a031916815260200191505b5086810385528a818151815260200191508051906020019080838360005b8381101561014957808201518184015260208101905061012e565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b50868103845289818151815260200191508051906020019080838360005b838110156101af578082015181840152602081019050610194565b50505050905090810190601f1680156101dc5780820380516001836020036101000a031916815260200191505b50868103835288818151815260200191508051906020019080838360005b838110156102155780820151818401526020810190506101fa565b50505050905090810190601f1680156102425780820380516001836020036101000a031916815260200191505b50868103825287818151815260200191508051906020019080838360005b8381101561027b578082015181840152602081019050610260565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b6102c6610582565b6040518082815260200191505060405180910390f35b6102e4610588565b6040518082815260200191505060405180910390f35b6103266004803603602081101561031057600080fd5b810190808035906020019092919050505061058e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036657808201518184015260208101905061034b565b50505050905090810190601f1680156103935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a961062c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dd610644565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60608060608060606001548610610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d61736b204944206d757374206265206c657373207468616e2031363338340081525060200191505060405180910390fd5b600060015460005488018161049957fe5b0690506000737327dbf06b1fcb0d190533fdd244b52361f0d24173ffffffffffffffffffffffffffffffffffffffff166394f259bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d602081101561052d57600080fd5b810190808051906020019092919050505090506105498161065c565b965061055481610902565b955061055f81611000565b945061056a8161137e565b9350610575816117f4565b9250505091939590929450565b60015481565b60005481565b60606001548210610607576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d61736b204944206d757374206265206c657373207468616e2031363338340081525060200191505060405180910390fd5b600060015460005484018161061857fe5b06905061062481611b06565b915050919050565b73c2c747e0f7004f9e8817db2ca4997657a774692881565b737327dbf06b1fcb0d190533fdd244b52361f0d24181565b60606000600f60f81b8360006003811061067257fe5b1a60f81b169050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156106e4576040518060400160405280600681526020017f46656d616c65000000000000000000000000000000000000000000000000000081525091506108fc565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561074f576040518060400160405280600c81526020017f476f6c64656e20526f626f74000000000000000000000000000000000000000081525091506108fb565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107ba576040518060400160405280600481526020017f4d616c650000000000000000000000000000000000000000000000000000000081525091506108fa565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610825576040518060400160405280600881526020017f4d7973746963616c00000000000000000000000000000000000000000000000081525091506108f9565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610890576040518060400160405280600681526020017f507570706574000000000000000000000000000000000000000000000000000081525091506108f8565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108f7576040518060400160405280600581526020017f526f626f7400000000000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b50919050565b6060600060048360016003811061091557fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c9050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109aa576040518060400160405280600881526020017f41627374726163740000000000000000000000000000000000000000000000008152509150610ffa565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a15576040518060400160405280600781526020017f4166726963616e000000000000000000000000000000000000000000000000008152509150610ff9565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a80576040518060400160405280600681526020017f416e696d616c00000000000000000000000000000000000000000000000000008152509150610ff8565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610aeb576040518060400160405280600581526020017f417a7465630000000000000000000000000000000000000000000000000000008152509150610ff7565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610b56576040518060400160405280600581526020017f42617369630000000000000000000000000000000000000000000000000000008152509150610ff6565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610bc1576040518060400160405280600781526020017f4368696e657365000000000000000000000000000000000000000000000000008152509150610ff5565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610c2c576040518060400160405280600681526020017f437261796f6e00000000000000000000000000000000000000000000000000008152509150610ff4565b600760f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610c97576040518060400160405280600681526020017f446f6f646c6500000000000000000000000000000000000000000000000000008152509150610ff3565b600860f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610d02576040518060400160405280600881526020017f486177616969616e0000000000000000000000000000000000000000000000008152509150610ff2565b600960f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610d6d576040518060400160405280600681526020017f496e6469616e00000000000000000000000000000000000000000000000000008152509150610ff1565b600a60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610dd8576040518060400160405280600781526020017f4d65786963616e000000000000000000000000000000000000000000000000008152509150610ff0565b600b60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610e43576040518060400160405280600581526020017f506978656c0000000000000000000000000000000000000000000000000000008152509150610fef565b600c60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610eae576040518060400160405280600981526020017f537465616d70756e6b00000000000000000000000000000000000000000000008152509150610fee565b600d60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610f19576040518060400160405280600681526020017f53747265657400000000000000000000000000000000000000000000000000008152509150610fed565b600e60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610f84576040518060400160405280600681526020017f556e6971756500000000000000000000000000000000000000000000000000008152509150610fec565b600f60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610feb576040518060400160405280600881526020017f556e6d61736b656400000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b50919050565b60606000600f60f81b8360016003811061101657fe5b1a60f81b169050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611088576040518060400160405280600481526020017f426c7565000000000000000000000000000000000000000000000000000000008152509150611378565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156110f3576040518060400160405280600481526020017f4461726b000000000000000000000000000000000000000000000000000000008152509150611377565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561115e576040518060400160405280600581526020017f467265616b0000000000000000000000000000000000000000000000000000008152509150611376565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156111c9576040518060400160405280600581526020017f476c6173730000000000000000000000000000000000000000000000000000008152509150611375565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611234576040518060400160405280600581526020017f477265656e0000000000000000000000000000000000000000000000000000008152509150611374565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561129f576040518060400160405280600f81526020017f48657465726f6368726f6d6174696300000000000000000000000000000000008152509150611373565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561130a576040518060400160405280600881526020017f4d7973746963616c0000000000000000000000000000000000000000000000008152509150611372565b600760f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611371576040518060400160405280600781526020017f5061696e7465640000000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b5b50919050565b6060600060048360026003811061139157fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c9050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611426576040518060400160405280600481526020017f426c75650000000000000000000000000000000000000000000000000000000081525091506117ee565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611491576040518060400160405280600481526020017f4461726b0000000000000000000000000000000000000000000000000000000081525091506117ed565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156114fc576040518060400160405280600581526020017f467265616b00000000000000000000000000000000000000000000000000000081525091506117ec565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611567576040518060400160405280600481526020017f476f6c640000000000000000000000000000000000000000000000000000000081525091506117eb565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156115d2576040518060400160405280600481526020017f477261790000000000000000000000000000000000000000000000000000000081525091506117ea565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561163d576040518060400160405280600581526020017f4c6967687400000000000000000000000000000000000000000000000000000081525091506117e9565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156116a8576040518060400160405280600881526020017f4d7973746963616c00000000000000000000000000000000000000000000000081525091506117e8565b600760f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611713576040518060400160405280600581526020017f537465656c00000000000000000000000000000000000000000000000000000081525091506117e7565b600860f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561177e576040518060400160405280600b81526020017f5472616e73706172656e7400000000000000000000000000000000000000000081525091506117e6565b600960f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156117e5576040518060400160405280600481526020017f576f6f640000000000000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b5b5b5b50919050565b60606000600f60f81b8360026003811061180a57fe5b1a60f81b169050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561187c576040518060400160405280600481526020017f426f6f6b000000000000000000000000000000000000000000000000000000008152509150611b00565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156118e7576040518060400160405280600681526020017f426f74746c6500000000000000000000000000000000000000000000000000008152509150611aff565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611952576040518060400160405280601381526020017f476f6c64656e20546f696c6574205061706572000000000000000000000000008152509150611afe565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156119bd576040518060400160405280600681526020017f4d6972726f7200000000000000000000000000000000000000000000000000008152509150611afd565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611a28576040518060400160405280600781526020017f4e6f204974656d000000000000000000000000000000000000000000000000008152509150611afc565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611a93576040518060400160405280600d81526020017f536861646f77204d6f6e6b6579000000000000000000000000000000000000008152509150611afb565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611afa576040518060400160405280600c81526020017f546f696c6574205061706572000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b50919050565b6060611c6e737327dbf06b1fcb0d190533fdd244b52361f0d24173ffffffffffffffffffffffffffffffffffffffff1663dfc0edf7846040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611b7057600080fd5b505afa158015611b84573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611bae57600080fd5b8101908080516040519392919084640100000000821115611bce57600080fd5b83820191506020820185811115611be457600080fd5b8251866001820283011164010000000082111715611c0157600080fd5b8083526020830192505050908051906020019080838360005b83811015611c35578082015181840152602081019050611c1a565b50505050905090810190601f168015611c625780820380516001836020036101000a031916815260200191505b50604052505050611c75565b9050919050565b6060600082511415611cd457600067ffffffffffffffff81118015611c9957600080fd5b506040519080825280601f01601f191660200182016040528015611ccc5781602001600182028036833780820191505090505b509050611e65565b6060602e67ffffffffffffffff81118015611cee57600080fd5b50604051908082528060200260200182016040528015611d1d5781602001602082028036833780820191505090505b509050600081600081518110611d2f57fe5b602002602001019060ff16908160ff168152505060006001905060005b8451811015611e45576000858281518110611d6357fe5b602001015160f81c60f81b60f81c60ff16905060005b8360ff16811015611de657610100858281518110611d9357fe5b602002602001015160ff160282019150603a8281611dad57fe5b06858281518110611dba57fe5b602002602001019060ff16908160ff1681525050603a8281611dd857fe5b049150806001019050611d79565b505b6000811115611e3957603a8181611dfb57fe5b06848460ff1681518110611e0b57fe5b602002602001019060ff16908160ff16815250508280600101935050603a8181611e3157fe5b049050611de8565b50806001019050611d4c565b50611e60611e5b611e568484611e6a565b611f13565b611fbd565b925050505b919050565b6060808260ff1667ffffffffffffffff81118015611e8757600080fd5b50604051908082528060200260200182016040528015611eb65781602001602082028036833780820191505090505b50905060005b8360ff16811015611f0857848181518110611ed357fe5b6020026020010151828281518110611ee757fe5b602002602001019060ff16908160ff16815250508080600101915050611ebc565b508091505092915050565b606080825167ffffffffffffffff81118015611f2e57600080fd5b50604051908082528060200260200182016040528015611f5d5781602001602082028036833780820191505090505b50905060005b8351811015611fb357838160018651030381518110611f7e57fe5b6020026020010151828281518110611f9257fe5b602002602001019060ff16908160ff16815250508080600101915050611f63565b5080915050919050565b606080825167ffffffffffffffff81118015611fd857600080fd5b506040519080825280601f01601f19166020018201604052801561200b5781602001600182028036833780820191505090505b50905060005b83518110156120a7576040518060600160405280603a81526020016120b2603a913984828151811061203f57fe5b602002602001015160ff168151811061205457fe5b602001015160f81c60f81b82828151811061206b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612011565b508091505091905056fe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220a134511c6503343fb034740a63981dce263843744c30efc884f0c540611bc03764736f6c63430007010033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c80632ec76986146100675780633164d947146102be57806358063be3146102dc57806394e2e4d9146102fa578063b08ba24a146103a1578063b2dd12b4146103d5575b600080fd5b6100936004803603602081101561007d57600080fd5b8101908080359060200190929190505050610409565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156100e35780820151818401526020810190506100c8565b50505050905090810190601f1680156101105780820380516001836020036101000a031916815260200191505b5086810385528a818151815260200191508051906020019080838360005b8381101561014957808201518184015260208101905061012e565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b50868103845289818151815260200191508051906020019080838360005b838110156101af578082015181840152602081019050610194565b50505050905090810190601f1680156101dc5780820380516001836020036101000a031916815260200191505b50868103835288818151815260200191508051906020019080838360005b838110156102155780820151818401526020810190506101fa565b50505050905090810190601f1680156102425780820380516001836020036101000a031916815260200191505b50868103825287818151815260200191508051906020019080838360005b8381101561027b578082015181840152602081019050610260565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b6102c6610582565b6040518082815260200191505060405180910390f35b6102e4610588565b6040518082815260200191505060405180910390f35b6103266004803603602081101561031057600080fd5b810190808035906020019092919050505061058e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036657808201518184015260208101905061034b565b50505050905090810190601f1680156103935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a961062c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dd610644565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60608060608060606001548610610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d61736b204944206d757374206265206c657373207468616e2031363338340081525060200191505060405180910390fd5b600060015460005488018161049957fe5b0690506000737327dbf06b1fcb0d190533fdd244b52361f0d24173ffffffffffffffffffffffffffffffffffffffff166394f259bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d602081101561052d57600080fd5b810190808051906020019092919050505090506105498161065c565b965061055481610902565b955061055f81611000565b945061056a8161137e565b9350610575816117f4565b9250505091939590929450565b60015481565b60005481565b60606001548210610607576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d61736b204944206d757374206265206c657373207468616e2031363338340081525060200191505060405180910390fd5b600060015460005484018161061857fe5b06905061062481611b06565b915050919050565b73c2c747e0f7004f9e8817db2ca4997657a774692881565b737327dbf06b1fcb0d190533fdd244b52361f0d24181565b60606000600f60f81b8360006003811061067257fe5b1a60f81b169050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156106e4576040518060400160405280600681526020017f46656d616c65000000000000000000000000000000000000000000000000000081525091506108fc565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561074f576040518060400160405280600c81526020017f476f6c64656e20526f626f74000000000000000000000000000000000000000081525091506108fb565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107ba576040518060400160405280600481526020017f4d616c650000000000000000000000000000000000000000000000000000000081525091506108fa565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610825576040518060400160405280600881526020017f4d7973746963616c00000000000000000000000000000000000000000000000081525091506108f9565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610890576040518060400160405280600681526020017f507570706574000000000000000000000000000000000000000000000000000081525091506108f8565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156108f7576040518060400160405280600581526020017f526f626f7400000000000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b50919050565b6060600060048360016003811061091557fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c9050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109aa576040518060400160405280600881526020017f41627374726163740000000000000000000000000000000000000000000000008152509150610ffa565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a15576040518060400160405280600781526020017f4166726963616e000000000000000000000000000000000000000000000000008152509150610ff9565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a80576040518060400160405280600681526020017f416e696d616c00000000000000000000000000000000000000000000000000008152509150610ff8565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610aeb576040518060400160405280600581526020017f417a7465630000000000000000000000000000000000000000000000000000008152509150610ff7565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610b56576040518060400160405280600581526020017f42617369630000000000000000000000000000000000000000000000000000008152509150610ff6565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610bc1576040518060400160405280600781526020017f4368696e657365000000000000000000000000000000000000000000000000008152509150610ff5565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610c2c576040518060400160405280600681526020017f437261796f6e00000000000000000000000000000000000000000000000000008152509150610ff4565b600760f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610c97576040518060400160405280600681526020017f446f6f646c6500000000000000000000000000000000000000000000000000008152509150610ff3565b600860f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610d02576040518060400160405280600881526020017f486177616969616e0000000000000000000000000000000000000000000000008152509150610ff2565b600960f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610d6d576040518060400160405280600681526020017f496e6469616e00000000000000000000000000000000000000000000000000008152509150610ff1565b600a60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610dd8576040518060400160405280600781526020017f4d65786963616e000000000000000000000000000000000000000000000000008152509150610ff0565b600b60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610e43576040518060400160405280600581526020017f506978656c0000000000000000000000000000000000000000000000000000008152509150610fef565b600c60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610eae576040518060400160405280600981526020017f537465616d70756e6b00000000000000000000000000000000000000000000008152509150610fee565b600d60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610f19576040518060400160405280600681526020017f53747265657400000000000000000000000000000000000000000000000000008152509150610fed565b600e60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610f84576040518060400160405280600681526020017f556e6971756500000000000000000000000000000000000000000000000000008152509150610fec565b600f60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610feb576040518060400160405280600881526020017f556e6d61736b656400000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b50919050565b60606000600f60f81b8360016003811061101657fe5b1a60f81b169050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611088576040518060400160405280600481526020017f426c7565000000000000000000000000000000000000000000000000000000008152509150611378565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156110f3576040518060400160405280600481526020017f4461726b000000000000000000000000000000000000000000000000000000008152509150611377565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561115e576040518060400160405280600581526020017f467265616b0000000000000000000000000000000000000000000000000000008152509150611376565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156111c9576040518060400160405280600581526020017f476c6173730000000000000000000000000000000000000000000000000000008152509150611375565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611234576040518060400160405280600581526020017f477265656e0000000000000000000000000000000000000000000000000000008152509150611374565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561129f576040518060400160405280600f81526020017f48657465726f6368726f6d6174696300000000000000000000000000000000008152509150611373565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561130a576040518060400160405280600881526020017f4d7973746963616c0000000000000000000000000000000000000000000000008152509150611372565b600760f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611371576040518060400160405280600781526020017f5061696e7465640000000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b5b50919050565b6060600060048360026003811061139157fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c9050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611426576040518060400160405280600481526020017f426c75650000000000000000000000000000000000000000000000000000000081525091506117ee565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611491576040518060400160405280600481526020017f4461726b0000000000000000000000000000000000000000000000000000000081525091506117ed565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156114fc576040518060400160405280600581526020017f467265616b00000000000000000000000000000000000000000000000000000081525091506117ec565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611567576040518060400160405280600481526020017f476f6c640000000000000000000000000000000000000000000000000000000081525091506117eb565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156115d2576040518060400160405280600481526020017f477261790000000000000000000000000000000000000000000000000000000081525091506117ea565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561163d576040518060400160405280600581526020017f4c6967687400000000000000000000000000000000000000000000000000000081525091506117e9565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156116a8576040518060400160405280600881526020017f4d7973746963616c00000000000000000000000000000000000000000000000081525091506117e8565b600760f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611713576040518060400160405280600581526020017f537465656c00000000000000000000000000000000000000000000000000000081525091506117e7565b600860f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561177e576040518060400160405280600b81526020017f5472616e73706172656e7400000000000000000000000000000000000000000081525091506117e6565b600960f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156117e5576040518060400160405280600481526020017f576f6f640000000000000000000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b5b5b5b50919050565b60606000600f60f81b8360026003811061180a57fe5b1a60f81b169050600060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561187c576040518060400160405280600481526020017f426f6f6b000000000000000000000000000000000000000000000000000000008152509150611b00565b600160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156118e7576040518060400160405280600681526020017f426f74746c6500000000000000000000000000000000000000000000000000008152509150611aff565b600260f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611952576040518060400160405280601381526020017f476f6c64656e20546f696c6574205061706572000000000000000000000000008152509150611afe565b600360f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156119bd576040518060400160405280600681526020017f4d6972726f7200000000000000000000000000000000000000000000000000008152509150611afd565b600460f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611a28576040518060400160405280600781526020017f4e6f204974656d000000000000000000000000000000000000000000000000008152509150611afc565b600560f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611a93576040518060400160405280600d81526020017f536861646f77204d6f6e6b6579000000000000000000000000000000000000008152509150611afb565b600660f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611afa576040518060400160405280600c81526020017f546f696c6574205061706572000000000000000000000000000000000000000081525091505b5b5b5b5b5b5b50919050565b6060611c6e737327dbf06b1fcb0d190533fdd244b52361f0d24173ffffffffffffffffffffffffffffffffffffffff1663dfc0edf7846040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611b7057600080fd5b505afa158015611b84573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611bae57600080fd5b8101908080516040519392919084640100000000821115611bce57600080fd5b83820191506020820185811115611be457600080fd5b8251866001820283011164010000000082111715611c0157600080fd5b8083526020830192505050908051906020019080838360005b83811015611c35578082015181840152602081019050611c1a565b50505050905090810190601f168015611c625780820380516001836020036101000a031916815260200191505b50604052505050611c75565b9050919050565b6060600082511415611cd457600067ffffffffffffffff81118015611c9957600080fd5b506040519080825280601f01601f191660200182016040528015611ccc5781602001600182028036833780820191505090505b509050611e65565b6060602e67ffffffffffffffff81118015611cee57600080fd5b50604051908082528060200260200182016040528015611d1d5781602001602082028036833780820191505090505b509050600081600081518110611d2f57fe5b602002602001019060ff16908160ff168152505060006001905060005b8451811015611e45576000858281518110611d6357fe5b602001015160f81c60f81b60f81c60ff16905060005b8360ff16811015611de657610100858281518110611d9357fe5b602002602001015160ff160282019150603a8281611dad57fe5b06858281518110611dba57fe5b602002602001019060ff16908160ff1681525050603a8281611dd857fe5b049150806001019050611d79565b505b6000811115611e3957603a8181611dfb57fe5b06848460ff1681518110611e0b57fe5b602002602001019060ff16908160ff16815250508280600101935050603a8181611e3157fe5b049050611de8565b50806001019050611d4c565b50611e60611e5b611e568484611e6a565b611f13565b611fbd565b925050505b919050565b6060808260ff1667ffffffffffffffff81118015611e8757600080fd5b50604051908082528060200260200182016040528015611eb65781602001602082028036833780820191505090505b50905060005b8360ff16811015611f0857848181518110611ed357fe5b6020026020010151828281518110611ee757fe5b602002602001019060ff16908160ff16815250508080600101915050611ebc565b508091505092915050565b606080825167ffffffffffffffff81118015611f2e57600080fd5b50604051908082528060200260200182016040528015611f5d5781602001602082028036833780820191505090505b50905060005b8351811015611fb357838160018651030381518110611f7e57fe5b6020026020010151828281518110611f9257fe5b602002602001019060ff16908160ff16815250508080600101915050611f63565b5080915050919050565b606080825167ffffffffffffffff81118015611fd857600080fd5b506040519080825280601f01601f19166020018201604052801561200b5781602001600182028036833780820191505090505b50905060005b83518110156120a7576040518060600160405280603a81526020016120b2603a913984828151811061203f57fe5b602002602001015160ff168151811061205457fe5b602001015160f81c60f81b82828151811061206b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612011565b508091505091905056fe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220a134511c6503343fb034740a63981dce263843744c30efc884f0c540611bc03764736f6c63430007010033

Deployed Bytecode Sourcemap

103:8876:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;782:985;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;407:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;356:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1773:536;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;173:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;262:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;782:985;883:23;920:18;952:22;988:23;1025:18;1085:14;;1076:6;:23;1068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1237:42;1338:14;;1304:30;;1295:6;:39;1294:58;;;;;;1237:115;;1363:17;307:42;1383:60;;;1457:34;1383:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:129;;1524:34;1547:10;1524:22;:34::i;:::-;1512:46;;1575:29;1593:10;1575:17;:29::i;:::-;1568:36;;1625:33;1647:10;1625:21;:33::i;:::-;1614:44;;1680:34;1703:10;1680:22;:34::i;:::-;1668:46;;1731:29;1749:10;1731:17;:29::i;:::-;1724:36;;782:985;;;;;;;;;:::o;407:29::-;;;;:::o;356:45::-;;;;:::o;1773:536::-;1863:22;1918:14;;1909:6;:23;1901:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:42;2171:14;;2137:30;;2128:6;:39;2127:58;;;;;;2070:115;;2207:95;2258:34;2207:37;:95::i;:::-;2196:106;;1773:536;;;;:::o;173:83::-;214:42;173:83;:::o;262:87::-;307:42;262:87;:::o;2315:664::-;2413:23;2452:20;2491:4;2475:20;;:10;2486:1;2475:13;;;;;;;;;;:20;2452:43;;2527:4;2510:21;;:13;:21;;;;2506:467;;;2547:20;;;;;;;;;;;;;;;;;;;2506:467;;;2605:4;2588:21;;:13;:21;;;;2584:389;;;2625:26;;;;;;;;;;;;;;;;;;;2584:389;;;2689:4;2672:21;;:13;:21;;;;2668:305;;;2709:18;;;;;;;;;;;;;;;;;;;2668:305;;;2765:4;2748:21;;:13;:21;;;;2744:229;;;2785:22;;;;;;;;;;;;;;;;;;;2744:229;;;2845:4;2828:21;;:13;:21;;;;2824:149;;;2865:20;;;;;;;;;;;;;;;;;;;2824:149;;;2923:4;2906:21;;:13;:21;;;;2902:71;;;2943:19;;;;;;;;;;;;;;;;;;;2902:71;2824:149;2744:229;2668:305;2584:389;2506:467;2315:664;;;;:::o;2985:1271::-;3078:18;3112:15;3147:1;3130:10;3141:1;3130:13;;;;;;;;;;:18;;;;;3112:36;;3175:4;3163:16;;:8;:16;;;;3159:1091;;;3195:17;;;;;;;;;;;;;;;;;;;3159:1091;;;3245:4;3233:16;;:8;:16;;;;3229:1021;;;3265:16;;;;;;;;;;;;;;;;;;;3229:1021;;;3314:4;3302:16;;:8;:16;;;;3298:952;;;3334:15;;;;;;;;;;;;;;;;;;;3298:952;;;3382:4;3370:16;;:8;:16;;;;3366:884;;;3402:14;;;;;;;;;;;;;;;;;;;3366:884;;;3449:4;3437:16;;:8;:16;;;;3433:817;;;3469:14;;;;;;;;;;;;;;;;;;;3433:817;;;3516:4;3504:16;;:8;:16;;;;3500:750;;;3536:16;;;;;;;;;;;;;;;;;;;3500:750;;;3585:4;3573:16;;:8;:16;;;;3569:681;;;3605:15;;;;;;;;;;;;;;;;;;;3569:681;;;3653:4;3641:16;;:8;:16;;;;3637:613;;;3673:15;;;;;;;;;;;;;;;;;;;3637:613;;;3721:4;3709:16;;:8;:16;;;;3705:545;;;3741:17;;;;;;;;;;;;;;;;;;;3705:545;;;3791:4;3779:16;;:8;:16;;;;3775:475;;;3811:15;;;;;;;;;;;;;;;;;;;3775:475;;;3859:4;3847:16;;:8;:16;;;;3843:407;;;3879:16;;;;;;;;;;;;;;;;;;;3843:407;;;3928:4;3916:16;;:8;:16;;;;3912:338;;;3948:14;;;;;;;;;;;;;;;;;;;3912:338;;;3995:4;3983:16;;:8;:16;;;;3979:271;;;4015:18;;;;;;;;;;;;;;;;;;;3979:271;;;4066:4;4054:16;;:8;:16;;;;4050:200;;;4086:15;;;;;;;;;;;;;;;;;;;4050:200;;;4134:4;4122:16;;:8;:16;;;;4118:132;;;4154:15;;;;;;;;;;;;;;;;;;;4118:132;;;4202:4;4190:16;;:8;:16;;;;4186:64;;;4222:17;;;;;;;;;;;;;;;;;;;4186:64;4118:132;4050:200;3979:271;3912:338;3843:407;3775:475;3705:545;3637:613;3569:681;3500:750;3433:817;3366:884;3298:952;3229:1021;3159:1091;2985:1271;;;;:::o;4262:801::-;4359:22;4397:19;4435:4;4419:20;;:10;4430:1;4419:13;;;;;;;;;;:20;4397:42;;4470:4;4454:20;;:12;:20;;;;4450:607;;;4490:17;;;;;;;;;;;;;;;;;;;4450:607;;;4544:4;4528:20;;:12;:20;;;;4524:533;;;4564:17;;;;;;;;;;;;;;;;;;;4524:533;;;4618:4;4602:20;;:12;:20;;;;4598:459;;;4638:18;;;;;;;;;;;;;;;;;;;4598:459;;;4693:4;4677:20;;:12;:20;;;;4673:384;;;4713:18;;;;;;;;;;;;;;;;;;;4673:384;;;4768:4;4752:20;;:12;:20;;;;4748:309;;;4788:18;;;;;;;;;;;;;;;;;;;4748:309;;;4843:4;4827:20;;:12;:20;;;;4823:234;;;4863:28;;;;;;;;;;;;;;;;;;;4823:234;;;4928:4;4912:20;;:12;:20;;;;4908:149;;;4948:21;;;;;;;;;;;;;;;;;;;4908:149;;;5006:4;4990:20;;:12;:20;;;;4986:71;;;5026:20;;;;;;;;;;;;;;;;;;;4986:71;4908:149;4823:234;4748:309;4673:384;4598:459;4524:533;4450:607;4262:801;;;;:::o;5069:963::-;5167:23;5206:20;5246:1;5229:10;5240:1;5229:13;;;;;;;;;;:18;;;;;5206:41;;5279:4;5262:21;;:13;:21;;;;5258:768;;;5299:18;;;;;;;;;;;;;;;;;;;5258:768;;;5355:4;5338:21;;:13;:21;;;;5334:692;;;5375:18;;;;;;;;;;;;;;;;;;;5334:692;;;5431:4;5414:21;;:13;:21;;;;5410:616;;;5451:19;;;;;;;;;;;;;;;;;;;5410:616;;;5508:4;5491:21;;:13;:21;;;;5487:539;;;5528:18;;;;;;;;;;;;;;;;;;;5487:539;;;5584:4;5567:21;;:13;:21;;;;5563:463;;;5604:18;;;;;;;;;;;;;;;;;;;5563:463;;;5660:4;5643:21;;:13;:21;;;;5639:387;;;5680:19;;;;;;;;;;;;;;;;;;;5639:387;;;5737:4;5720:21;;:13;:21;;;;5716:310;;;5757:22;;;;;;;;;;;;;;;;;;;5716:310;;;5817:4;5800:21;;:13;:21;;;;5796:230;;;5837:19;;;;;;;;;;;;;;;;;;;5796:230;;;5894:4;5877:21;;:13;:21;;;;5873:153;;;5914:25;;;;;;;;;;;;;;;;;;;5873:153;;;5977:4;5960:21;;:13;:21;;;;5956:70;;;5997:18;;;;;;;;;;;;;;;;;;;5956:70;5873:153;5796:230;5716:310;5639:387;5563:463;5487:539;5410:616;5334:692;5258:768;5069:963;;;;:::o;6038:677::-;6131:18;6165:15;6199:4;6183:20;;:10;6194:1;6183:13;;;;;;;;;;:20;6165:38;;6230:4;6218:16;;:8;:16;;;;6214:495;;;6250:13;;;;;;;;;;;;;;;;;;;6214:495;;;6296:4;6284:16;;:8;:16;;;;6280:429;;;6316:15;;;;;;;;;;;;;;;;;;;6280:429;;;6364:4;6352:16;;:8;:16;;;;6348:361;;;6384:28;;;;;;;;;;;;;;;;;;;6348:361;;;6445:4;6433:16;;:8;:16;;;;6429:280;;;6465:15;;;;;;;;;;;;;;;;;;;6429:280;;;6513:4;6501:16;;:8;:16;;;;6497:212;;;6533:16;;;;;;;;;;;;;;;;;;;6497:212;;;6582:4;6570:16;;:8;:16;;;;6566:143;;;6602:22;;;;;;;;;;;;;;;;;;;6566:143;;;6657:4;6645:16;;:8;:16;;;;6641:68;;;6677:21;;;;;;;;;;;;;;;;;;;6641:68;6566:143;6497:212;6429:280;6348:361;6280:429;6214:495;6038:677;;;;:::o;6721:273::-;6830:13;6878:109;307:42;6905:61;;;6967:5;6905:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6878:9;:109::i;:::-;6859:128;;6721:273;;;:::o;7209:833::-;7296:13;7346:1;7329:6;:13;:18;7325:44;;;7367:1;7356:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7349:20;;;;7325:44;7379:21;7415:2;7403:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7379:39;;7440:1;7428:6;7435:1;7428:9;;;;;;;;;;;;;:13;;;;;;;;;;;7451:17;7471:1;7451:21;;7487:9;7482:476;7506:6;:13;7502:1;:17;7482:476;;;7540:13;7562:6;7569:1;7562:9;;;;;;;;;;;;;;;;7556:16;;7540:32;;;;7591:9;7586:191;7610:11;7606:15;;:1;:15;7586:191;;;7676:3;7663:6;7670:1;7663:9;;;;;;;;;;;;;;7655:18;;:24;7646:33;;;;7723:2;7715:5;:10;;;;;;7697:6;7704:1;7697:9;;;;;;;;;;;;;:29;;;;;;;;;;;7760:2;7752:5;:10;;;;;;7744:18;;7623:3;;;;;7586:191;;;;7791:157;7806:1;7798:5;:9;7791:157;;;7863:2;7855:5;:10;;;;;;7827:6;7834:11;7827:19;;;;;;;;;;;;;;;:39;;;;;;;;;;;7884:13;;;;;;;7931:2;7923:5;:10;;;;;;7915:18;;7791:157;;;7482:476;7521:3;;;;;7482:476;;;;7981:53;7993:40;8002:30;8012:6;8020:11;8002:9;:30::i;:::-;7993:8;:40::i;:::-;7981:11;:53::i;:::-;7967:68;;;;7209:833;;;;:::o;8048:296::-;8150:14;8180:21;8216:6;8204:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8180:43;;8238:9;8233:82;8257:6;8253:10;;:1;:10;8233:82;;;8296:5;8302:1;8296:8;;;;;;;;;;;;;;8284:6;8291:1;8284:9;;;;;;;;;;;;;:20;;;;;;;;;;;8265:3;;;;;;;8233:82;;;;8331:6;8324:13;;;8048:296;;;;:::o;8350:312::-;8437:14;8467:21;8503:5;:12;8491:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8467:49;;8531:9;8526:107;8550:5;:12;8546:1;:16;8526:107;;;8595:5;8620:1;8616;8601:5;:12;:16;:20;8595:27;;;;;;;;;;;;;;8583:6;8590:1;8583:9;;;;;;;;;;;;;:39;;;;;;;;;;;8564:3;;;;;;;8526:107;;;;8649:6;8642:13;;;8350:312;;;:::o;8668:309::-;8760:12;8788:19;8820:7;:14;8810:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8788:47;;8850:9;8845:103;8869:7;:14;8865:1;:18;8845:103;;;8916:9;;;;;;;;;;;;;;;;;8926:7;8934:1;8926:10;;;;;;;;;;;;;;8916:21;;;;;;;;;;;;;;;;;;8904:6;8911:1;8904:9;;;;;;;;;;;:33;;;;;;;;;;;8885:3;;;;;;;8845:103;;;;8964:6;8957:13;;;8668:309;;;:::o

Swarm Source

ipfs://a134511c6503343fb034740a63981dce263843744c30efc884f0c540611bc037

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Hashmasks introduces a combination of digital art and collectibles with a value hierarchy determined by both the creator and the consumer of the artwork.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.