contract Blackhawk is ERC721, ERC721URIStorage, Ownable {
    
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIdCounter;

    constructor() ERC721("Blackhawk Collection Digital", "BCD") {}

    function safeMint(address to, uint256 tokenId) public onlyOwner {
        _safeMint(to, tokenId);
        _tokenIdCounter.increment();
    }

    function contractURI() public pure returns (string memory) {
        return
            "https://storage.googleapis.com/blackhawk-collection-nft/nfts/contract.json";
    }

    // The following functions are overrides required by Solidity.

    function _burn(uint256 tokenId)
        internal
        override(ERC721, ERC721URIStorage)
    {
        super._burn(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        pure
        override(ERC721, ERC721URIStorage)
        returns (string memory)
    {
        return
            string(
                abi.encodePacked(
                    "https://storage.googleapis.com/blackhawk-collection-nft/nfts/",
                    Strings.toString(tokenId),
                    "/metadata.json"
                )
            );
    }
}
function _burn(uint256 tokenId)
    internal
    override(ERC721, ERC721URIStorage)
{
    super._burn(tokenId);
}

// The following functions are overrides required by Solidity.