# # # Nim's Runtime Library # (c) Copyright 2012 Dominik Picheta # # See the file "copying.txt", included in this # distribution, for details about the copyright. # ## This module implements a mimetypes database runnableExamples: var m = newMimetypes() doAssert m.getMimetype("mp4") == "video/mp4" doAssert m.getExt("text/html") == "html" ## Values can be uppercase too. doAssert m.getMimetype("MP4") == "video/mp4" doAssert m.getExt("TEXT/HTML") == "html" ## If values are invalid then `default` is returned. doAssert m.getMimetype("INVALID") == "text/plain" doAssert m.getExt("INVALID/NONEXISTENT") == "txt" doAssert m.getMimetype("") == "text/plain" doAssert m.getExt("") == "txt" ## Register new Mimetypes. m.register(ext = "fakext", mimetype = "text/fakelang") doAssert m.getMimetype("fakext") == "text/fakelang" doAssert m.getMimetype("FaKeXT") == "text/fakelang" import tables from strutils import startsWith, toLowerAscii, strip when defined(nimPreviewSlimSystem): import std/assertions type MimeDB* = object mimes: OrderedTable[string, string] const mimes* = { "123": "application/vnd.lotus-1-2-3", "1km": "application/vnd.1000minds.decision-model+xml", "323": "text/h323", "3dm": "text/vnd.in3d.3dml", "3dmf": "x-world/x-3dmf", "3dml": "text/vnd.in3d.3dml", "3ds": "image/x-3ds", "3g2": "video/3gpp2", "3gp": "video/3gpp", "3gpp": "audio/3gpp", "3gpp2": "video/3gpp2", "3mf": "application/vnd.ms-3mfdocument", "669": "audio/x-mod", "726": "audio/32kadpcm", "7z": "application/x-7z-compressed", "a": "text/plain", "a2l": "application/a2l", "aa3": "audio/atrac3", "aab": "application/x-authorware-bin", "aac": "audio/x-aac", "aal": "audio/atrac-advanced-lossless", "aam": "application/x-authorware-map", "aas": "application/x-authorware-seg", "abc": "text/vnd.abc", "abw": "application/x-abiword", "ac": "application/pkix-attr-cert", "ac3": "audio/ac3", "acc": "application/vnd.americandynamics.acc", "ace": "application/x-ace-compressed", "acn": "audio/asc", "acu": "application/vnd.acucobol", "acutc": "application/vnd.acucorp", "acx": "application/internet-property-stream", "adp": "audio/adpcm", "aep": "application/vnd.audiograph", "afl": "video/animaflex", "afm": "application/x-font-type1", "afp": "application/vnd.ibm.modcap", "ahead": "application/vnd.ahead.space", "ai": "application/postscript", "aif": "audio/x-aiff", "aifc": "audio/x-aiff", "aiff": "audio/x-aiff", "aim": "application/x-aim", "aip": "text/x-audiosoft-intra", "air": "application/vnd.adobe.air-application-installer-package+zip", "ait": "application/vnd.dvb.ait", "alc": "chemical/x-alchemy", "ami": "application/vnd.amiga.ami", "aml": "application/aml", "amr": "audio/amr", "ani": "application/x-navi-animation", "anx": "application/x-annodex", "aos": "application/x-nokia-9000-communicator-add-on-software", "apinotes": "text/apinotes", "apk": "application/vnd.android.package-archive", "apkg": "application/vnd.anki", "apng": "image/apng", "appcache": "text/cache-manifest", "appimage": "application/appimage", "application": "application/x-ms-application", "apr": "application/vnd.lotus-approach", "aps": "application/mime", "apxml": "application/auth-policy+xml", "arc": "application/x-freearc", "arj": "application/x-arj", "art": "message/rfc822", "asar": "binary/asar", "asc": "text/plain", "ascii": "text/vnd.ascii-art", "asf": "application/vnd.ms-asf", "asice": "application/vnd.etsi.asic-e+zip", "asics": "application/vnd.etsi.asic-s+zip", "asm": "text/x-asm", "asn": "chemical/x-ncbi-asn1-spec", "aso": "application/vnd.accpac.simply.aso", "asp": "text/asp", "asr": "video/x-ms-asf", "asx": "video/x-ms-asf", "at3": "audio/atrac3", "atc": "application/vnd.acucorp", "atf": "application/atf", "atfx": "application/atfx", "atom": "application/atom+xml", "atomcat": "application/atomcat+xml", "atomdeleted": "application/atomdeleted+xml", "atomsrv": "application/atomserv+xml", "atomsvc": "application/atomsvc+xml", "atx": "application/vnd.antix.game-component", "atxml": "application/atxml", "au": "audio/basic", "auc": "application/tamp-apex-update-confirm", "avi": "video/x-msvideo", "avs": "video/avs-video", "aw": "application/applixware", "awb": "audio/amr-wb", "axa": "audio/x-annodex", "axs": "application/olescript", "axv": "video/x-annodex", "azf": "application/vnd.airzip.filesecure.azf", "azs": "application/vnd.airzip.filesecure.azs", "azv": "image/vnd.airzip.accelerator.azv", "azw": "application/vnd.amazon.ebook", "azw3": "application/vnd.amazon.mobi8-ebook", "b": "chemical/x-molconn-Z", "bak": "application/x-trash", "bar": "application/vnd.qualcomm.brew-app-res", "bas": "text/plain", "bash": "text/shell", "bat": "application/x-msdos-program", "bcpio": "application/x-bcpio", "bdf": "application/x-font-bdf", "bdm": "application/vnd.syncml.dm+wbxml", "bdoc": "application/bdoc", "bed": "application/vnd.realvnc.bed", "bh2": "application/vnd.fujitsu.oasysprs", "bib": "text/x-bibtex", "bik": "video/vnd.radgamettools.bink", "bin": "application/octet-stream", "bk2": "video/vnd.radgamettools.bink", "bkm": "application/vnd.nervana", "blb": "application/x-blorb", "blend": "binary/blender", "blorb": "application/x-blorb", "bm": "image/bmp", "bmed": "multipart/vnd.bint.med-plus", "bmi": "application/vnd.bmi", "bmml": "application/vnd.balsamiq.bmml+xml", "bmp": "image/bmp", "bmpr": "application/vnd.balsamiq.bmpr", "boo": "application/book", "book": "application/book", "box": "application/vnd.previewsystems.box", "boz": "application/x-bzip2", "bpd": "application/vnd.hbci", "bpk": "application/octet-stream", "brf": "text/plain", "bsd": "chemical/x-crossfire", "bsh": "application/x-bsh", "bsp": "model/vnd.valve.source.compiled-map", "btf": "image/prs.btif", "btif": "image/prs.btif", "bz": "application/x-bzip", "bz2": "application/x-bzip2", "c": "text/x-csrc", "c++": "text/x-c++src", "c11amc": "application/vnd.cluetrust.cartomobile-config", "c11amz": "application/vnd.cluetrust.cartomobile-config-pkg", "c3d": "chemical/x-chem3d", "c3ex": "application/cccex", "c4d": "application/vnd.clonk.c4group", "c4f": "application/vnd.clonk.c4group", "c4g": "application/vnd.clonk.c4group", "c4p": "application/vnd.clonk.c4group", "c4u": "application/vnd.clonk.c4group", "cab": "application/vnd.ms-cab-compressed", "cac": "chemical/x-cache", "cache": "application/x-cache", "caf": "audio/x-caf", "cap": "application/vnd.tcpdump.pcap", "car": "application/vnd.curl.car", "cascii": "chemical/x-cactvs-binary", "cat": "application/vnd.ms-pki.seccat", "cb7": "application/x-cbr", "cba": "application/x-cbr", "cbin": "chemical/x-cactvs-binary", "cbor": "application/cbor", "cbr": "application/x-cbr", "cbt": "application/x-cbr", "cbz": "application/vnd.comicbook+zip", "cc": "text/plain", "ccad": "application/clariscad", "ccc": "text/vnd.net2phone.commcenter.command", "ccmp": "application/ccmp+xml", "cco": "application/x-cocoa", "cct": "application/x-director", "ccxml": "application/ccxml+xml", "cda": "application/x-cdf", "cdbcmsg": "application/vnd.contact.cmsg", "cdf": "application/x-netcdf", "cdfx": "application/cdfx+xml", "cdkey": "application/vnd.mediastation.cdkey", "cdmia": "application/cdmi-capability", "cdmic": "application/cdmi-container", "cdmid": "application/cdmi-domain", "cdmio": "application/cdmi-object", "cdmiq": "application/cdmi-queue", "cdr": "image/x-coreldraw", "cdt": "image/x-coreldrawtemplate", "cdx": "chemical/x-cdx", "cdxml": "application/vnd.chemdraw+xml", "cdy": "application/vnd.cinderella", "cea": "application/cea", "cef": "chemical/x-cxf", "cellml": "application/cellml+xml", "cer": "application/pkix-cert", "cfg": "text/cfg", "cfs": "application/x-cfs-compressed", "cgm": "image/cgm", "cha": "application/x-chat", "chat": "application/x-chat", "chm": "application/vnd.ms-htmlhelp", "chrt": "application/vnd.kde.kchart", "cif": "chemical/x-cif", "cii": "application/vnd.anser-web-certificate-issue-initiation", "cil": "application/vnd.ms-artgalry", "cl": "application/simple-filter+xml", "cla": "application/vnd.claymore", "class": "application/java-vm", "clkk": "application/vnd.crick.clicker.keyboard", "clkp": "application/vnd.crick.clicker.palette", "clkt": "application/vnd.crick.clicker.template", "clkw": "application/vnd.crick.clicker.wordbank", "clkx": "application/vnd.crick.clicker", "clp": "application/x-msclip", "cls": "text/x-tex", "clue": "application/clue_info+xml", "cmake": "text/cmake", "cmc": "application/vnd.cosmocaller", "cmdf": "chemical/x-cmdf", "cml": "chemical/x-cml", "cmp": "application/vnd.yellowriver-custom-menu", "cmsc": "application/cms", "cmx": "image/x-cmx", "cnd": "text/jcr-cnd", "cnf": "text/cnf", "cod": "application/vnd.rim.cod", "coffee": "application/vnd.coffeescript", "com": "application/x-msdos-program", "conf": "text/plain", "copyright": "text/vnd.debian.copyright", "cpa": "chemical/x-compass", "cpio": "application/x-cpio", "cpkg": "application/vnd.xmpie.cpkg", "cpl": "application/cpl+xml", "cpp": "text/x-c++src", "cpt": "application/mac-compactpro", "cr2": "image/x-canon-cr2", "crd": "application/x-mscardfile", "crl": "application/pkix-crl", "crt": "application/x-x509-ca-cert", "crtr": "application/vnd.multiad.creator", "crw": "image/x-canon-crw", "crx": "application/x-chrome-extension", "cryptonote": "application/vnd.rig.cryptonote", "cs": "text/c#", "csf": "chemical/x-cache-csf", "csh": "application/x-csh", "csl": "application/vnd.citationstyles.style+xml", "csm": "chemical/x-csml", "csml": "chemical/x-csml", "cson": "text/cson", "csp": "application/vnd.commonspace", "csrattrs": "application/csrattrs", "css": "text/css", "cst": "application/vnd.commonspace", "csv": "text/csv", "csvs": "text/csv-schema", "ctab": "chemical/x-cactvs-binary", "ctx": "chemical/x-ctx", "cu": "application/cu-seeme", "cub": "chemical/x-gaussian-cube", "cuc": "application/tamp-community-update-confirm", "curl": "text/vnd.curl", "cw": "application/prs.cww", "cww": "application/prs.cww", "cxf": "chemical/x-cxf", "cxt": "application/x-director", "cxx": "text/plain", "d": "text/x-dsrc", "dae": "model/vnd.collada+xml", "daf": "application/vnd.mobius.daf", "dart": "application/vnd.dart", "dat": "application/x-ns-proxy-autoconfig", "dataless": "application/vnd.fdsn.seed", "davmount": "application/davmount+xml", "dbk": "application/docbook+xml", "dcd": "application/dcd", "dcf": "application/vnd.oma.drm.content", "dcm": "application/dicom", "dcr": "application/x-director", "dcurl": "text/vnd.curl.dcurl", "dd": "application/vnd.oma.dd+xml", "dd2": "application/vnd.oma.dd2+xml", "ddd": "application/vnd.fujixerox.ddd", "ddf": "application/vnd.syncml.dmddf+xml", "deb": "application/vnd.debian.binary-package", "deepv": "application/x-deepv", "def": "text/plain", "deploy": "application/octet-stream", "der": "application/x-x509-ca-cert", "dfac": "application/vnd.dreamfactory", "dgc": "application/x-dgc-compressed", "dib": "image/bmp", "dic": "text/x-c", "dif": "video/x-dv", "diff": "text/x-diff", "dii": "application/dii", "dim": "application/vnd.fastcopy-disk-image", "dir": "application/x-director", "dis": "application/vnd.mobius.dis", "disposition-notification": "message/disposition-notification", "dist": "application/vnd.apple.installer+xml", "distz": "application/vnd.apple.installer+xml", "dit": "application/dit", "djv": "image/vnd.djvu", "djvu": "image/vnd.djvu", "dl": "video/dl", "dll": "application/x-msdos-program", "dls": "audio/dls", "dm": "application/vnd.oma.drm.message", "dmg": "application/x-apple-diskimage", "dmp": "application/vnd.tcpdump.pcap", "dms": "text/vnd.dmclientscript", "dna": "application/vnd.dna", "doc": "application/msword", "docjson": "application/vnd.document+json", "docm": "application/vnd.ms-word.document.macroenabled.12", "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "dor": "model/vnd.gdl", "dot": "text/vnd.graphviz", "dotm": "application/vnd.ms-word.template.macroenabled.12", "dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", "dp": "application/vnd.osgi.dp", "dpg": "application/vnd.dpgraph", "dpgraph": "application/vnd.dpgraph", "dpkg": "application/vnd.xmpie.dpkg", "dr": "application/vnd.oma.drm.rights+xml", "dra": "audio/vnd.dra", "drc": "application/vnd.oma.drm.rights+wbxml", "drle": "image/dicom-rle", "drw": "application/drafting", "dsc": "text/prs.lines.tag", "dsm": "application/vnd.desmume.movie", "dssc": "application/dssc+der", "dtb": "application/x-dtbook+xml", "dtd": "application/xml-dtd", "dts": "audio/vnd.dts", "dtshd": "audio/vnd.dts.hd", "dump": "application/octet-stream", "dv": "video/x-dv", "dvb": "video/vnd.dvb.file", "dvc": "application/dvcs", "dvi": "application/x-dvi", "dwf": "model/vnd.dwf", "dwg": "image/vnd.dwg", "dx": "chemical/x-jcamp-dx", "dxf": "image/vnd.dxf", "dxp": "application/vnd.spotfire.dxp", "dxr": "application/x-director", "dzr": "application/vnd.dzr", "ear": "binary/zip", "ecelp4800": "audio/vnd.nuera.ecelp4800", "ecelp7470": "audio/vnd.nuera.ecelp7470", "ecelp9600": "audio/vnd.nuera.ecelp9600", "ecig": "application/vnd.evolv.ecig.settings", "ecigprofile": "application/vnd.evolv.ecig.profile", "ecigtheme": "application/vnd.evolv.ecig.theme", "ecma": "application/ecmascript", "edm": "application/vnd.novadigm.edm", "edx": "application/vnd.novadigm.edx", "efi": "application/efi", "efif": "application/vnd.picsel", "ei6": "application/vnd.pg.osasli", "ejs": "text/ejs", "el": "text/plain", "elc": "application/x-bytecode.elisp", "emb": "chemical/x-embl-dl-nucleotide", "embl": "chemical/x-embl-dl-nucleotide", "emf": "image/emf", "eml": "message/rfc822", "emm": "application/vnd.ibm.electronic-media", "emma": "application/emma+xml", "emotionml": "application/emotionml+xml", "emz": "application/x-msmetafile", "ent": "text/xml-external-parsed-entity", "entity": "application/vnd.nervana", "env": "application/x-envoy", "enw": "audio/evrcnw", "eol": "audio/vnd.digital-winds", "eot": "application/vnd.ms-fontobject", "ep": "application/vnd.bluetooth.ep.oob", "eps": "application/postscript", "eps2": "application/postscript", "eps3": "application/postscript", "epsf": "application/postscript", "epsi": "application/postscript", "epub": "application/epub+zip", "erb": "text/erb", "erf": "image/x-epson-erf", "es": "application/ecmascript", "es3": "application/vnd.eszigno3+xml", "esa": "application/vnd.osgi.subsystem", "escn": "text/godot", "esf": "application/vnd.epson.esf", "espass": "application/vnd.espass-espass+zip", "et3": "application/vnd.eszigno3+xml", "etx": "text/x-setext", "eva": "application/x-eva", "evb": "audio/evrcb", "evc": "audio/evrc", "evw": "audio/evrcwb", "evy": "application/x-envoy", "exe": "application/x-msdos-program", "exi": "application/exi", "exr": "image/aces", "ext": "application/vnd.novadigm.ext", "eyaml": "text/yaml", "ez": "application/andrew-inset", "ez2": "application/vnd.ezpix-album", "ez3": "application/vnd.ezpix-package", "f": "text/x-fortran", "f4v": "video/x-f4v", "f77": "text/x-fortran", "f90": "text/plain", "fb": "application/x-maker", "fbdoc": "application/x-maker", "fbs": "image/vnd.fastbidsheet", "fbx": "model/filmbox", "fcdt": "application/vnd.adobe.formscentral.fcdt", "fch": "chemical/x-gaussian-checkpoint", "fchk": "chemical/x-gaussian-checkpoint", "fcs": "application/vnd.isac.fcs", "fdf": "application/vnd.fdf", "fdt": "application/fdt+xml", "fe_launch": "application/vnd.denovo.fcselayout-link", "feature": "text/gherkin", "fg5": "application/vnd.fujitsu.oasysgp", "fgd": "application/x-director", "fh": "image/x-freehand", "fh4": "image/x-freehand", "fh5": "image/x-freehand", "fh7": "image/x-freehand", "fhc": "image/x-freehand", "fif": "image/fif", "fig": "application/x-xfig", "finf": "application/fastinfoset", "fish": "text/fish", "fit": "image/fits", "fits": "image/fits", "fla": "application/vnd.dtg.local.flash", "flac": "audio/x-flac", "fli": "video/x-fli", "flo": "application/vnd.micrografx.flo", "flr": "x-world/x-vrml", "flv": "video/x-flv", "flw": "application/vnd.kde.kivio", "flx": "text/vnd.fmi.flexstor", "fly": "text/vnd.fly", "fm": "application/vnd.framemaker", "fmf": "video/x-atomic3d-feature", "fnc": "application/vnd.frogans.fnc", "fo": "application/vnd.software602.filler.form+xml", "for": "text/x-fortran", "fpx": "image/vnd.fpx", "frame": "application/vnd.framemaker", "frl": "application/freeloader", "frm": "application/vnd.ufdl", "fsc": "application/vnd.fsc.weblaunch", "fst": "image/vnd.fst", "ftc": "application/vnd.fluxtime.clip", "fti": "application/vnd.anser-web-funds-transfer-initiation", "fts": "image/fits", "funk": "audio/make", "fvt": "video/vnd.fvt", "fxm": "video/x-javafx", "fxp": "application/vnd.adobe.fxp", "fxpl": "application/vnd.adobe.fxp", "fzs": "application/vnd.fuzzysheet", "g": "text/plain", "g2w": "application/vnd.geoplan", "g3": "image/g3fax", "g3w": "application/vnd.geospace", "gac": "application/vnd.groove-account", "gal": "chemical/x-gaussian-log", "gam": "application/x-tads", "gamin": "chemical/x-gamess-input", "gau": "chemical/x-gaussian-input", "gbr": "application/rpki-ghostbusters", "gca": "application/x-gca-compressed", "gcd": "text/x-pcs-gcd", "gcf": "application/x-graphing-calculator", "gcg": "chemical/x-gcg8-sequence", "gdl": "model/vnd.gdl", "gdoc": "application/vnd.google-apps.document", "gemspec": "text/ruby", "gen": "chemical/x-genbank", "geo": "application/vnd.dynageo", "geojson": "application/geo+json", "gex": "application/vnd.geometry-explorer", "gf": "application/x-tex-gf", "ggb": "application/vnd.geogebra.file", "ggt": "application/vnd.geogebra.tool", "ghf": "application/vnd.groove-help", "gif": "image/gif", "gim": "application/vnd.groove-identity-message", "gjc": "chemical/x-gaussian-input", "gjf": "chemical/x-gaussian-input", "gl": "video/gl", "glb": "model/gltf-binary", "gltf": "model/gltf+json", "gml": "application/gml+xml", "gmx": "application/vnd.gmx", "gnumeric": "application/x-gnumeric", "go": "text/go", "gotmpl": "text/gotmpl", "gph": "application/vnd.flographit", "gpt": "chemical/x-mopac-graph", "gpx": "application/gpx+xml", "gqf": "application/vnd.grafeq", "gqs": "application/vnd.grafeq", "gradle": "text/groovy", "gram": "application/srgs", "gramps": "application/x-gramps-xml", "gre": "application/vnd.geometry-explorer", "groovy": "text/groovy", "grv": "application/vnd.groove-injector", "grxml": "application/srgs+xml", "gsd": "audio/x-gsm", "gsf": "application/x-font-ghostscript", "gsheet": "application/vnd.google-apps.spreadsheet", "gslides": "application/vnd.google-apps.presentation", "gsm": "model/vnd.gdl", "gsp": "application/x-gsp", "gss": "application/x-gss", "gtar": "application/x-gtar", "gtm": "application/vnd.groove-tool-message", "gtw": "model/vnd.gtw", "gv": "text/vnd.graphviz", "gxf": "application/gxf", "gxt": "application/vnd.geonext", "gyb": "text/gyb", "gyp": "text/gyp", "gypi": "text/gyp", "gz": "application/gzip", "h": "text/x-chdr", "h++": "text/x-c++hdr", "h261": "video/h261", "h263": "video/h263", "h264": "video/h264", "hal": "application/vnd.hal+xml", "hbc": "application/vnd.hbci", "hbci": "application/vnd.hbci", "hbs": "text/x-handlebars-template", "hdd": "application/x-virtualbox-hdd", "hdf": "application/x-hdf", "hdr": "image/vnd.radiance", "hdt": "application/vnd.hdt", "heic": "image/heic", "heics": "image/heic-sequence", "heif": "image/heif", "heifs": "image/heif-sequence", "help": "application/x-helpfile", "hgl": "application/vnd.hp-hpgl", "hh": "text/plain", "hin": "chemical/x-hin", "hjson": "application/hjson", "hlb": "text/x-script", "hlp": "application/winhlp", "hpg": "application/vnd.hp-hpgl", "hpgl": "application/vnd.hp-hpgl", "hpi": "application/vnd.hp-hpid", "hpid": "application/vnd.hp-hpid", "hpp": "text/x-c++hdr", "hps": "application/vnd.hp-hps", "hpub": "application/prs.hpub+zip", "hqx": "application/mac-binhex40", "hs": "text/x-haskell", "hta": "application/hta", "htc": "text/x-component", "htke": "application/vnd.kenameaapp", "html": "text/html", "htt": "text/webviewhtml", "hvd": "application/vnd.yamaha.hv-dic", "hvp": "application/vnd.yamaha.hv-voice", "hvs": "application/vnd.yamaha.hv-script", "hx": "text/haxe", "hxml": "text/haxe", "hxx": "text/plain", "i2g": "application/vnd.intergeo", "ic0": "application/vnd.commerce-battelle", "ic1": "application/vnd.commerce-battelle", "ic2": "application/vnd.commerce-battelle", "ic3": "application/vnd.commerce-battelle", "ic4": "application/vnd.commerce-battelle", "ic5": "application/vnd.commerce-battelle", "ic6": "application/vnd.commerce-battelle", "ic7": "application/vnd.commerce-battelle", "ic8": "application/vnd.commerce-battelle", "ica": "application/vnd.commerce-battelle", "icc": "application/vnd.iccprofile", "icd": "application/vnd.commerce-battelle", "ice": "x-conference/x-cooltalk", "icf": "application/vnd.commerce-battelle", "icm": "application/vnd.iccprofile", "icns": "binary/icns", "ico": "image/x-icon", "ics": "text/calendar", "icz": "text/calendar", "idc": "text/plain", "idl": "text/idl", "ief": "image/ief", "iefs": "image/ief", "ifb": "text/calendar", "ifm": "application/vnd.shana.informed.formdata", "iges": "model/iges", "igl": "application/vnd.igloader", "igm": "application/vnd.insors.igm", "ign": "application/vnd.coreos.ignition+json", "ignition": "application/vnd.coreos.ignition+json", "igs": "model/iges", "igx": "application/vnd.micrografx.igx", "iif": "application/vnd.shana.informed.interchange", "iii": "application/x-iphone", "ima": "application/x-ima", "imap": "application/x-httpd-imap", "imf": "application/vnd.imagemeter.folder+zip", "img": "application/octet-stream", "imgcal": "application/vnd.3lightssoftware.imagescal", "imi": "application/vnd.imagemeter.image+zip", "imp": "application/vnd.accpac.simply.imp", "ims": "application/vnd.ms-ims", "imscc": "application/vnd.ims.imsccv1p1", "in": "text/plain", "inc": "text/inc", "inf": "application/inf", "info": "application/x-info", "ini": "text/ini", "ink": "application/inkml+xml", "inkml": "application/inkml+xml", "inp": "chemical/x-gamess-input", "ins": "application/x-internet-signup", "install": "application/x-install-instructions", "iota": "application/vnd.astraea-software.iota", "ip": "application/x-ip2", "ipfix": "application/ipfix", "ipk": "application/vnd.shana.informed.package", "irm": "application/vnd.ibm.rights-management", "irp": "application/vnd.irepository.package+xml", "ism": "model/vnd.gdl", "iso": "application/x-iso9660-image", "isp": "application/x-internet-signup", "ist": "chemical/x-isostar", "istr": "chemical/x-isostar", "isu": "video/x-isvideo", "it": "audio/it", "itp": "application/vnd.shana.informed.formtemplate", "its": "application/its+xml", "iv": "application/x-inventor", "ivp": "application/vnd.immervision-ivp", "ivr": "i-world/i-vrml", "ivu": "application/vnd.immervision-ivu", "ivy": "application/x-livescreen", "j2": "text/jinja", "jad": "text/vnd.sun.j2me.app-descriptor", "jade": "text/jade", "jam": "application/vnd.jam", "jar": "application/x-java-archive", "jardiff": "application/x-java-archive-diff", "java": "text/x-java-source", "jcm": "application/x-java-commerce", "jdx": "chemical/x-jcamp-dx", "jenkinsfile": "text/groovy", "jfif": "image/jpeg", "jinja": "text/jinja", "jinja2": "text/jinja", "jisp": "application/vnd.jisp", "jls": "image/jls", "jlt": "application/vnd.hp-jlyt", "jl": "text/julia", "jmz": "application/x-jmol", "jng": "image/x-jng", "jnlp": "application/x-java-jnlp-file", "joda": "application/vnd.joost.joda-archive", "jp2": "image/jp2", "jpe": "image/jpeg", "jpeg": "image/jpeg", "jpf": "image/jpx", "jpg": "image/jpeg", "jpg2": "image/jp2", "jpgm": "image/jpm", "jpgv": "video/jpeg", "jpm": "image/jpm", "jps": "image/x-jps", "jpx": "image/jpx", "jrd": "application/jrd+json", "js": "application/javascript", "json": "application/json", "json-patch": "application/json-patch+json", "json5": "application/json5", "jsonld": "application/ld+json", "jsonml": "application/jsonml+json", "jsx": "text/jsx", "jtd": "text/vnd.esmertec.theme-descriptor", "jut": "image/jutvision", "kar": "audio/midi", "karbon": "application/vnd.kde.karbon", "kcm": "application/vnd.nervana", "key": "application/pgp-keys", "keynote": "application/vnd.apple.keynote", "kfo": "application/vnd.kde.kformula", "kia": "application/vnd.kidspiration", "kil": "application/x-killustrator", "kin": "chemical/x-kinemage", "kml": "application/vnd.google-earth.kml+xml", "kmz": "application/vnd.google-earth.kmz", "kne": "application/vnd.kinar", "knp": "application/vnd.kinar", "kom": "application/vnd.hbci", "kon": "application/vnd.kde.kontour", "koz": "audio/vnd.audikoz", "kpr": "application/vnd.kde.kpresenter", "kpt": "application/vnd.kde.kpresenter", "kpxx": "application/vnd.ds-keypoint", "ksh": "application/x-ksh", "ksp": "application/vnd.kde.kspread", "kt": "text/kotlin", "ktr": "application/vnd.kahootz", "ktx": "image/ktx", "ktz": "application/vnd.kahootz", "kwd": "application/vnd.kde.kword", "kwt": "application/vnd.kde.kword", "l16": "audio/l16", "la": "audio/nspaudio", "lam": "audio/x-liveaudio", "lasjson": "application/vnd.las.las+json", "lasxml": "application/vnd.las.las+xml", "latex": "application/x-latex", "lbc": "audio/ilbc", "lbd": "application/vnd.llamagraphics.life-balance.desktop", "lbe": "application/vnd.llamagraphics.life-balance.exchange+xml", "le": "application/vnd.bluetooth.le.oob", "les": "application/vnd.hhe.lesson-player", "less": "text/less", "lgr": "application/lgr+xml", "lha": "application/octet-stream", "lhs": "text/x-literate-haskell", "lhx": "application/octet-stream", "lin": "application/bbolin", "link66": "application/vnd.route66.link66+xml", "list": "text/plain", "list3820": "application/vnd.ibm.modcap", "listafp": "application/vnd.ibm.modcap", "lmp": "model/vnd.gdl", "lnk": "application/x-ms-shortcut", "log": "text/plain", "lostsyncxml": "application/lostsync+xml", "lostxml": "application/lost+xml", "lrf": "application/octet-stream", "lrm": "application/vnd.ms-lrm", "lsf": "video/x-la-asf", "lsp": "text/x-script.lisp", "lst": "text/plain", "lsx": "video/x-la-asf", "ltf": "application/vnd.frogans.ltf", "ltx": "application/x-latex", "lua": "text/x-lua", "luac": "application/x-lua-bytecode", "lvp": "audio/vnd.lucent.voice", "lwp": "application/vnd.lotus-wordpro", "lxf": "application/lxf", "lyx": "application/x-lyx", "lzh": "application/octet-stream", "lzx": "application/x-lzx", "m": "application/vnd.wolfram.mathematica.package", "m13": "application/x-msmediaview", "m14": "application/x-msmediaview", "m15": "audio/x-mod", "m1v": "video/mpeg", "m21": "application/mp21", "m2a": "audio/mpeg", "m2v": "video/mpeg", "m3a": "audio/mpeg", "m3g": "application/m3g", "m3u": "audio/x-mpegurl", "m3u8": "application/vnd.apple.mpegurl", "m4a": "audio/x-m4a", "m4s": "video/iso.segment", "m4u": "video/vnd.mpegurl", "m4v": "video/x-m4v", "ma": "application/mathematica", "mads": "application/mads+xml", "mag": "application/vnd.ecowin.chart", "mail": "message/rfc822", "maker": "application/vnd.framemaker", "man": "application/x-troff-man", "manifest": "text/cache-manifest", "map": "application/x-navimap", "mar": "text/plain", "markdown": "text/markdown", "mathml": "application/mathml+xml", "mb": "application/mathematica", "mbd": "application/mbedlet", "mbk": "application/vnd.mobius.mbk", "mbox": "application/mbox", "mc$": "application/x-magic-cap-package-1.0", "mc1": "application/vnd.medcalcdata", "mcd": "application/vnd.mcd", "mcf": "image/vasa", "mcif": "chemical/x-mmcif", "mcm": "chemical/x-macmolecule", "mcp": "application/netmc", "mcurl": "text/vnd.curl.mcurl", "md": "text/markdown", "mdb": "application/x-msaccess", "mdc": "application/vnd.marlin.drm.mdcf", "mdi": "image/vnd.ms-modi", "me": "application/x-troff-me", "med": "audio/x-mod", "mesh": "model/mesh", "meta4": "application/metalink4+xml", "metalink": "application/metalink+xml", "mets": "application/mets+xml", "mf4": "application/mf4", "mfm": "application/vnd.mfmp", "mft": "application/rpki-manifest", "mgp": "application/vnd.osgeo.mapguide.package", "mgz": "application/vnd.proteus.magazine", "mht": "message/rfc822", "mhtml": "message/rfc822", "mib": "text/mib", "mid": "audio/midi", "midi": "audio/midi", "mie": "application/x-mie", "mif": "application/x-mif", "mime": "message/rfc822", "miz": "text/mizar", "mj2": "video/mj2", "mjf": "audio/x-vnd.audioexplosion.mjuicemediafile", "mjp2": "video/mj2", "mjpg": "video/x-motion-jpeg", "mjs": "application/javascript", "mk": "text/makefile", "mk3d": "video/x-matroska-3d", "mka": "audio/x-matroska", "mkd": "text/x-markdown", "mks": "video/x-matroska", "mkv": "video/x-matroska", "mlp": "application/vnd.dolby.mlp", "mm": "application/x-freemind", "mmd": "application/vnd.chipnuts.karaoke-mmd", "mmdb": "application/vnd.maxmind.maxmind-db", "mme": "application/base64", "mmf": "application/vnd.smaf", "mml": "text/mathml", "mmod": "chemical/x-macromodel-input", "mmr": "image/vnd.fujixerox.edmics-mmr", "mms": "application/vnd.wap.mms-message", "mng": "video/x-mng", "mny": "application/x-msmoney", "mobi": "application/x-mobipocket-ebook", "moc": "text/x-moc", "mod": "audio/x-mod", "model-inter": "application/vnd.vd-study", "mods": "application/mods+xml", "modulemap": "text/modulemap", "mol": "chemical/x-mdl-molfile", "mol2": "chemical/x-mol2", "moml": "model/vnd.moml+xml", "moo": "chemical/x-mopac-out", "moov": "video/quicktime", "mop": "chemical/x-mopac-input", "mopcrt": "chemical/x-mopac-input", "mov": "video/quicktime", "movie": "video/x-sgi-movie", "mp1": "audio/mpeg", "mp2": "audio/mpeg", "mp21": "application/mp21", "mp2a": "audio/mpeg", "mp3": "audio/mp3", "mp4": "video/mp4", "mp4a": "audio/mp4", "mp4s": "application/mp4", "mp4v": "video/mp4", "mpa": "video/mpeg", "mpc": "application/vnd.mophun.certificate", "mpd": "application/dash+xml", "mpdd": "application/dashdelta", "mpe": "video/mpeg", "mpeg": "video/mpeg", "mpega": "audio/mpeg", "mpf": "text/vnd.ms-mediapackage", "mpg": "video/mpeg", "mpg4": "video/mp4", "mpga": "audio/mpeg", "mpkg": "application/vnd.apple.installer+xml", "mpm": "application/vnd.blueice.multipass", "mpn": "application/vnd.mophun.application", "mpp": "application/vnd.ms-project", "mpt": "application/vnd.ms-project", "mpv": "application/x-project", "mpv2": "video/mpeg", "mpx": "application/x-project", "mpy": "application/vnd.ibm.minipay", "mqy": "application/vnd.mobius.mqy", "mrc": "application/marc", "mrcx": "application/marcxml+xml", "ms": "application/x-troff-ms", "msa": "application/vnd.msa-disk-image", "mscml": "application/mediaservercontrol+xml", "msd": "application/vnd.fdsn.mseed", "mseed": "application/vnd.fdsn.mseed", "mseq": "application/vnd.mseq", "msf": "application/vnd.epson.msf", "msg": "application/vnd.ms-outlook", "msh": "model/mesh", "msi": "application/x-msi", "msl": "application/vnd.mobius.msl", "msm": "model/vnd.gdl", "msty": "application/vnd.muvee.style", "mtm": "audio/x-mod", "mts": "model/vnd.mts", "multitrack": "audio/vnd.presonus.multitrack", "mus": "application/vnd.musician", "musd": "application/mmt-usd+xml", "musicxml": "application/vnd.recordare.musicxml+xml", "mv": "video/x-sgi-movie", "mvb": "application/x-msmediaview", "mvt": "application/vnd.mapbox-vector-tile", "mwc": "application/vnd.dpgraph", "mwf": "application/vnd.mfer", "mxf": "application/mxf", "mxi": "application/vnd.vd-study", "mxl": "application/vnd.recordare.musicxml", "mxmf": "audio/mobile-xmf", "mxml": "application/xv+xml", "mxs": "application/vnd.triscape.mxs", "mxu": "video/vnd.mpegurl", "my": "audio/make", "mzz": "application/x-vnd.audioexplosion.mzz", "n-gage": "application/vnd.nokia.n-gage.symbian.install", "n3": "text/n3", "nap": "image/naplps", "naplps": "image/naplps", "nb": "application/mathematica", "nbp": "application/vnd.wolfram.player", "nc": "application/x-netcdf", "ncm": "application/vnd.nokia.configuration-message", "ncx": "application/x-dtbncx+xml", "ndc": "application/vnd.osa.netdeploy", "ndjson": "application/json", "ndl": "application/vnd.lotus-notes", "nds": "application/vnd.nintendo.nitro.rom", "nef": "image/x-nikon-nef", "nfo": "text/x-nfo", "ngdat": "application/vnd.nokia.n-gage.data", "ngdoc": "text/ngdoc", "nif": "image/x-niff", "niff": "image/x-niff", "nim": "text/nim", "nimble": "text/nimble", "nimf": "text/nim", "nims": "text/nim", "nitf": "application/vnd.nitf", "nix": "application/x-mix-transfer", "nlu": "application/vnd.neurolanguage.nlu", "nml": "application/vnd.enliven", "nnd": "application/vnd.noblenet-directory", "nns": "application/vnd.noblenet-sealer", "nnw": "application/vnd.noblenet-web", "notebook": "application/vnd.smart.notebook", "npx": "image/vnd.net-fpx", "nq": "application/n-quads", "ns2": "application/vnd.lotus-notes", "ns3": "application/vnd.lotus-notes", "ns4": "application/vnd.lotus-notes", "nsc": "application/x-conference", "nsf": "application/vnd.lotus-notes", "nsg": "application/vnd.lotus-notes", "nsh": "application/vnd.lotus-notes", "nt": "application/n-triples", "ntf": "application/vnd.lotus-notes", "numbers": "application/vnd.apple.numbers", "nvd": "application/x-navidoc", "nwc": "application/x-nwc", "nws": "message/rfc822", "nzb": "application/x-nzb", "o": "application/x-object", "o4a": "application/vnd.oma.drm.dcf", "o4v": "application/vnd.oma.drm.dcf", "oa2": "application/vnd.fujitsu.oasys2", "oa3": "application/vnd.fujitsu.oasys3", "oas": "application/vnd.fujitsu.oasys", "obd": "application/x-msbinder", "obg": "application/vnd.openblox.game-binary", "obgx": "application/vnd.openblox.game+xml", "obj": "application/x-tgif", "oda": "application/oda", "odb": "application/vnd.oasis.opendocument.database", "odc": "application/vnd.oasis.opendocument.chart", "odd": "application/tei+xml", "odf": "application/vnd.oasis.opendocument.formula", "odft": "application/vnd.oasis.opendocument.formula-template", "odg": "application/vnd.oasis.opendocument.graphics", "odi": "application/vnd.oasis.opendocument.image", "odm": "application/vnd.oasis.opendocument.text-master", "odp": "application/vnd.oasis.opendocument.presentation", "ods": "application/vnd.oasis.opendocument.spreadsheet", "odt": "application/vnd.oasis.opendocument.text", "odx": "application/odx", "oeb": "application/vnd.openeye.oeb", "oga": "audio/ogg", "ogex": "model/vnd.opengex", "ogg": "audio/ogg", "ogv": "video/ogg", "ogx": "application/ogg", "old": "application/x-trash", "omc": "application/x-omc", "omcd": "application/x-omcdatamaker", "omcr": "application/x-omcregerator", "omdoc": "application/omdoc+xml", "omg": "audio/atrac3", "onepkg": "application/onenote", "onetmp": "application/onenote", "onetoc": "application/onenote", "onetoc2": "application/onenote", "opf": "application/oebps-package+xml", "opml": "text/x-opml", "oprc": "application/vnd.palm", "opus": "audio/ogg", "or2": "application/vnd.lotus-organizer", "or3": "application/vnd.lotus-organizer", "orf": "image/x-olympus-orf", "org": "text/x-org", "orq": "application/ocsp-request", "ors": "application/ocsp-response", "osf": "application/vnd.yamaha.openscoreformat", "osfpvg": "application/vnd.yamaha.openscoreformat.osfpvg+xml", "osm": "application/vnd.openstreetmap.data+xml", "otc": "application/vnd.oasis.opendocument.chart-template", "otf": "font/otf", "otg": "application/vnd.oasis.opendocument.graphics-template", "oth": "application/vnd.oasis.opendocument.text-web", "oti": "application/vnd.oasis.opendocument.image-template", "otp": "application/vnd.oasis.opendocument.presentation-template", "ots": "application/vnd.oasis.opendocument.spreadsheet-template", "ott": "application/vnd.oasis.opendocument.text-template", "ova": "application/x-virtualbox-ova", "ovf": "application/x-virtualbox-ovf", "owx": "application/owl+xml", "oxlicg": "application/vnd.oxli.countgraph", "oxps": "application/oxps", "oxt": "application/vnd.openofficeorg.extension", "oza": "application/x-oz-application", "p": "text/x-pascal", "p10": "application/pkcs10", "p12": "application/pkcs12", "p2p": "application/vnd.wfa.p2p", "p7a": "application/x-pkcs7-signature", "p7b": "application/x-pkcs7-certificates", "p7c": "application/pkcs7-mime", "p7m": "application/pkcs7-mime", "p7r": "application/x-pkcs7-certreqresp", "p7s": "application/pkcs7-signature", "p8": "application/pkcs8", "pac": "application/x-ns-proxy-autoconfig", "pack": "application/x-java-pack200", "package": "application/vnd.autopackage", "pages": "application/vnd.apple.pages", "par": "text/plain-bas", "part": "application/pro_eng", "pas": "text/pascal", "pat": "image/x-coreldrawpattern", "patch": "text/x-diff", "paw": "application/vnd.pawaafile", "pbd": "application/vnd.powerbuilder6", "pbm": "image/x-portable-bitmap", "pcap": "application/vnd.tcpdump.pcap", "pcf": "application/x-font-pcf", "pcl": "application/vnd.hp-pcl", "pclxl": "application/vnd.hp-pclxl", "pct": "image/x-pict", "pcurl": "application/vnd.curl.pcurl", "pcx": "image/x-pcx", "pdb": "application/vnd.palm", "pde": "text/x-processing", "pdf": "application/pdf", "pdx": "application/pdx", "pem": "text/pem", "pfa": "application/x-font-type1", "pfb": "application/x-font-type1", "pfm": "application/x-font-type1", "pfr": "application/font-tdpfr", "pfunk": "audio/make", "pfx": "application/pkcs12", "pgb": "image/vnd.globalgraphics.pgb", "pgm": "image/x-portable-graymap", "pgn": "application/x-chess-pgn", "pgp": "application/pgp-encrypted", "php": "application/x-httpd-php", "php3": "application/x-httpd-php3", "php3p": "application/x-httpd-php3-preprocessed", "php4": "application/x-httpd-php4", "php5": "application/x-httpd-php5", "phps": "application/x-httpd-php-source", "pht": "application/x-httpd-php", "phtml": "application/x-httpd-php", "pic": "image/pict", "pict": "image/pict", "pil": "application/vnd.piaccess.application-license", "pk": "application/x-tex-pk", "pkd": "application/vnd.hbci", "pkg": "application/vnd.apple.installer+xml", "pki": "application/pkixcmp", "pkipath": "application/pkix-pkipath", "pko": "application/ynd.ms-pkipko", "pkpass": "application/vnd.apple.pkpass", "pl": "application/x-perl", "plantuml": "text/plantuml", "plb": "application/vnd.3gpp.pic-bw-large", "plc": "application/vnd.mobius.plc", "plf": "application/vnd.pocketlearn", "plj": "audio/vnd.everad.plj", "plp": "application/vnd.panoply", "pls": "application/pls+xml", "plx": "application/x-pixclscript", "ply": "model/stanford", "pm": "text/plain", "pm4": "application/x-pagemaker", "pm5": "application/x-pagemaker", "pma": "application/x-perfmon", "pmc": "application/x-perfmon", "pml": "application/vnd.ctc-posml", "pmr": "application/x-perfmon", "pmw": "application/x-perfmon", "png": "image/png", "pnm": "image/x-portable-anymap", "po": "text/pofile", "pod": "text/x-pod", "portpkg": "application/vnd.macports.portpkg", "pot": "application/vnd.ms-powerpoint", "potm": "application/vnd.ms-powerpoint.template.macroenabled.12", "potx": "application/vnd.openxmlformats-officedocument.presentationml.template", "pov": "model/x-pov", "pp": "text/puppet", "ppa": "application/vnd.ms-powerpoint", "ppam": "application/vnd.ms-powerpoint.addin.macroenabled.12", "ppd": "application/vnd.cups-ppd", "ppkg": "application/vnd.xmpie.ppkg", "ppm": "image/x-portable-pixmap", "pps": "application/vnd.ms-powerpoint", "ppsm": "application/vnd.ms-powerpoint.slideshow.macroenabled.12", "ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "ppt": "application/vnd.ms-powerpoint", "pptm": "application/vnd.ms-powerpoint.presentation.macroenabled.12", "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "ppz": "application/mspowerpoint", "pqa": "application/vnd.palm", "prc": "application/vnd.palm", "pre": "application/vnd.lotus-freelance", "preminet": "application/vnd.preminet", "prf": "application/pics-rules", "proto": "text/proto", "provn": "text/provenance-notation", "provx": "application/provenance+xml", "prt": "application/pro_eng", "prz": "application/vnd.lotus-freelance", "ps": "application/postscript", "psb": "application/vnd.3gpp.pic-bw-small", "psd": "image/vnd.adobe.photoshop", "pseg3820": "application/vnd.ibm.modcap", "psf": "application/x-font-linux-psf", "psid": "audio/prs.sid", "pskcxml": "application/pskc+xml", "pti": "image/prs.pti", "ptid": "application/vnd.pvi.ptid1", "pub": "application/x-mspublisher", "purs": "text/purescript", "pvb": "application/vnd.3gpp.pic-bw-var", "pvu": "paleovu/x-pv", "pwn": "application/vnd.3m.post-it-notes", "pwz": "application/vnd.ms-powerpoint", "pxd": "text/cython", "pxi": "text/cython", "py": "text/x-script.phyton", "pya": "audio/vnd.ms-playready.media.pya", "pyc": "application/x-python-code", "pyi": "text/pyi", "pyo": "application/x-python-code", "pyv": "video/vnd.ms-playready.media.pyv", "pyx": "text/cython", "qam": "application/vnd.epson.quickanime", "qbo": "application/vnd.intu.qbo", "qca": "application/vnd.ericsson.quickcall", "qcall": "application/vnd.ericsson.quickcall", "qcp": "audio/qcelp", "qd3": "x-world/x-3dmf", "qd3d": "x-world/x-3dmf", "qfx": "application/vnd.intu.qfx", "qgs": "application/x-qgis", "qif": "image/x-quicktime", "qps": "application/vnd.publishare-delta-tree", "qt": "video/quicktime", "qtc": "video/x-qtc", "qti": "image/x-quicktime", "qtif": "image/x-quicktime", "qtl": "application/x-quicktimeplayer", "quiz": "application/vnd.quobject-quoxdocument", "quox": "application/vnd.quobject-quoxdocument", "qvd": "application/vnd.theqvd", "qwd": "application/vnd.quark.quarkxpress", "qwt": "application/vnd.quark.quarkxpress", "qxb": "application/vnd.quark.quarkxpress", "qxd": "application/vnd.quark.quarkxpress", "qxl": "application/vnd.quark.quarkxpress", "qxt": "application/vnd.quark.quarkxpress", "r": "text/r", "ra": "audio/x-realaudio", "ram": "audio/x-pn-realaudio", "raml": "application/raml+yaml", "rapd": "application/route-apd+xml", "rar": "application/x-rar-compressed", "ras": "image/x-cmu-raster", "rast": "image/cmu-raster", "rb": "application/x-ruby", "rcprofile": "application/vnd.ipunplugged.rcprofile", "rct": "application/prs.nprend", "rd": "chemical/x-mdl-rdfile", "rda": "text/r", "rdata": "text/r", "rds": "text/r", "rdf": "application/rdf+xml", "rdf-crypt": "application/prs.rdf-xml-crypt", "rdz": "application/vnd.data-vision.rdz", "relo": "application/p2p-overlay+xml", "rep": "application/vnd.businessobjects", "request": "application/vnd.nervana", "res": "application/x-dtbresource+xml", "rexx": "text/x-script.rexx", "rf": "image/vnd.rn-realflash", "rfcxml": "application/rfc+xml", "rgb": "image/x-rgb", "rgbe": "image/vnd.radiance", "rhtml": "application/x-httpd-eruby", "rif": "application/reginfo+xml", "rip": "audio/vnd.rip", "ris": "application/x-research-info-systems", "rl": "application/resource-lists+xml", "rlc": "image/vnd.fujixerox.edmics-rlc", "rld": "application/resource-lists-diff+xml", "rlib": "text/rust", "rm": "application/vnd.rn-realmedia", "rmi": "audio/mid", "rmm": "audio/x-pn-realaudio", "rmp": "audio/x-pn-realaudio-plugin", "rms": "application/vnd.jcp.javame.midlet-rms", "rmvb": "application/vnd.rn-realmedia-vbr", "rnc": "application/relax-ng-compact-syntax", "rnd": "application/prs.nprend", "rng": "text/xml", "rnx": "application/vnd.rn-realplayer", "roa": "application/rpki-roa", "roff": "text/troff", "ros": "chemical/x-rosdal", "rp": "image/vnd.rn-realpix", "rp9": "application/vnd.cloanto.rp9", "rpm": "application/x-redhat-package-manager", "rpss": "application/vnd.nokia.radio-presets", "rpst": "application/vnd.nokia.radio-preset", "rq": "application/sparql-query", "rs": "application/rls-services+xml", "rsd": "application/rsd+xml", "rsheet": "application/urc-ressheet+xml", "rsm": "model/vnd.gdl", "rss": "application/rss+xml", "rst": "text/prs.fallenstein.rst", "rt": "text/richtext", "rtf": "text/rtf", "rtx": "text/richtext", "run": "application/x-makeself", "rusd": "application/route-usd+xml", "rv": "video/vnd.rn-realvideo", "rxn": "chemical/x-mdl-rxnfile", "s": "text/x-asm", "s11": "video/vnd.sealed.mpeg1", "s14": "video/vnd.sealed.mpeg4", "s1a": "application/vnd.sealedmedia.softseal.pdf", "s1e": "application/vnd.sealed.xls", "s1g": "image/vnd.sealedmedia.softseal.gif", "s1h": "application/vnd.sealedmedia.softseal.html", "s1j": "image/vnd.sealedmedia.softseal.jpg", "s1m": "audio/vnd.sealedmedia.softseal.mpeg", "s1n": "image/vnd.sealed.png", "s1p": "application/vnd.sealed.ppt", "s1q": "video/vnd.sealedmedia.softseal.mov", "s1w": "application/vnd.sealed.doc", "s3df": "application/vnd.sealed.3df", "s3m": "audio/s3m", "sac": "application/tamp-sequence-adjust-confirm", "saf": "application/vnd.yamaha.smaf-audio", "sam": "application/vnd.lotus-wordpro", "sandboxed": "text/html-sandboxed", "sass": "text/x-sass", "saveme": "application/octet-stream", "sbk": "application/x-tbook", "sbml": "application/sbml+xml", "sc": "application/vnd.ibm.secure-container", "scala": "text/x-scala", "scd": "application/x-msschedule", "sce": "application/vnd.etsi.asic-e+zip", "scim": "application/scim+json", "scld": "application/vnd.doremir.scorecloud-binary-document", "scm": "application/vnd.lotus-screencam", "scq": "application/scvp-cv-request", "scr": "application/x-silverlight", "scs": "application/scvp-cv-response", "scsf": "application/vnd.sealed.csf", "scss": "text/x-scss", "sct": "text/scriptlet", "scurl": "text/vnd.curl.scurl", "sd": "chemical/x-mdl-sdfile", "sd2": "audio/x-sd2", "sda": "application/vnd.stardivision.draw", "sdc": "application/vnd.stardivision.calc", "sdd": "application/vnd.stardivision.impress", "sdf": "application/vnd.kinar", "sdkd": "application/vnd.solent.sdkm+xml", "sdkm": "application/vnd.solent.sdkm+xml", "sdml": "text/plain", "sdo": "application/vnd.sealed.doc", "sdoc": "application/vnd.sealed.doc", "sdp": "application/sdp", "sdr": "application/sounder", "sdw": "application/vnd.stardivision.writer", "sea": "application/x-sea", "see": "application/vnd.seemail", "seed": "application/vnd.fdsn.seed", "sem": "application/vnd.sealed.eml", "sema": "application/vnd.sema", "semd": "application/vnd.semd", "semf": "application/vnd.semf", "seml": "application/vnd.sealed.eml", "ser": "application/java-serialized-object", "set": "application/set", "setpay": "application/set-payment-initiation", "setreg": "application/set-registration-initiation", "sfc": "application/vnd.nintendo.snes.rom", "sfd": "application/vnd.font-fontforge-sfd", "sfd-hdstx": "application/vnd.hydrostatix.sof-data", "sfs": "application/vnd.spotfire.sfs", "sfv": "text/x-sfv", "sgf": "application/x-go-sgf", "sgi": "image/sgi", "sgif": "image/vnd.sealedmedia.softseal.gif", "sgl": "application/vnd.stardivision.writer-global", "sgm": "text/sgml", "sgml": "text/sgml", "sh": "application/x-sh", "shar": "application/x-shar", "shex": "text/shex", "shf": "application/shf+xml", "shp": "application/x-qgis", "shx": "application/x-qgis", "si": "text/vnd.wap.si", "sic": "application/vnd.wap.sic", "sid": "image/x-mrsid-image", "sieve": "application/sieve", "sig": "application/pgp-signature", "sik": "application/x-trash", "sil": "audio/silk", "silo": "model/mesh", "sis": "application/vnd.symbian.install", "sisx": "x-epoc/x-sisx-app", "sit": "application/x-stuffit", "sitx": "application/x-stuffitx", "siv": "application/sieve", "sjp": "image/vnd.sealedmedia.softseal.jpg", "sjpg": "image/vnd.sealedmedia.softseal.jpg", "skd": "application/vnd.koan", "skm": "application/vnd.koan", "skp": "application/vnd.koan", "skt": "application/vnd.koan", "sl": "text/vnd.wap.sl", "sla": "application/vnd.scribus", "slaz": "application/vnd.scribus", "slc": "application/vnd.wap.slc", "sldm": "application/vnd.ms-powerpoint.slide.macroenabled.12", "sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide", "sls": "application/route-s-tsid+xml", "slt": "application/vnd.epson.salt", "sm": "application/vnd.stepmania.stepchart", "smc": "application/vnd.nintendo.snes.rom", "smf": "application/vnd.stardivision.math", "smh": "application/vnd.sealed.mht", "smht": "application/vnd.sealed.mht", "smi": "application/smil+xml", "smil": "application/smil+xml", "smk": "video/vnd.radgamettools.smacker", "sml": "application/smil+xml", "smo": "video/vnd.sealedmedia.softseal.mov", "smov": "video/vnd.sealedmedia.softseal.mov", "smp": "audio/vnd.sealedmedia.softseal.mpeg", "smp3": "audio/vnd.sealedmedia.softseal.mpeg", "smpg": "video/vnd.sealed.mpeg1", "sms": "application/vnd.3gpp2.sms", "smv": "video/x-smv", "smzip": "application/vnd.stepmania.package", "snd": "audio/basic", "snf": "application/x-font-snf", "so": "application/octet-stream", "soa": "text/dns", "soc": "application/sgml-open-catalog", "sol": "application/solids", "spc": "text/x-speech", "spd": "application/vnd.sealedmedia.softseal.pdf", "spdf": "application/vnd.sealedmedia.softseal.pdf", "spec": "text/spec", "spf": "application/vnd.yamaha.smaf-phrase", "spl": "application/x-futuresplash", "spn": "image/vnd.sealed.png", "spng": "image/vnd.sealed.png", "spo": "text/vnd.in3d.spot", "spot": "text/vnd.in3d.spot", "spp": "application/scvp-vp-response", "sppt": "application/vnd.sealed.ppt", "spq": "application/scvp-vp-request", "spr": "application/x-sprite", "sprite": "application/x-sprite", "spx": "audio/ogg", "sql": "application/x-sql", "sr": "application/vnd.sigrok.session", "src": "application/x-wais-source", "srt": "application/x-subrip", "sru": "application/sru+xml", "srx": "application/sparql-results+xml", "ssdl": "application/ssdl+xml", "sse": "application/vnd.kodak-descriptor", "ssf": "application/vnd.epson.ssf", "ssi": "text/x-server-parsed-html", "ssm": "application/streamingmedia", "ssml": "application/ssml+xml", "sst": "application/vnd.ms-pki.certstore", "ssw": "video/vnd.sealed.swf", "sswf": "video/vnd.sealed.swf", "st": "application/vnd.sailingtracker.track", "stc": "application/vnd.sun.xml.calc.template", "std": "application/vnd.sun.xml.draw.template", "step": "application/step", "stf": "application/vnd.wt.stf", "sti": "application/vnd.sun.xml.impress.template", "stif": "application/vnd.sealed.tiff", "stk": "application/hyperstudio", "stl": "application/vnd.ms-pki.stl", "stm": "audio/x-stm", "stml": "application/vnd.sealedmedia.softseal.html", "stp": "application/step", "str": "application/vnd.pg.format", "study-inter": "application/vnd.vd-study", "stw": "application/vnd.sun.xml.writer.template", "sty": "text/x-tex", "styl": "text/stylus", "sub": "text/vnd.dvb.subtitle", "sus": "application/vnd.sus-calendar", "susp": "application/vnd.sus-calendar", "sv4cpio": "application/x-sv4cpio", "sv4crc": "application/x-sv4crc", "svc": "application/vnd.dvb.service", "svd": "application/vnd.svd", "svf": "image/x-dwg", "svg": "image/svg+xml", "svgz": "image/svg+xml", "sw": "chemical/x-swissprot", "swa": "application/x-director", "swf": "application/x-shockwave-flash", "swfl": "application/x-shockwave-flash", "swi": "application/vnd.aristanetworks.swi", "swift": "text/swift", "swiftdeps": "text/swiftdeps", "sxc": "application/vnd.sun.xml.calc", "sxd": "application/vnd.sun.xml.draw", "sxg": "application/vnd.sun.xml.writer.global", "sxi": "application/vnd.sun.xml.impress", "sxl": "application/vnd.sealed.xls", "sxls": "application/vnd.sealed.xls", "sxm": "application/vnd.sun.xml.math", "sxw": "application/vnd.sun.xml.writer", "t": "text/troff", "t3": "application/x-t3vm-image", "t38": "image/t38", "tac": "text/twisted", "tag": "text/prs.lines.tag", "taglet": "application/vnd.mynfc", "talk": "text/x-speech", "tam": "application/vnd.onepager", "tamp": "application/vnd.onepagertamp", "tamx": "application/vnd.onepagertamx", "tao": "application/vnd.tao.intent-module-archive", "tap": "image/vnd.tencent.tap", "tar": "application/x-tar", "tat": "application/vnd.onepagertat", "tatp": "application/vnd.onepagertatp", "tatx": "application/vnd.onepagertatx", "tau": "application/tamp-apex-update", "taz": "application/x-gtar", "tbk": "application/toolbook", "tcap": "application/vnd.3gpp2.tcap", "tcl": "application/x-tcl", "tcsh": "text/x-script.tcsh", "tcu": "application/tamp-community-update", "td": "application/urc-targetdesc+xml", "teacher": "application/vnd.smart.teacher", "tei": "application/tei+xml", "teicorpus": "application/tei+xml", "ter": "application/tamp-error", "tex": "application/x-tex", "texi": "application/x-texinfo", "texinfo": "application/x-texinfo", "text": "text/plain", "tf": "text/terraform", "tfi": "application/thraud+xml", "tfm": "application/x-tex-tfm", "tfx": "image/tiff-fx", "tga": "image/x-tga", "tgf": "chemical/x-mdl-tgf", "tgz": "application/gzip", "thmx": "application/vnd.ms-officetheme", "thrift": "text/thrift", "tif": "image/tiff", "tiff": "image/tiff", "tk": "text/x-tcl", "tlclient": "application/vnd.cendio.thinlinc.clientconf", "tm": "text/texmacs", "tmo": "application/vnd.tmobile-livetv", "tnef": "application/vnd.ms-tnef", "tnf": "application/vnd.ms-tnef", "toml": "text/toml", "torrent": "application/x-bittorrent", "tpl": "application/vnd.groove-tool-template", "tpt": "application/vnd.trid.tpt", "tr": "text/troff", "tra": "application/vnd.trueapp", "tree": "application/vnd.rainstor.data", "trig": "application/trig", "trm": "application/x-msterminal", "ts": "video/mp2t", "tsa": "application/tamp-sequence-adjust", "tscn": "text/godot", "tsd": "application/timestamped-data", "tsi": "audio/tsp-audio", "tsp": "audio/tsplayer", "tsq": "application/timestamp-query", "tsr": "application/timestamp-reply", "tst": "application/vnd.etsi.timestamp-token", "tsv": "text/tab-separated-values", "tsx": "text/tsx", "ttc": "font/collection", "ttf": "font/ttf", "ttl": "text/turtle", "ttml": "application/ttml+xml", "tuc": "application/tamp-update-confirm", "tur": "application/tamp-update", "turbot": "image/florian", "twd": "application/vnd.simtech-mindmapper", "twds": "application/vnd.simtech-mindmapper", "txd": "application/vnd.genomatix.tuxedo", "txf": "application/vnd.mobius.txf", "txt": "text/plain", "u32": "application/x-authorware-bin", "u8dsn": "message/global-delivery-status", "u8hdr": "message/global-headers", "u8mdn": "message/global-disposition-notification", "u8msg": "message/global", "udeb": "application/vnd.debian.binary-package", "ufd": "application/vnd.ufdl", "ufdl": "application/vnd.ufdl", "uil": "text/x-uil", "uis": "application/urc-uisocketdesc+xml", "uls": "text/iuls", "ult": "audio/x-mod", "ulx": "application/x-glulx", "umj": "application/vnd.umajin", "uni": "audio/x-mod", "unis": "text/uri-list", "unityweb": "application/vnd.unity", "unv": "application/i-deas", "uo": "application/vnd.uoml+xml", "uoml": "application/vnd.uoml+xml", "upa": "application/vnd.hbci", "uri": "text/uri-list", "uric": "text/vnd.si.uricatalogue", "urim": "application/vnd.uri-map", "urimap": "application/vnd.uri-map", "uris": "text/uri-list", "urls": "text/uri-list", "ustar": "application/x-ustar", "utz": "application/vnd.uiq.theme", "uu": "text/x-uuencode", "uue": "text/x-uuencode", "uva": "audio/vnd.dece.audio", "uvd": "application/vnd.dece.data", "uvf": "application/vnd.dece.data", "uvg": "image/vnd.dece.graphic", "uvh": "video/vnd.dece.hd", "uvi": "image/vnd.dece.graphic", "uvm": "video/vnd.dece.mobile", "uvp": "video/vnd.dece.pd", "uvs": "video/vnd.dece.sd", "uvt": "application/vnd.dece.ttml+xml", "uvu": "video/vnd.dece.mp4", "uvv": "video/vnd.dece.video", "uvva": "audio/vnd.dece.audio", "uvvd": "application/vnd.dece.data", "uvvf": "application/vnd.dece.data", "uvvg": "image/vnd.dece.graphic", "uvvh": "video/vnd.dece.hd", "uvvi": "image/vnd.dece.graphic", "uvvm": "video/vnd.dece.mobile", "uvvp": "video/vnd.dece.pd", "uvvs": "video/vnd.dece.sd", "uvvt": "application/vnd.dece.ttml+xml", "uvvu": "video/vnd.dece.mp4", "uvvv": "video/vnd.dece.video", "uvvx": "application/vnd.dece.unspecified", "uvvz": "application/vnd.dece.zip", "uvx": "application/vnd.dece.unspecified", "uvz": "application/vnd.dece.zip", "val": "chemical/x-ncbi-asn1-binary", "vbk": "audio/vnd.nortel.vbk", "vbox": "application/x-virtualbox-vbox", "vbox-extpack": "application/x-virtualbox-vbox-extpack", "vcard": "text/vcard", "vcd": "application/x-cdlink", "vcf": "text/x-vcard", "vcg": "application/vnd.groove-vcard", "vcs": "text/x-vcalendar", "vcx": "application/vnd.vcx", "vda": "application/vda", "vdi": "application/x-virtualbox-vdi", "vdo": "video/vdo", "vdx": "text/vdx", "vew": "application/vnd.lotus-approach", "vfr": "application/vnd.tml", "vhd": "application/x-virtualbox-vhd", "viaframe": "application/vnd.tml", "vim": "text/vim", "vis": "application/vnd.visionary", "viv": "video/vnd.vivo", "vivo": "video/vivo", "vmd": "application/vocaltec-media-desc", "vmdk": "application/x-virtualbox-vmdk", "vmf": "application/vocaltec-media-file", "vms": "chemical/x-vamas-iso14976", "vmt": "application/vnd.valve.source.material", "vob": "video/x-ms-vob", "voc": "audio/voc", "vor": "application/vnd.stardivision.writer", "vos": "video/vosaic", "vox": "audio/voxware", "vpm": "multipart/voice-message", "vqe": "audio/x-twinvq-plugin", "vqf": "audio/x-twinvq", "vql": "audio/x-twinvq-plugin", "vrm": "x-world/x-vrml", "vrml": "model/vrml", "vrt": "x-world/x-vrt", "vsc": "application/vnd.vidsoft.vidconference", "vsd": "application/vnd.visio", "vsf": "application/vnd.vsf", "vss": "application/vnd.visio", "vst": "application/vnd.visio", "vsw": "application/vnd.visio", "vtf": "image/vnd.valve.source.texture", "vtt": "text/vtt", "vtu": "model/vnd.vtu", "vue": "text/vue", "vwx": "application/vnd.vectorworks", "vxml": "application/voicexml+xml", "w3d": "application/x-director", "w60": "application/wordperfect6.0", "w61": "application/wordperfect6.1", "w6w": "application/msword", "wad": "application/x-doom", "wadl": "application/vnd.sun.wadl+xml", "war": "binary/zip", "wasm": "application/wasm", "wav": "audio/wave", "wax": "audio/x-ms-wax", "wb1": "application/x-qpro", "wbmp": "image/vnd.wap.wbmp", "wbs": "application/vnd.criticaltools.wbs+xml", "wbxml": "application/vnd.wap.wbxml", "wcm": "application/vnd.ms-works", "wdb": "application/vnd.ms-works", "wdp": "image/vnd.ms-photo", "web": "application/vnd.xara", "weba": "audio/webm", "webapp": "application/x-web-app-manifest+json", "webm": "video/webm", "webmanifest": "application/manifest+json", "webp": "image/webp", "wg": "application/vnd.pmi.widget", "wgt": "application/widget", "whl": "binary/wheel", "wif": "application/watcherinfo+xml", "win": "model/vnd.gdl", "wiz": "application/msword", "wk": "application/x-123", "wk1": "application/vnd.lotus-1-2-3", "wk3": "application/vnd.lotus-1-2-3", "wk4": "application/vnd.lotus-1-2-3", "wks": "application/vnd.ms-works", "wkt": "text/wkt", "wlnk": "application/link-format", "wm": "video/x-ms-wm", "wma": "audio/x-ms-wma", "wmc": "application/vnd.wmc", "wmd": "application/x-ms-wmd", "wmf": "image/wmf", "wml": "text/vnd.wap.wml", "wmlc": "application/vnd.wap.wmlc", "wmls": "text/vnd.wap.wmlscript", "wmlsc": "application/vnd.wap.wmlscriptc", "wmv": "video/x-ms-wmv", "wmx": "video/x-ms-wmx", "wmz": "application/x-ms-wmz", "woff": "font/woff", "woff2": "font/woff2", "word": "application/msword", "wp": "application/wordperfect", "wp5": "application/wordperfect", "wp6": "application/wordperfect", "wpd": "application/vnd.wordperfect", "wpl": "application/vnd.ms-wpl", "wps": "application/vnd.ms-works", "wq1": "application/x-lotus", "wqd": "application/vnd.wqd", "wri": "application/x-mswrite", "wrl": "model/vrml", "wrz": "model/vrml", "wsc": "message/vnd.wfa.wsc", "wsdl": "application/wsdl+xml", "wsgi": "text/wsgi", "wspolicy": "application/wspolicy+xml", "wsrc": "application/x-wais-source", "wtb": "application/vnd.webturbo", "wtk": "application/x-wintalk", "wv": "application/vnd.wv.csp+wbxml", "wvx": "video/x-ms-wvx", "wz": "application/x-wingz", "x-png": "image/png", "x32": "application/x-authorware-bin", "x3d": "application/vnd.hzn-3d-crossword", "x3db": "model/x3d+xml", "x3dbz": "model/x3d+binary", "x3dv": "model/x3d-vrml", "x3dvz": "model/x3d-vrml", "x3dz": "model/x3d+xml", "x_b": "model/vnd.parasolid.transmit.binary", "x_t": "model/vnd.parasolid.transmit.text", "xaf": "x-world/x-vrml", "xaml": "application/xaml+xml", "xap": "application/x-silverlight-app", "xar": "application/vnd.xara", "xav": "application/xcap-att+xml", "xbap": "application/x-ms-xbap", "xbd": "application/vnd.fujixerox.docuworks.binder", "xbm": "image/x-xbitmap", "xca": "application/xcap-caps+xml", "xcf": "application/x-xcf", "xcs": "application/calendar+xml", "xct": "application/vnd.fujixerox.docuworks.container", "xdd": "application/bacnet-xdd+zip", "xdf": "application/xcap-diff+xml", "xdm": "application/vnd.syncml.dm+xml", "xdp": "application/vnd.adobe.xdp+xml", "xdr": "video/x-amt-demorun", "xdssc": "application/dssc+xml", "xdw": "application/vnd.fujixerox.docuworks", "xel": "application/xcap-el+xml", "xenc": "application/xenc+xml", "xer": "application/patch-ops-error+xml", "xfd": "application/vnd.xfdl", "xfdf": "application/vnd.adobe.xfdf", "xfdl": "application/vnd.xfdl", "xgz": "xgl/drawing", "xht": "application/xhtml+xml", "xhtm": "application/xhtml+xml", "xhtml": "application/xhtml+xml", "xhvml": "application/xv+xml", "xif": "image/vnd.xiff", "xl": "application/excel", "xla": "application/vnd.ms-excel", "xlam": "application/vnd.ms-excel.addin.macroenabled.12", "xlb": "application/vndms-excel", "xlc": "application/vnd.ms-excel", "xlf": "application/x-xliff+xml", "xlim": "application/vnd.xmpie.xlim", "xlm": "application/vnd.ms-excel", "xls": "application/vnd.ms-excel", "xlsb": "application/vnd.ms-excel.sheet.binary.macroenabled.12", "xlsm": "application/vnd.ms-excel.sheet.macroenabled.12", "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlt": "application/vnd.ms-excel", "xltm": "application/vnd.ms-excel.template.macroenabled.12", "xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", "xlw": "application/vnd.ms-excel", "xm": "audio/xm", "xml": "text/xml", "xmls": "application/dskpp+xml", "xmt_bin": "model/vnd.parasolid.transmit.binary", "xmt_txt": "model/vnd.parasolid.transmit.text", "xmz": "xgl/movie", "xns": "application/xcap-ns+xml", "xo": "application/vnd.olpc-sugar", "xof": "x-world/x-vrml", "xop": "application/xop+xml", "xpdl": "application/xml", "xpi": "application/x-xpinstall", "xpix": "application/x-vnd.ls-xpix", "xpl": "application/xproc+xml", "xpm": "image/x-xpixmap", "xpr": "application/vnd.is-xpr", "xps": "application/vnd.ms-xpsdocument", "xpw": "application/vnd.intercon.formnet", "xpx": "application/vnd.intercon.formnet", "xq": "text/xquery", "xql": "text/xquery", "xqm": "text/xquery", "xqu": "text/xquery", "xquery": "text/xquery", "xqy": "text/xquery", "xsd": "text/xml", "xsf": "application/prs.xsf+xml", "xsl": "application/xslt+xml", "xslt": "application/xslt+xml", "xsm": "application/vnd.syncml+xml", "xspf": "application/xspf+xml", "xsr": "video/x-amt-showrun", "xtel": "chemical/x-xtel", "xul": "application/vnd.mozilla.xul+xml", "xvm": "application/xv+xml", "xvml": "application/xv+xml", "xwd": "image/x-xwindowdump", "xyz": "chemical/x-xyz", "xyze": "image/vnd.radiance", "xz": "application/x-xz", "yaml": "text/yaml", "yang": "application/yang", "yin": "application/yin+xml", "yme": "application/vnd.yaoweme", "yml": "text/yaml", "ymp": "text/x-suse-ymp", "z1": "application/x-zmachine", "z2": "application/x-zmachine", "z3": "application/x-zmachine", "z4": "application/x-zmachine", "z5": "application/x-zmachine", "z6": "application/x-zmachine", "z7": "application/x-zmachine", "z8": "application/x-zmachine", "zaz": "application/vnd.zzazz.deck+xml", "zfc": "application/vnd.filmit.zfc", "zfo": "application/vnd.software602.filler.form-xml-zip", "zig": "text/zig", "zip": "application/zip", "zir": "application/vnd.zul", "zirz": "application/vnd.zul", "zmm": "application/vnd.handheld-entertainment+xml", "zmt": "chemical/x-mopac-input", "zone": "text/dns", "zoo": "application/octet-stream", "zsh": "text/x-script.zsh", "~": "application/x-trash" } func newMimetypes*(): MimeDB = ## Creates a new Mimetypes database. The database will contain the most ## common mimetypes. {.cast(noSideEffect).}: result.mimes = mimes.toOrderedTable() func getMimetype*(mimedb: MimeDB, ext: string, default = "text/plain"): string = ## Gets mimetype which corresponds to `ext`. Returns `default` if `ext` ## could not be found. `ext` can start with an optional dot which is ignored. ## `ext` is lowercased before querying `mimedb`. if ext.startsWith("."): result = mimedb.mimes.getOrDefault(ext.toLowerAscii.substr(1)) else: result = mimedb.mimes.getOrDefault(ext.toLowerAscii()) if result == "": return default func getExt*(mimedb: MimeDB, mimetype: string, default = "txt"): string = ## Gets extension which corresponds to `mimetype`. Returns `default` if ## `mimetype` could not be found. Extensions are returned without the ## leading dot. `mimetype` is lowercased before querying `mimedb`. result = default let mimeLowered = mimetype.toLowerAscii() for e, m in mimedb.mimes: if m == mimeLowered: result = e break func register*(mimedb: var MimeDB, ext: string, mimetype: string) = ## Adds `mimetype` to the `mimedb`. ## `mimetype` and `ext` are lowercased before registering on `mimedb`. assert ext.strip.len > 0, "ext argument can not be empty string" assert mimetype.strip.len > 0, "mimetype argument can not be empty string" {.noSideEffect.}: mimedb.mimes[ext.toLowerAscii()] = mimetype.toLowerAscii()