# Copyright (C) 2014-2023 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/

DEFAULTS = {
 'encodings_map': {'.gz': 'gzip',
                   '.Z': 'compress',
                   '.bz2': 'bzip2',
                   '.xz': 'xz'},
 'suffix_map': {'.svgz': '.svg.gz',
                '.tgz': '.tar.gz',
                '.taz': '.tar.gz',
                '.tz': '.tar.gz',
                '.tbz2': '.tar.bz2',
                '.txz': '.tar.xz'},
}

TYPES_MAP = [
 {'.jpg': 'image/jpg',
  '.mid': 'audio/midi',
  '.midi': 'audio/midi',
  '.pct': 'image/pict',
  '.pic': 'image/pict',
  '.pict': 'image/pict',
  '.rtf': 'application/rtf',
  '.xul': 'text/xul'},
 {'.123': 'application/vnd.lotus-1-2-3',
  '.3dml': 'text/vnd.in3d.3dml',
  '.3g2': 'video/3gpp2',
  '.3gp': 'video/3gpp',
  '.7z': 'application/x-7z-compressed',
  '.ASM': 'text/x-nasm',
  '.C': 'text/x-c++hdr',
  '.COB': 'text/x-cobol',
  '.CPP': 'text/x-c++hdr',
  '.CPY': 'text/x-cobol',
  '.F': 'text/x-fortran',
  '.F90': 'text/x-fortran',
  '.H': 'text/x-c++hdr',
  '.R': 'text/S-plus',
  '.Rd': 'text/x-r-doc',
  '.S': 'text/S-plus',
  '.[1234567]': 'application/x-troff',
  '.a': 'application/octet-stream',
  '.aab': 'application/x-authorware-bin',
  '.aac': 'audio/x-aac',
  '.aam': 'application/x-authorware-map',
  '.aas': 'application/x-authorware-seg',
  '.abap': 'text/x-abap',
  '.abw': 'application/x-abiword',
  '.ac': 'application/pkix-attr-cert',
  '.acc': 'application/vnd.americandynamics.acc',
  '.ace': 'application/x-ace-compressed',
  '.acu': 'application/vnd.acucobol',
  '.acutc': 'application/vnd.acucorp',
  '.ada': 'text/x-ada',
  '.adb': 'text/x-ada',
  '.adp': 'audio/adpcm',
  '.ads': 'text/x-ada',
  '.aep': 'application/vnd.audiograph',
  '.afm': 'application/x-font-type1',
  '.afp': 'application/vnd.ibm.modcap',
  '.ahead': 'application/vnd.ahead.space',
  '.ahk': 'text/x-autohotkey',
  '.ahkl': 'text/x-autohotkey',
  '.ai': 'application/postscript',
  '.aif': 'audio/x-aiff',
  '.aifc': 'audio/x-aiff',
  '.aiff': 'audio/x-aiff',
  '.air': 'application/vnd.adobe.air-application-installer-package+zip',
  '.ait': 'application/vnd.dvb.ait',
  '.aj': 'text/x-aspectj',
  '.ami': 'application/vnd.amiga.ami',
  '.apk': 'application/vnd.android.package-archive',
  '.application': 'application/x-ms-application',
  '.apr': 'application/vnd.lotus-approach',
  '.as': 'application/x-actionscript3',
  '.asc': 'application/pgp-signature',
  '.asf': 'video/x-ms-asf',
  '.asm': 'text/x-asm',
  '.aso': 'application/vnd.accpac.simply.aso',
  '.aspx': 'application/x-aspx',
  '.asx': 'video/x-ms-asf',
  '.asy': 'text/x-asymptote',
  '.atc': 'application/vnd.acucorp',
  '.atom': 'application/atom+xml',
  '.atomcat': 'application/atomcat+xml',
  '.atomsvc': 'application/atomsvc+xml',
  '.atx': 'application/vnd.antix.game-component',
  '.au': 'audio/basic',
  '.au3': 'text/x-autoit',
  '.aux': 'text/x-tex',
  '.avi': 'video/x-msvideo',
  '.aw': 'application/applixware',
  '.awk': 'application/x-awk',
  '.azf': 'application/vnd.airzip.filesecure.azf',
  '.azs': 'application/vnd.airzip.filesecure.azs',
  '.azw': 'application/vnd.amazon.ebook',
  '.b': 'application/x-brainfuck',
  '.bas': 'text/x-vbnet',
  '.bash': 'text/x-sh',
  '.bat': 'application/x-msdownload',
  '.bcpio': 'application/x-bcpio',
  '.bdf': 'application/x-font-bdf',
  '.bdm': 'application/vnd.syncml.dm+wbxml',
  '.bed': 'application/vnd.realvnc.bed',
  '.befunge': 'application/x-befunge',
  '.bf': 'application/x-brainfuck',
  '.bh2': 'application/vnd.fujitsu.oasysprs',
  '.bin': 'application/octet-stream',
  '.bmi': 'application/vnd.bmi',
  '.bmp': 'image/bmp',
  '.bmx': 'text/x-bmx',
  '.boo': 'text/x-boo',
  '.book': 'application/vnd.framemaker',
  '.box': 'application/vnd.previewsystems.box',
  '.boz': 'application/x-bzip2',
  '.bpk': 'application/octet-stream',
  '.btif': 'image/prs.btif',
  '.bz': 'application/x-bzip',
  '.bz2': 'application/x-bzip2',
  '.c': 'text/x-c',
  '.c++': 'text/x-c++hdr',
  '.c++-objdump': 'text/x-cpp-objdump',
  '.c-objdump': 'text/x-c-objdump',
  '.c11amc': 'application/vnd.cluetrust.cartomobile-config',
  '.c11amz': 'application/vnd.cluetrust.cartomobile-config-pkg',
  '.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',
  '.car': 'application/vnd.curl.car',
  '.cat': 'application/vnd.ms-pki.seccat',
  '.cc': 'text/x-c',
  '.cct': 'application/x-director',
  '.ccxml': 'application/ccxml+xml',
  '.cdbcmsg': 'application/vnd.contact.cmsg',
  '.cdf': 'application/x-netcdf',
  '.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',
  '.cdx': 'chemical/x-cdx',
  '.cdxml': 'application/vnd.chemdraw+xml',
  '.cdy': 'application/vnd.cinderella',
  '.cer': 'application/pkix-cert',
  '.ceylon': 'text/x-ceylon',
  '.cfc': 'application/x-coldfusion',
  '.cfg': 'text/x-ini',
  '.cfm': 'application/x-coldfusion',
  '.cfml': 'application/x-coldfusion',
  '.cgm': 'image/cgm',
  '.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': 'text/x-common-lisp',
  '.cla': 'application/vnd.claymore',
  '.class': 'application/java-vm',
  '.clj': 'text/x-clojure',
  '.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-openedge',
  '.cmake': 'text/x-cmake',
  '.cmc': 'application/vnd.cosmocaller',
  '.cmd': 'application/x-dos-batch',
  '.cmdf': 'chemical/x-cmdf',
  '.cml': 'chemical/x-cml',
  '.cmp': 'application/vnd.yellowriver-custom-menu',
  '.cmx': 'image/x-cmx',
  '.cob': 'text/x-cobol',
  '.cod': 'application/vnd.rim.cod',
  '.coffee': 'text/coffeescript',
  '.com': 'application/x-msdownload',
  '.conf': 'text/plain',
  '.cp': 'text/x-c++hdr',
  '.cpio': 'application/x-cpio',
  '.cpp': 'text/x-c',
  '.cpp-objdump': 'text/x-cpp-objdump',
  '.cpt': 'application/mac-compactpro',
  '.cpy': 'text/x-cobol',
  '.crd': 'application/x-mscardfile',
  '.crl': 'application/pkix-crl',
  '.croc': 'text/x-crocsrc',
  '.crt': 'application/x-x509-ca-cert',
  '.cryptonote': 'application/vnd.rig.cryptonote',
  '.cs': 'text/x-csharp',
  '.csh': 'application/x-csh',
  '.csml': 'chemical/x-csml',
  '.csp': 'application/vnd.commonspace',
  '.css': 'text/css',
  '.cst': 'application/x-director',
  '.csv': 'text/csv',
  '.cu': 'application/cu-seeme',
  '.cuh': 'text/x-cuda',
  '.curl': 'text/vnd.curl',
  '.cww': 'application/prs.cww',
  '.cxt': 'application/x-director',
  '.cxx': 'text/x-c',
  '.cxx-objdump': 'text/x-cpp-objdump',
  '.d': 'text/x-dsrc',
  '.d-objdump': 'text/x-d-objdump',
  '.dae': 'model/vnd.collada+xml',
  '.daf': 'application/vnd.mobius.daf',
  '.dart': 'text/x-dart',
  '.dataless': 'application/vnd.fdsn.seed',
  '.davmount': 'application/davmount+xml',
  '.dcr': 'application/x-director',
  '.dcurl': 'text/vnd.curl.dcurl',
  '.dd2': 'application/vnd.oma.dd2+xml',
  '.ddd': 'application/vnd.fujixerox.ddd',
  '.deb': 'application/x-debian-package',
  '.def': 'text/plain',
  '.deploy': 'application/octet-stream',
  '.der': 'application/x-x509-ca-cert',
  '.dfac': 'application/vnd.dreamfactory',
  '.dg': 'text/x-dg',
  '.di': 'text/x-dsrc',
  '.dic': 'text/x-c',
  '.dif': 'video/x-dv',
  '.diff': 'text/x-diff',
  '.dir': 'application/x-director',
  '.dis': 'application/vnd.mobius.dis',
  '.dist': 'application/octet-stream',
  '.distz': 'application/octet-stream',
  '.djv': 'image/vnd.djvu',
  '.djvu': 'image/vnd.djvu',
  '.dll': 'application/x-msdownload',
  '.dmg': 'application/octet-stream',
  '.dms': 'application/octet-stream',
  '.dna': 'application/vnd.dna',
  '.doc': 'application/msword',
  '.docm': 'application/vnd.ms-word.document.macroenabled.12',
  '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  '.dot': 'application/msword',
  '.dotm': 'application/vnd.ms-word.template.macroenabled.12',
  '.dotx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
  '.dp': 'application/vnd.osgi.dp',
  '.dpg': 'application/vnd.dpgraph',
  '.dra': 'audio/vnd.dra',
  '.dsc': 'text/prs.lines.tag',
  '.dssc': 'application/dssc+der',
  '.dtb': 'application/x-dtbook+xml',
  '.dtd': 'application/xml-dtd',
  '.dts': 'audio/vnd.dts',
  '.dtshd': 'audio/vnd.dts.hd',
  '.duby': 'text/x-ruby',
  '.duel': 'text/x-duel',
  '.dump': 'application/octet-stream',
  '.dv': 'video/x-dv',
  '.dvi': 'application/x-dvi',
  '.dwf': 'model/vnd.dwf',
  '.dwg': 'image/vnd.dwg',
  '.dxf': 'image/vnd.dxf',
  '.dxp': 'application/vnd.spotfire.dxp',
  '.dxr': 'application/x-director',
  '.dyl': 'text/x-dylan',
  '.dylan': 'text/x-dylan',
  '.dylan-console': 'text/x-dylan-console',
  '.ebuild': 'text/x-sh',
  '.ec': 'text/x-echdr',
  '.ecelp4800': 'audio/vnd.nuera.ecelp4800',
  '.ecelp7470': 'audio/vnd.nuera.ecelp7470',
  '.ecelp9600': 'audio/vnd.nuera.ecelp9600',
  '.ecl': 'text/x-ecl',
  '.eclass': 'text/x-sh',
  '.ecma': 'application/ecmascript',
  '.edm': 'application/vnd.novadigm.edm',
  '.edx': 'application/vnd.novadigm.edx',
  '.efif': 'application/vnd.picsel',
  '.eh': 'text/x-echdr',
  '.ei6': 'application/vnd.pg.osasli',
  '.el': 'text/x-common-lisp',
  '.elc': 'application/octet-stream',
  '.eml': 'message/rfc822',
  '.emma': 'application/emma+xml',
  '.eol': 'audio/vnd.digital-winds',
  '.eot': 'application/vnd.ms-fontobject',
  '.eps': 'application/postscript',
  '.epub': 'application/epub+zip',
  '.erl': 'text/x-erlang',
  '.erl-sh': 'text/x-erl-shellsession',
  '.es': 'text/x-erlang',
  '.es3': 'application/vnd.eszigno3+xml',
  '.escript': 'text/x-erlang',
  '.esf': 'application/vnd.epson.esf',
  '.et3': 'application/vnd.eszigno3+xml',
  '.etx': 'text/x-setext',
  '.evoque': 'application/x-evoque',
  '.ex': 'text/x-elixir',
  '.exe': 'application/x-msdownload',
  '.exi': 'application/exi',
  '.exs': 'text/x-elixir',
  '.ext': 'application/vnd.novadigm.ext',
  '.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/x-fortran',
  '.factor': 'text/x-factor',
  '.fan': 'application/x-fantom',
  '.fancypack': 'text/x-fancysrc',
  '.fbs': 'image/vnd.fastbidsheet',
  '.fcs': 'application/vnd.isac.fcs',
  '.fdf': 'application/vnd.fdf',
  '.fe_launch': 'application/vnd.denovo.fcselayout-link',
  '.feature': 'text/x-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',
  '.fig': 'application/x-xfig',
  '.fli': 'video/x-fli',
  '.flo': 'application/vnd.micrografx.flo',
  '.flv': 'video/x-flv',
  '.flw': 'application/vnd.kde.kivio',
  '.flx': 'text/vnd.fmi.flexstor',
  '.flxh': 'text/x-felix',
  '.fly': 'text/vnd.fly',
  '.fm': 'application/vnd.framemaker',
  '.fnc': 'application/vnd.frogans.fnc',
  '.for': 'text/x-fortran',
  '.fpx': 'image/vnd.fpx',
  '.frag': 'text/x-glslsrc',
  '.frame': 'application/vnd.framemaker',
  '.fs': 'text/x-fsharp',
  '.fsc': 'application/vnd.fsc.weblaunch',
  '.fsi': 'text/x-fsharp',
  '.fst': 'image/vnd.fst',
  '.ftc': 'application/vnd.fluxtime.clip',
  '.fti': 'application/vnd.anser-web-funds-transfer-initiation',
  '.fun': 'text/x-standardml',
  '.fvt': 'video/vnd.fvt',
  '.fxp': 'application/vnd.adobe.fxp',
  '.fxpl': 'application/vnd.adobe.fxp',
  '.fy': 'text/x-fancysrc',
  '.fzs': 'application/vnd.fuzzysheet',
  '.g2w': 'application/vnd.geoplan',
  '.g3': 'image/g3fax',
  '.g3w': 'application/vnd.geospace',
  '.gac': 'application/vnd.groove-account',
  '.gdc': 'text/x-gooddata-cl',
  '.gdl': 'model/vnd.gdl',
  '.gemspec': 'text/x-ruby',
  '.geo': 'application/vnd.dynageo',
  '.gex': 'application/vnd.geometry-explorer',
  '.ggb': 'application/vnd.geogebra.file',
  '.ggt': 'application/vnd.geogebra.tool',
  '.ghf': 'application/vnd.groove-help',
  '.gif': 'image/gif',
  '.gim': 'application/vnd.groove-identity-message',
  '.gmx': 'application/vnd.gmx',
  '.gnumeric': 'application/x-gnumeric',
  '.go': 'text/x-gosrc',
  '.gph': 'application/vnd.flographit',
  '.gqf': 'application/vnd.grafeq',
  '.gqs': 'application/vnd.grafeq',
  '.gram': 'application/srgs',
  '.gre': 'application/vnd.geometry-explorer',
  '.groovy': 'text/x-groovy',
  '.grv': 'application/vnd.groove-injector',
  '.grxml': 'application/srgs+xml',
  '.gs': 'text/x-gosu',
  '.gsf': 'application/x-font-ghostscript',
  '.gsp': 'text/x-gosu',
  '.gst': 'text/x-gosu-template',
  '.gsx': 'text/x-gosu',
  '.gtar': 'application/x-gtar',
  '.gtm': 'application/vnd.groove-tool-message',
  '.gtw': 'model/vnd.gtw',
  '.gv': 'text/vnd.graphviz',
  '.gxt': 'application/vnd.geonext',
  '.h': 'text/x-c',
  '.h++': 'text/x-c++hdr',
  '.h261': 'video/h261',
  '.h263': 'video/h263',
  '.h264': 'video/h264',
  '.hal': 'application/vnd.hal+xml',
  '.haml': 'text/x-haml',
  '.hbci': 'application/vnd.hbci',
  '.hdf': 'application/x-hdf',
  '.hdp': 'text/x-dylan-lid',
  '.hh': 'text/x-c',
  '.hlp': 'application/winhlp',
  '.hpgl': 'application/vnd.hp-hpgl',
  '.hpid': 'application/vnd.hp-hpid',
  '.hpp': 'text/x-c++hdr',
  '.hps': 'application/vnd.hp-hps',
  '.hqx': 'application/mac-binhex40',
  '.hrl': 'text/x-erlang',
  '.hs': 'text/x-haskell',
  '.htke': 'application/vnd.kenameaapp',
  '.htm': 'text/html',
  '.html': 'text/html',
  '.hvd': 'application/vnd.yamaha.hv-dic',
  '.hvp': 'application/vnd.yamaha.hv-voice',
  '.hvs': 'application/vnd.yamaha.hv-script',
  '.hx': 'text/haxe',
  '.hxx': 'text/x-c++hdr',
  '.hy': 'text/x-hybris',
  '.hyb': 'text/x-hybris',
  '.i2g': 'application/vnd.intergeo',
  '.icc': 'application/vnd.iccprofile',
  '.ice': 'x-conference/x-cooltalk',
  '.icm': 'application/vnd.iccprofile',
  '.ico': 'image/x-icon',
  '.ics': 'text/calendar',
  '.idc': 'text/x-chdr',
  '.ief': 'image/ief',
  '.ifb': 'text/calendar',
  '.ifm': 'application/vnd.shana.informed.formdata',
  '.iges': 'model/iges',
  '.igl': 'application/vnd.igloader',
  '.igm': 'application/vnd.insors.igm',
  '.igs': 'model/iges',
  '.igx': 'application/vnd.micrografx.igx',
  '.iif': 'application/vnd.shana.informed.interchange',
  '.ik': 'text/x-iokesrc',
  '.imp': 'application/vnd.accpac.simply.imp',
  '.ims': 'application/vnd.ms-ims',
  '.in': 'text/plain',
  '.inc': 'text/x-povray',
  '.ini': 'text/x-ini',
  '.intr': 'text/x-dylan',
  '.io': 'text/x-iosrc',
  '.ipfix': 'application/ipfix',
  '.ipk': 'application/vnd.shana.informed.package',
  '.irm': 'application/vnd.ibm.rights-management',
  '.irp': 'application/vnd.irepository.package+xml',
  '.iso': 'application/octet-stream',
  '.itp': 'application/vnd.shana.informed.formtemplate',
  '.ivp': 'application/vnd.immervision-ivp',
  '.ivu': 'application/vnd.immervision-ivu',
  '.j': 'text/x-objective-j',
  '.jad': 'text/vnd.sun.j2me.app-descriptor',
  '.jade': 'text/x-jade',
  '.jam': 'application/vnd.jam',
  '.jar': 'application/java-archive',
  '.java': 'text/x-java-source',
  '.jbst': 'text/x-duel',
  '.jisp': 'application/vnd.jisp',
  '.jl': 'text/x-julia',
  '.jlt': 'application/vnd.hp-jlyt',
  '.jnlp': 'application/x-java-jnlp-file',
  '.joda': 'application/vnd.joost.joda-archive',
  '.jp2': 'image/jp2',
  '.jpe': 'image/jpeg',
  '.jpeg': 'image/jpeg',
  '.jpg': 'image/jpeg',
  '.jpgm': 'video/jpm',
  '.jpgv': 'video/jpeg',
  '.jpm': 'video/jpm',
  '.js': 'application/javascript',
  '.json': 'application/json',
  '.jsp': 'application/x-jsp',
  '.kar': 'audio/midi',
  '.karbon': 'application/vnd.kde.karbon',
  '.kfo': 'application/vnd.kde.kformula',
  '.kia': 'application/vnd.kidspiration',
  '.kid': 'application/x-genshi',
  '.kk': 'text/x-koka',
  '.kki': 'text/x-koka',
  '.kml': 'application/vnd.google-earth.kml+xml',
  '.kmz': 'application/vnd.google-earth.kmz',
  '.kne': 'application/vnd.kinar',
  '.knp': 'application/vnd.kinar',
  '.kon': 'application/vnd.kde.kontour',
  '.kpr': 'application/vnd.kde.kpresenter',
  '.kpt': 'application/vnd.kde.kpresenter',
  '.ksh': 'text/plain',
  '.ksp': 'application/vnd.kde.kspread',
  '.kt': 'text/x-kotlin',
  '.ktr': 'application/vnd.kahootz',
  '.ktx': 'image/ktx',
  '.ktz': 'application/vnd.kahootz',
  '.kwd': 'application/vnd.kde.kword',
  '.kwt': 'application/vnd.kde.kword',
  '.lasso': 'text/x-lasso',
  '.lasso[89]': 'text/x-lasso',
  '.lasxml': 'application/vnd.las.las+xml',
  '.latex': 'application/x-latex',
  '.lbd': 'application/vnd.llamagraphics.life-balance.desktop',
  '.lbe': 'application/vnd.llamagraphics.life-balance.exchange+xml',
  '.les': 'application/vnd.hhe.lesson-player',
  '.less': 'text/x-less',
  '.lgt': 'text/x-logtalk',
  '.lha': 'application/octet-stream',
  '.lhs': 'text/x-literate-haskell',
  '.lid': 'text/x-dylan-lid',
  '.link66': 'application/vnd.route66.link66+xml',
  '.lisp': 'text/x-common-lisp',
  '.list': 'text/plain',
  '.list3820': 'application/vnd.ibm.modcap',
  '.listafp': 'application/vnd.ibm.modcap',
  '.ll': 'text/x-llvm',
  '.log': 'text/plain',
  '.lostxml': 'application/lost+xml',
  '.lrf': 'application/octet-stream',
  '.lrm': 'application/vnd.ms-lrm',
  '.ls': 'text/x-livescript',
  '.lsp': 'text/x-newlisp',
  '.ltf': 'application/vnd.frogans.ltf',
  '.ltx': 'text/x-latex',
  '.lua': 'text/x-lua',
  '.lvp': 'audio/vnd.lucent.voice',
  '.lwp': 'application/vnd.lotus-wordpro',
  '.lzh': 'application/octet-stream',
  '.m': 'text/octave',
  '.m13': 'application/x-msmediaview',
  '.m14': 'application/x-msmediaview',
  '.m1v': 'video/mpeg',
  '.m21': 'application/mp21',
  '.m2a': 'audio/mpeg',
  '.m2v': 'video/mpeg',
  '.m3a': 'audio/mpeg',
  '.m3u': 'audio/x-mpegurl',
  '.m3u8': 'application/x-mpegurl',
  '.m4a': 'audio/mp4a-latm',
  '.m4p': 'audio/mp4a-latm',
  '.m4u': 'video/vnd.mpegurl',
  '.m4v': 'video/x-m4v',
  '.ma': 'application/mathematica',
  '.mac': 'image/x-macpaint',
  '.mads': 'application/mads+xml',
  '.mag': 'application/vnd.ecowin.chart',
  '.mak': 'text/x-makefile',
  '.maker': 'application/vnd.framemaker',
  '.mako': 'application/x-mako',
  '.man': 'text/troff',
  '.manifest': 'text/cache-manifest',
  '.maql': 'text/x-gooddata-maql',
  '.markdown': 'text/x-markdown',
  '.mathml': 'application/mathml+xml',
  '.mb': 'application/mathematica',
  '.mbk': 'application/vnd.mobius.mbk',
  '.mbox': 'application/mbox',
  '.mc': 'application/x-mason',
  '.mc1': 'application/vnd.medcalcdata',
  '.mcd': 'application/vnd.mcd',
  '.mcurl': 'text/vnd.curl.mcurl',
  '.md': 'text/x-minidsrc',
  '.mdb': 'application/x-msaccess',
  '.mdi': 'image/vnd.ms-modi',
  '.mdown': 'text/x-markdown',
  '.me': 'text/troff',
  '.mesh': 'model/mesh',
  '.meta4': 'application/metalink4+xml',
  '.mets': 'application/mets+xml',
  '.mfm': 'application/vnd.mfmp',
  '.mgp': 'application/vnd.osgeo.mapguide.package',
  '.mgz': 'application/vnd.proteus.magazine',
  '.mht': 'message/rfc822',
  '.mhtml': 'message/rfc822',
  '.mi': 'application/x-mason',
  '.mid': 'audio/midi',
  '.midi': 'audio/midi',
  '.mif': 'application/vnd.mif',
  '.mime': 'message/rfc822',
  '.mj2': 'video/mj2',
  '.mjp2': 'video/mj2',
  '.ml': 'text/x-ocaml',
  '.mli': 'text/x-ocaml',
  '.mll': 'text/x-ocaml',
  '.mlp': 'application/vnd.dolby.mlp',
  '.mly': 'text/x-ocaml',
  '.mm': 'text/x-objective-c++',
  '.mmd': 'application/vnd.chipnuts.karaoke-mmd',
  '.mmf': 'application/vnd.smaf',
  '.mmr': 'image/vnd.fujixerox.edmics-mmr',
  '.mny': 'application/x-msmoney',
  '.mo': 'text/x-modelica',
  '.mobi': 'application/x-mobipocket-ebook',
  '.mobipocket-ebook': 'application/octet-stream',
  '.mod': 'text/x-modula2',
  '.mods': 'application/mods+xml',
  '.monkey': 'text/x-monkey',
  '.moo': 'text/x-moocode',
  '.moon': 'text/x-moonscript',
  '.mov': 'video/quicktime',
  '.movie': 'video/x-sgi-movie',
  '.mp2': 'audio/mpeg',
  '.mp21': 'application/mp21',
  '.mp2a': 'audio/mpeg',
  '.mp3': 'audio/mpeg',
  '.mp4': 'video/mp4',
  '.mp4a': 'audio/mp4',
  '.mp4s': 'application/mp4',
  '.mp4v': 'video/mp4',
  '.mpa': 'video/mpeg',
  '.mpc': 'application/vnd.mophun.certificate',
  '.mpe': 'video/mpeg',
  '.mpeg': 'video/mpeg',
  '.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',
  '.mpy': 'application/vnd.ibm.minipay',
  '.mqy': 'application/vnd.mobius.mqy',
  '.mrc': 'application/marc',
  '.mrcx': 'application/marcxml+xml',
  '.ms': 'text/troff',
  '.mscml': 'application/mediaservercontrol+xml',
  '.mseed': 'application/vnd.fdsn.mseed',
  '.mseq': 'application/vnd.mseq',
  '.msf': 'application/vnd.epson.msf',
  '.msh': 'model/mesh',
  '.msi': 'application/x-msdownload',
  '.msl': 'application/vnd.mobius.msl',
  '.msty': 'application/vnd.muvee.style',
  '.mts': 'model/vnd.mts',
  '.mus': 'application/vnd.musician',
  '.musicxml': 'application/vnd.recordare.musicxml+xml',
  '.mvb': 'application/x-msmediaview',
  '.mwf': 'application/vnd.mfer',
  '.mxf': 'application/mxf',
  '.mxl': 'application/vnd.recordare.musicxml',
  '.mxml': 'application/xv+xml',
  '.mxs': 'application/vnd.triscape.mxs',
  '.mxu': 'video/vnd.mpegurl',
  '.myt': 'application/x-myghty',
  '.n': 'text/x-nemerle',
  '.n-gage': 'application/vnd.nokia.n-gage.symbian.install',
  '.n3': 'text/n3',
  '.nb': 'application/mathematica',
  '.nbp': 'application/vnd.wolfram.player',
  '.nc': 'application/x-netcdf',
  '.ncx': 'application/x-dtbncx+xml',
  '.ngdat': 'application/vnd.nokia.n-gage.data',
  '.nim': 'text/x-nimrod',
  '.nimrod': 'text/x-nimrod',
  '.nl': 'text/x-newlisp',
  '.nlu': 'application/vnd.neurolanguage.nlu',
  '.nml': 'application/vnd.enliven',
  '.nnd': 'application/vnd.noblenet-directory',
  '.nns': 'application/vnd.noblenet-sealer',
  '.nnw': 'application/vnd.noblenet-web',
  '.npx': 'image/vnd.net-fpx',
  '.ns2': 'text/x-newspeak',
  '.nsf': 'application/vnd.lotus-notes',
  '.nsh': 'text/x-nsis',
  '.nsi': 'text/x-nsis',
  '.nws': 'message/rfc822',
  '.o': 'application/octet-stream',
  '.oa2': 'application/vnd.fujitsu.oasys2',
  '.oa3': 'application/vnd.fujitsu.oasys3',
  '.oas': 'application/vnd.fujitsu.oasys',
  '.obd': 'application/x-msbinder',
  '.obj': 'application/octet-stream',
  '.objdump': 'text/x-objdump',
  '.oda': 'application/oda',
  '.odb': 'application/vnd.oasis.opendocument.database',
  '.odc': 'application/vnd.oasis.opendocument.chart',
  '.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',
  '.oga': 'audio/ogg',
  '.ogg': 'audio/ogg',
  '.ogv': 'video/ogg',
  '.ogx': 'application/ogg',
  '.onepkg': 'application/onenote',
  '.onetmp': 'application/onenote',
  '.onetoc': 'application/onenote',
  '.onetoc2': 'application/onenote',
  '.ooc': 'text/x-ooc',
  '.opa': 'text/x-opa',
  '.opf': 'application/oebps-package+xml',
  '.oprc': 'application/vnd.palm',
  '.org': 'application/vnd.lotus-organizer',
  '.osf': 'application/vnd.yamaha.openscoreformat',
  '.osfpvg': 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
  '.otc': 'application/vnd.oasis.opendocument.chart-template',
  '.otf': 'application/x-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',
  '.oxt': 'application/vnd.openofficeorg.extension',
  '.p': 'text/x-pascal',
  '.p10': 'application/pkcs10',
  '.p12': 'application/x-pkcs12',
  '.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',
  '.pas': 'text/x-pascal',
  '.patch': 'text/x-diff',
  '.paw': 'application/vnd.pawaafile',
  '.pbd': 'application/vnd.powerbuilder6',
  '.pbm': 'image/x-portable-bitmap',
  '.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',
  '.pdf': 'application/pdf',
  '.pfa': 'application/x-font-type1',
  '.pfb': 'application/x-font-type1',
  '.pfm': 'application/x-font-type1',
  '.pfr': 'application/font-tdpfr',
  '.pfx': 'application/x-pkcs12',
  '.pgm': 'image/x-portable-graymap',
  '.pgn': 'application/x-chess-pgn',
  '.pgp': 'application/pgp-encrypted',
  '.php': 'text/x-php',
  '.php[345]': 'text/x-php',
  '.phtml': 'application/x-php',
  '.pic': 'image/x-pict',
  '.pict': 'image/pict',
  '.pkg': 'application/octet-stream',
  '.pki': 'application/pkixcmp',
  '.pkipath': 'application/pkix-pkipath',
  '.pl': 'text/plain',
  '.plb': 'application/vnd.3gpp.pic-bw-large',
  '.plc': 'application/vnd.mobius.plc',
  '.plf': 'application/vnd.pocketlearn',
  '.plot': 'text/x-gnuplot',
  '.pls': 'application/pls+xml',
  '.plt': 'text/x-gnuplot',
  '.pm': 'text/x-perl',
  '.pml': 'application/vnd.ctc-posml',
  '.png': 'image/png',
  '.pnm': 'image/x-portable-anymap',
  '.pnt': 'image/x-macpaint',
  '.pntg': 'image/x-macpaint',
  '.po': 'application/x-gettext',
  '.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': 'text/x-povray',
  '.ppa': 'application/vnd.ms-powerpoint',
  '.ppam': 'application/vnd.ms-powerpoint.addin.macroenabled.12',
  '.ppd': 'application/vnd.cups-ppd',
  '.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',
  '.pqa': 'application/vnd.palm',
  '.prc': 'application/x-mobipocket-ebook',
  '.pre': 'application/vnd.lotus-freelance',
  '.prf': 'application/pics-rules',
  '.pro': 'text/idl',
  '.prolog': 'text/x-prolog',
  '.properties': 'text/x-properties',
  '.ps': 'application/postscript',
  '.ps1': 'text/x-powershell',
  '.psb': 'application/vnd.3gpp.pic-bw-small',
  '.psd': 'image/vnd.adobe.photoshop',
  '.psf': 'application/x-font-linux-psf',
  '.pskcxml': 'application/pskc+xml',
  '.ptid': 'application/vnd.pvi.ptid1',
  '.pub': 'application/x-mspublisher',
  '.pvb': 'application/vnd.3gpp.pic-bw-var',
  '.pwn': 'application/vnd.3m.post-it-notes',
  '.pwz': 'application/vnd.ms-powerpoint',
  '.pxd': 'text/x-cython',
  '.pxi': 'text/x-cython',
  '.py': 'text/x-python',
  '.py3tb': 'text/x-python3-traceback',
  '.pya': 'audio/vnd.ms-playready.media.pya',
  '.pyc': 'application/x-python-code',
  '.pyo': 'application/x-python-code',
  '.pypylog': 'application/x-pypylog',
  '.pytb': 'text/x-python-traceback',
  '.pyv': 'video/vnd.ms-playready.media.pyv',
  '.pyw': 'text/x-python',
  '.pyx': 'text/x-cython',
  '.qam': 'application/vnd.epson.quickanime',
  '.qbo': 'application/vnd.intu.qbo',
  '.qfx': 'application/vnd.intu.qfx',
  '.qml': 'application/x-qml',
  '.qps': 'application/vnd.publishare-delta-tree',
  '.qt': 'video/quicktime',
  '.qti': 'image/x-quicktime',
  '.qtif': 'image/x-quicktime',
  '.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/x-rebol',
  '.r3': 'text/x-rebol',
  '.ra': 'audio/x-pn-realaudio',
  '.rake': 'text/x-ruby',
  '.ram': 'audio/x-pn-realaudio',
  '.rar': 'application/x-rar-compressed',
  '.ras': 'image/x-cmu-raster',
  '.rb': 'text/x-ruby',
  '.rbw': 'text/x-ruby',
  '.rbx': 'text/x-ruby',
  '.rc': 'text/x-stsrc',
  '.rcprofile': 'application/vnd.ipunplugged.rcprofile',
  '.rdf': 'application/rdf+xml',
  '.rdz': 'application/vnd.data-vision.rdz',
  '.reg': 'text/x-windows-registry',
  '.rep': 'application/vnd.businessobjects',
  '.res': 'application/x-dtbresource+xml',
  '.rest': 'text/x-rst',
  '.rgb': 'image/x-rgb',
  '.rhtml': 'text/html+ruby',
  '.rif': 'application/reginfo+xml',
  '.rip': 'audio/vnd.rip',
  '.rkt': 'text/x-racket',
  '.rktl': 'text/x-racket',
  '.rl': 'application/resource-lists+xml',
  '.rlc': 'image/vnd.fujixerox.edmics-rlc',
  '.rld': 'application/resource-lists-diff+xml',
  '.rm': 'application/vnd.rn-realmedia',
  '.rmi': 'audio/midi',
  '.rmp': 'audio/x-pn-realaudio-plugin',
  '.rms': 'application/vnd.jcp.javame.midlet-rms',
  '.rnc': 'application/relax-ng-compact-syntax',
  '.robot': 'text/x-robotframework',
  '.roff': 'text/troff',
  '.rp9': 'application/vnd.cloanto.rp9',
  '.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',
  '.rss': 'application/rss+xml',
  '.rst': 'text/x-rst',
  '.rtf': 'application/rtf',
  '.rtx': 'text/richtext',
  '.s': 'text/x-asm',
  '.saf': 'application/vnd.yamaha.smaf-audio',
  '.sage': 'text/x-python',
  '.sass': 'text/x-sass',
  '.sbml': 'application/sbml+xml',
  '.sc': 'application/vnd.ibm.secure-container',
  '.scala': 'text/x-scala',
  '.scaml': 'text/x-scaml',
  '.scd': 'application/x-msschedule',
  '.sce': 'text/scilab',
  '.sci': 'text/scilab',
  '.scm': 'application/vnd.lotus-screencam',
  '.scq': 'application/scvp-cv-request',
  '.scs': 'application/scvp-cv-response',
  '.scss': 'text/x-scss',
  '.scurl': 'text/vnd.curl.scurl',
  '.sda': 'application/vnd.stardivision.draw',
  '.sdc': 'application/vnd.stardivision.calc',
  '.sdd': 'application/vnd.stardivision.impress',
  '.sdkd': 'application/vnd.solent.sdkm+xml',
  '.sdkm': 'application/vnd.solent.sdkm+xml',
  '.sdp': 'application/sdp',
  '.sdw': 'application/vnd.stardivision.writer',
  '.see': 'application/vnd.seemail',
  '.seed': 'application/vnd.fdsn.seed',
  '.sema': 'application/vnd.sema',
  '.semd': 'application/vnd.semd',
  '.semf': 'application/vnd.semf',
  '.ser': 'application/java-serialized-object',
  '.setpay': 'application/set-payment-initiation',
  '.setreg': 'application/set-registration-initiation',
  '.sfd-hdstx': 'application/vnd.hydrostatix.sof-data',
  '.sfs': 'application/vnd.spotfire.sfs',
  '.sgl': 'application/vnd.stardivision.writer-global',
  '.sgm': 'text/sgml',
  '.sgml': 'text/sgml',
  '.sh': 'application/x-sh',
  '.sh-session': 'application/x-shell-session',
  '.shar': 'application/x-shar',
  '.shell-session': 'application/x-sh-session',
  '.shf': 'application/shf+xml',
  '.sig': 'application/pgp-signature',
  '.silo': 'model/mesh',
  '.sis': 'application/vnd.symbian.install',
  '.sisx': 'application/vnd.symbian.install',
  '.sit': 'application/x-stuffit',
  '.sitx': 'application/x-stuffitx',
  '.skd': 'application/vnd.koan',
  '.skm': 'application/vnd.koan',
  '.skp': 'application/vnd.koan',
  '.skt': 'application/vnd.koan',
  '.sldm': 'application/vnd.ms-powerpoint.slide.macroenabled.12',
  '.sldx': 'application/vnd.openxmlformats-officedocument.presentationml.slide',
  '.slt': 'application/vnd.epson.salt',
  '.sm': 'application/vnd.stepmania.stepchart',
  '.smali': 'text/smali',
  '.smf': 'application/vnd.stardivision.math',
  '.smi': 'application/smil+xml',
  '.smil': 'application/smil+xml',
  '.sml': 'text/x-standardml',
  '.snd': 'audio/basic',
  '.snf': 'application/x-font-snf',
  '.snobol': 'text/x-snobol',
  '.so': 'application/octet-stream',
  '.sp': 'text/x-sourcepawn',
  '.spc': 'application/x-pkcs7-certificates',
  '.spec': 'text/x-rpm-spec',
  '.spf': 'application/vnd.yamaha.smaf-phrase',
  '.spl': 'application/x-futuresplash',
  '.spot': 'text/vnd.in3d.spot',
  '.spp': 'application/scvp-vp-response',
  '.spq': 'application/scvp-vp-request',
  '.spt': 'application/x-cheetah',
  '.spx': 'audio/ogg',
  '.sql': 'text/x-sql',
  '.sqlite3-console': 'text/x-sqlite3-console',
  '.src': 'application/x-wais-source',
  '.sru': 'application/sru+xml',
  '.srx': 'application/sparql-results+xml',
  '.ss': 'text/x-scheme',
  '.sse': 'application/vnd.kodak-descriptor',
  '.ssf': 'application/vnd.epson.ssf',
  '.ssml': 'application/ssml+xml',
  '.ssp': 'application/x-ssp',
  '.st': 'application/vnd.sailingtracker.track',
  '.stc': 'application/vnd.sun.xml.calc.template',
  '.std': 'application/vnd.sun.xml.draw.template',
  '.stf': 'application/vnd.wt.stf',
  '.sti': 'application/vnd.sun.xml.impress.template',
  '.stk': 'application/hyperstudio',
  '.stl': 'application/vnd.ms-pki.stl',
  '.str': 'application/vnd.pg.format',
  '.stw': 'application/vnd.sun.xml.writer.template',
  '.sub': 'image/vnd.dvb.subtitle',
  '.sus': 'application/vnd.sus-calendar',
  '.susp': 'application/vnd.sus-calendar',
  '.sv': 'text/x-systemverilog',
  '.sv4cpio': 'application/x-sv4cpio',
  '.sv4crc': 'application/x-sv4crc',
  '.svc': 'application/vnd.dvb.service',
  '.svd': 'application/vnd.svd',
  '.svg': 'image/svg+xml',
  '.svgz': 'image/svg+xml',
  '.svh': 'text/x-systemverilog',
  '.swa': 'application/x-director',
  '.swf': 'application/x-shockwave-flash',
  '.swi': 'application/vnd.aristanetworks.swi',
  '.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',
  '.sxm': 'application/vnd.sun.xml.math',
  '.sxw': 'application/vnd.sun.xml.writer',
  '.t': 'text/troff',
  '.tac': 'text/x-python',
  '.tao': 'application/vnd.tao.intent-module-archive',
  '.tar': 'application/x-tar',
  '.tcap': 'application/vnd.3gpp2.tcap',
  '.tcl': 'application/x-tcl',
  '.tcsh': 'application/x-csh',
  '.tea': 'text/x-tea',
  '.teacher': 'application/vnd.smart.teacher',
  '.tei': 'application/tei+xml',
  '.teicorpus': 'application/tei+xml',
  '.tex': 'application/x-tex',
  '.texi': 'application/x-texinfo',
  '.texinfo': 'application/x-texinfo',
  '.text': 'text/plain',
  '.tfi': 'application/thraud+xml',
  '.tfm': 'application/x-tex-tfm',
  '.thmx': 'application/vnd.ms-officetheme',
  '.tif': 'image/tiff',
  '.tiff': 'image/tiff',
  '.tmo': 'application/vnd.tmobile-livetv',
  '.tmpl': 'application/x-cheetah',
  '.toc': 'text/x-tex',
  '.torrent': 'application/x-bittorrent',
  '.tpl': 'application/vnd.groove-tool-template',
  '.tpt': 'application/vnd.trid.tpt',
  '.tr': 'text/troff',
  '.tra': 'application/vnd.trueapp',
  '.trm': 'application/x-msterminal',
  '.ts': 'video/mp2t',
  '.tsd': 'application/timestamped-data',
  '.tst': 'text/scilab',
  '.tsv': 'text/tab-separated-values',
  '.ttc': 'application/x-font-ttf',
  '.ttf': 'application/x-font-ttf',
  '.ttl': 'text/turtle',
  '.twd': 'application/vnd.simtech-mindmapper',
  '.twds': 'application/vnd.simtech-mindmapper',
  '.txd': 'application/vnd.genomatix.tuxedo',
  '.txf': 'application/vnd.mobius.txf',
  '.txt': 'text/plain',
  '.u': 'application/x-urbiscript',
  '.u32': 'application/x-authorware-bin',
  '.udeb': 'application/x-debian-package',
  '.ufd': 'application/vnd.ufdl',
  '.ufdl': 'application/vnd.ufdl',
  '.umj': 'application/vnd.umajin',
  '.unityweb': 'application/vnd.unity',
  '.uoml': 'application/vnd.uoml+xml',
  '.uri': 'text/uri-list',
  '.uris': 'text/uri-list',
  '.urls': 'text/uri-list',
  '.ustar': 'application/x-ustar',
  '.utz': 'application/vnd.uiq.theme',
  '.uu': '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.uvvu.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.uvvu.mp4',
  '.uvvv': 'video/vnd.dece.video',
  '.uvvx': 'application/vnd.dece.unspecified',
  '.uvx': 'application/vnd.dece.unspecified',
  '.v': 'text/x-verilog',
  '.vala': 'text/x-vala',
  '.vapi': 'text/x-vala',
  '.vark': 'text/x-gosu',
  '.vb': 'text/vbscript',
  '.vcd': 'application/x-cdlink',
  '.vcf': 'text/x-vcard',
  '.vcg': 'application/vnd.groove-vcard',
  '.vcs': 'text/x-vcalendar',
  '.vcx': 'application/vnd.vcx',
  '.vert': 'text/x-glslsrc',
  '.vhd': 'text/x-vhdl',
  '.vhdl': 'text/x-vhdl',
  '.vim': 'text/x-vim',
  '.vis': 'application/vnd.visionary',
  '.viv': 'video/vnd.vivo',
  '.vor': 'application/vnd.stardivision.writer',
  '.vox': 'application/x-authorware-bin',
  '.vrml': 'model/vrml',
  '.vsd': 'application/vnd.visio',
  '.vsf': 'application/vnd.vsf',
  '.vss': 'application/vnd.visio',
  '.vst': 'application/vnd.visio',
  '.vsw': 'application/vnd.visio',
  '.vtu': 'model/vnd.vtu',
  '.vxml': 'application/voicexml+xml',
  '.w3d': 'application/x-director',
  '.wad': 'application/x-doom',
  '.wav': 'audio/x-wav',
  '.wax': 'audio/x-ms-wax',
  '.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',
  '.weba': 'audio/webm',
  '.webm': 'video/webm',
  '.webp': 'image/webp',
  '.weechatlog': 'text/x-irclog',
  '.wg': 'application/vnd.pmi.widget',
  '.wgt': 'application/widget',
  '.wiz': 'application/msword',
  '.wks': 'application/vnd.ms-works',
  '.wlua': 'text/x-lua',
  '.wm': 'video/x-ms-wm',
  '.wma': 'audio/x-ms-wma',
  '.wmd': 'application/x-ms-wmd',
  '.wmf': 'application/x-msmetafile',
  '.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': 'application/x-font-woff',
  '.wpd': 'application/vnd.wordperfect',
  '.wpl': 'application/vnd.ms-wpl',
  '.wps': 'application/vnd.ms-works',
  '.wqd': 'application/vnd.wqd',
  '.wri': 'application/x-mswrite',
  '.wrl': 'model/vrml',
  '.wsdl': 'application/wsdl+xml',
  '.wspolicy': 'application/wspolicy+xml',
  '.wtb': 'application/vnd.webturbo',
  '.wvx': 'video/x-ms-wvx',
  '.x': 'text/x-logos',
  '.x32': 'application/x-authorware-bin',
  '.x3d': 'application/vnd.hzn-3d-crossword',
  '.xap': 'application/x-silverlight-app',
  '.xar': 'application/vnd.xara',
  '.xbap': 'application/x-ms-xbap',
  '.xbd': 'application/vnd.fujixerox.docuworks.binder',
  '.xbm': 'image/x-xbitmap',
  '.xdf': 'application/xcap-diff+xml',
  '.xdm': 'application/vnd.syncml.dm+xml',
  '.xdp': 'application/vnd.adobe.xdp+xml',
  '.xdssc': 'application/dssc+xml',
  '.xdw': 'application/vnd.fujixerox.docuworks',
  '.xenc': 'application/xenc+xml',
  '.xer': 'application/patch-ops-error+xml',
  '.xfdf': 'application/vnd.adobe.xfdf',
  '.xfdl': 'application/vnd.xfdl',
  '.xht': 'application/xhtml+xml',
  '.xhtml': 'application/xhtml+xml',
  '.xhvml': 'application/xv+xml',
  '.xi': 'text/x-logos',
  '.xif': 'image/vnd.xiff',
  '.xla': 'application/vnd.ms-excel',
  '.xlam': 'application/vnd.ms-excel.addin.macroenabled.12',
  '.xlb': 'application/vnd.ms-excel',
  '.xlc': 'application/vnd.ms-excel',
  '.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': 'text/x-logos',
  '.xmi': 'text/x-logos',
  '.xml': 'application/xml',
  '.xo': 'application/vnd.olpc-sugar',
  '.xop': 'application/xop+xml',
  '.xpdl': 'application/xml',
  '.xpi': 'application/x-xpinstall',
  '.xpl': 'application/xsl+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': 'application/xquery',
  '.xql': 'application/xquery',
  '.xqm': 'application/xquery',
  '.xquery': 'application/xquery',
  '.xqy': 'application/xquery',
  '.xsd': 'application/xml',
  '.xsl': 'application/xml',
  '.xslt': 'application/xslt+xml',
  '.xsm': 'application/vnd.syncml+xml',
  '.xspf': 'application/xspf+xml',
  '.xtend': 'text/x-xtend',
  '.xul': 'application/vnd.mozilla.xul+xml',
  '.xvm': 'application/xv+xml',
  '.xvml': 'application/xv+xml',
  '.xwd': 'image/x-xwindowdump',
  '.xyz': 'chemical/x-xyz',
  '.yaml': 'text/x-yaml',
  '.yang': 'application/yang',
  '.yin': 'application/yin+xml',
  '.yml': 'text/x-yaml',
  '.zaz': 'application/vnd.zzazz.deck+xml',
  '.zip': 'application/zip',
  '.zir': 'application/vnd.zul',
  '.zirz': 'application/vnd.zul',
  '.zmm': 'application/vnd.handheld-entertainment+xml'}
]


def get_mimetypes_db(extra_types=None):
    import mimetypes
    types_map = TYPES_MAP
    if extra_types:
        types_map = TYPES_MAP[::]  # copy the initial version for extending
        types_map[1].update(extra_types)
    db = mimetypes.MimeTypes()
    db.types_map = types_map
    db.encodings_map.update(DEFAULTS['encodings_map'])
    db.suffix_map.update(DEFAULTS['suffix_map'])
    return db