diff --git a/node_modules/errorhandler/.npmignore b/node_modules/errorhandler/.npmignore
deleted file mode 100755
index cd39b77..0000000
--- a/node_modules/errorhandler/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-coverage/
-test/
-.travis.yml
diff --git a/node_modules/errorhandler/History.md b/node_modules/errorhandler/History.md
deleted file mode 100755
index 44a060a..0000000
--- a/node_modules/errorhandler/History.md
+++ /dev/null
@@ -1,32 +0,0 @@
-1.1.1 / 2014-06-20
-==================
-
- * deps: accepts@~1.0.4
- - use `mime-types`
-
-1.1.0 / 2014-06-16
-==================
-
- * Display error on console formatted like `throw`
- * Escape HTML with `escape-html` module
- * Escape HTML in stack trace
- * Escape HTML in title
- * Fix up edge cases with error sent in response
- * Set `X-Content-Type-Options: nosniff` header
- * Use accepts for negotiation
-
-1.0.2 / 2014-06-05
-==================
-
- * Pass on errors from reading error files
-
-1.0.1 / 2014-04-29
-==================
-
- * Clean up error CSS
- * Do not respond after headers sent
-
-1.0.0 / 2014-03-03
-==================
-
- * Genesis from `connect`
diff --git a/node_modules/errorhandler/README.md b/node_modules/errorhandler/README.md
old mode 100755
new mode 100644
index ca10d41..f0b03c0
--- a/node_modules/errorhandler/README.md
+++ b/node_modules/errorhandler/README.md
@@ -1,27 +1,78 @@
# errorhandler
-[![NPM version](https://badge.fury.io/js/errorhandler.svg)](http://badge.fury.io/js/errorhandler)
-[![Build Status](https://travis-ci.org/expressjs/errorhandler.svg?branch=master)](https://travis-ci.org/expressjs/errorhandler)
-[![Coverage Status](https://img.shields.io/coveralls/expressjs/errorhandler.svg?branch=master)](https://coveralls.io/r/expressjs/errorhandler)
+[![NPM Version][npm-version-image]][npm-url]
+[![NPM Downloads][npm-downloads-image]][npm-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
-Previously `connect.errorHandler()`.
+Development-only error handler middleware.
+
+This middleware is only intended to be used in a development environment, as
+the _full error stack traces and internal details of any object passed to this
+module_ will be sent back to the client when an error occurs.
+
+When an object is provided to Express as an error, this module will display
+as much about this object as possible, and will do so by using content negotiation
+for the response between HTML, JSON, and plain text.
+
+ * When the object is a standard `Error` object, the string provided by the
+ `stack` property will be returned in HTML/text responses.
+ * When the object is a non-`Error` object, the result of
+ [util.inspect](https://nodejs.org/api/util.html#util_util_inspect_object_options)
+ will be returned in HTML/text responses.
+ * For JSON responses, the result will be an object with all enumerable properties
+ from the object in the response.
## Install
+This is a [Node.js](https://nodejs.org/en/) module available through the
+[npm registry](https://www.npmjs.com/). Installation is done using the
+[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
+
```sh
$ npm install errorhandler
```
## API
-### errorhandler()
+
+
+```js
+var errorhandler = require('errorhandler')
+```
+
+### errorhandler(options)
Create new middleware to handle errors and respond with content negotiation.
-This middleware is only intended to be used in a development environment, as
-the full error stack traces will be send back to the client when an error
-occurs.
-## Example
+#### Options
+
+Error handler accepts these properties in the options object.
+
+##### log
+
+Provide a function to be called with the error and a string representation of
+the error. Can be used to write the error to any desired location, or set to
+`false` to only send the error back in the response. Called as
+`log(err, str, req, res)` where `err` is the `Error` object, `str` is a string
+representation of the error, `req` is the request object and `res` is the
+response object (note, this function is invoked _after_ the response has been
+written).
+
+The default value for this option is `true` unless `process.env.NODE_ENV === 'test'`.
+
+Possible values:
+
+ * `true`: Log errors using `console.error(str)`.
+ * `false`: Only send the error back in the response.
+ * A function: pass the error to a function for handling.
+
+## Examples
+
+### Simple example
+
+Basic example of adding this middleware as the error handler only in development
+with `connect` (`express` also can be used in this example).
```js
var connect = require('connect')
@@ -30,30 +81,48 @@ var errorhandler = require('errorhandler')
var app = connect()
if (process.env.NODE_ENV === 'development') {
+ // only use in development
app.use(errorhandler())
}
```
+### Custom output location
+
+Sometimes you may want to output the errors to a different location than STDERR
+during development, like a system notification, for example.
+
+
+
+```js
+var connect = require('connect')
+var errorhandler = require('errorhandler')
+var notifier = require('node-notifier')
+
+var app = connect()
+
+if (process.env.NODE_ENV === 'development') {
+ // only use in development
+ app.use(errorhandler({ log: errorNotification }))
+}
+
+function errorNotification (err, str, req) {
+ var title = 'Error in ' + req.method + ' ' + req.url
+
+ notifier.notify({
+ title: title,
+ message: str
+ })
+}
+```
+
## License
-The MIT License (MIT)
+[MIT](LICENSE)
-Copyright (c) 2014 Jonathan Ong me@jongleberry.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/errorhandler/master
+[coveralls-url]: https://coveralls.io/r/expressjs/errorhandler?branch=master
+[npm-downloads-image]: https://badgen.net/npm/dm/errorhandler
+[npm-url]: https://npmjs.org/package/errorhandler
+[npm-version-image]: https://badgen.net/npm/v/errorhandler
+[travis-image]: https://badgen.net/travis/expressjs/errorhandler/master
+[travis-url]: https://travis-ci.org/expressjs/errorhandler
diff --git a/node_modules/errorhandler/index.js b/node_modules/errorhandler/index.js
old mode 100755
new mode 100644
index 16e044f..333a02e
--- a/node_modules/errorhandler/index.js
+++ b/node_modules/errorhandler/index.js
@@ -2,16 +2,40 @@
* errorhandler
* Copyright(c) 2010 Sencha Inc.
* Copyright(c) 2011 TJ Holowaychuk
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*/
+'use strict'
+
/**
* Module dependencies.
+ * @private
*/
var accepts = require('accepts')
-var escapeHtml = require('escape-html');
-var fs = require('fs');
+var escapeHtml = require('escape-html')
+var fs = require('fs')
+var path = require('path')
+var util = require('util')
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var DOUBLE_SPACE_REGEXP = /\x20{2}/g
+var NEW_LINE_REGEXP = /\n/g
+var STYLESHEET = fs.readFileSync(path.join(__dirname, '/public/style.css'), 'utf8')
+var TEMPLATE = fs.readFileSync(path.join(__dirname, '/public/error.html'), 'utf8')
+var inspect = util.inspect
+var toString = Object.prototype.toString
+
+/* istanbul ignore next */
+var defer = typeof setImmediate === 'function'
+ ? setImmediate
+ : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }
/**
* Error handler:
@@ -38,11 +62,33 @@ var fs = require('fs');
* @api public
*/
-exports = module.exports = function errorHandler(){
+exports = module.exports = function errorHandler (options) {
// get environment
var env = process.env.NODE_ENV || 'development'
- return function errorHandler(err, req, res, next){
+ // get options
+ var opts = options || {}
+
+ // get log option
+ var log = opts.log === undefined
+ ? env !== 'test'
+ : opts.log
+
+ if (typeof log !== 'function' && typeof log !== 'boolean') {
+ throw new TypeError('option log must be function or boolean')
+ }
+
+ // default logging using console.error
+ if (log === true) {
+ log = logerror
+ }
+
+ return function errorHandler (err, req, res, next) {
+ // respect err.statusCode
+ if (err.statusCode) {
+ res.statusCode = err.statusCode
+ }
+
// respect err.status
if (err.status) {
res.statusCode = err.status
@@ -53,9 +99,10 @@ exports = module.exports = function errorHandler(){
res.statusCode = 500
}
- // write error to console
- if (env !== 'test') {
- console.error(err.stack || String(err))
+ // log the error
+ var str = stringify(err)
+ if (log) {
+ defer(log, err, str, req, res)
}
// cannot actually respond
@@ -65,47 +112,87 @@ exports = module.exports = function errorHandler(){
// negotiate
var accept = accepts(req)
- var type = accept.types('html', 'json', 'text')
+ var type = accept.type('html', 'json', 'text')
// Security header for content sniffing
res.setHeader('X-Content-Type-Options', 'nosniff')
// html
if (type === 'html') {
- fs.readFile(__dirname + '/public/style.css', 'utf8', function(e, style){
- if (e) return next(e);
- fs.readFile(__dirname + '/public/error.html', 'utf8', function(e, html){
- if (e) return next(e);
- var stack = (err.stack || '')
- .split('\n').slice(1)
- .map(function(v){ return '
' + escapeHtml(v).replace(/ /g, ' ') + ''; }).join('');
- html = html
- .replace('{style}', style)
- .replace('{stack}', stack)
- .replace('{title}', escapeHtml(exports.title))
- .replace('{statusCode}', res.statusCode)
- .replace(/\{error\}/g, escapeHtml(String(err)).replace(/ /g, ' ').replace(/\n/g, '
'));
- res.setHeader('Content-Type', 'text/html; charset=utf-8');
- res.end(html);
- });
- });
+ var isInspect = !err.stack && String(err) === toString.call(err)
+ var errorHtml = !isInspect
+ ? escapeHtmlBlock(str.split('\n', 1)[0] || 'Error')
+ : 'Error'
+ var stack = !isInspect
+ ? String(str).split('\n').slice(1)
+ : [str]
+ var stackHtml = stack
+ .map(function (v) { return '' + escapeHtmlBlock(v) + '' })
+ .join('')
+ var body = TEMPLATE
+ .replace('{style}', STYLESHEET)
+ .replace('{stack}', stackHtml)
+ .replace('{title}', escapeHtml(exports.title))
+ .replace('{statusCode}', res.statusCode)
+ .replace(/\{error\}/g, errorHtml)
+ res.setHeader('Content-Type', 'text/html; charset=utf-8')
+ res.end(body)
// json
} else if (type === 'json') {
- var error = { message: err.message, stack: err.stack };
- for (var prop in err) error[prop] = err[prop];
- var json = JSON.stringify({ error: error });
- res.setHeader('Content-Type', 'application/json');
- res.end(json);
+ var error = { message: err.message, stack: err.stack }
+ for (var prop in err) error[prop] = err[prop]
+ var json = JSON.stringify({ error: error }, null, 2)
+ res.setHeader('Content-Type', 'application/json; charset=utf-8')
+ res.end(json)
// plain text
} else {
- res.setHeader('Content-Type', 'text/plain');
- res.end(err.stack || String(err));
+ res.setHeader('Content-Type', 'text/plain; charset=utf-8')
+ res.end(str)
}
- };
-};
+ }
+}
/**
* Template title, framework authors may override this value.
*/
-exports.title = 'Connect';
+exports.title = 'Connect'
+
+/**
+ * Escape a block of HTML, preserving whitespace.
+ * @api private
+ */
+
+function escapeHtmlBlock (str) {
+ return escapeHtml(str)
+ .replace(DOUBLE_SPACE_REGEXP, ' ')
+ .replace(NEW_LINE_REGEXP, '
')
+}
+
+/**
+ * Stringify a value.
+ * @api private
+ */
+
+function stringify (val) {
+ var stack = val.stack
+
+ if (stack) {
+ return String(stack)
+ }
+
+ var str = String(val)
+
+ return str === toString.call(val)
+ ? inspect(val)
+ : str
+}
+
+/**
+ * Log error to console.
+ * @api private
+ */
+
+function logerror (err, str) {
+ console.error(str || err.stack)
+}
diff --git a/node_modules/errorhandler/node_modules/accepts/.npmignore b/node_modules/errorhandler/node_modules/accepts/.npmignore
deleted file mode 100755
index cd39b77..0000000
--- a/node_modules/errorhandler/node_modules/accepts/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-coverage/
-test/
-.travis.yml
diff --git a/node_modules/errorhandler/node_modules/accepts/History.md b/node_modules/errorhandler/node_modules/accepts/History.md
deleted file mode 100755
index ef8b48d..0000000
--- a/node_modules/errorhandler/node_modules/accepts/History.md
+++ /dev/null
@@ -1,38 +0,0 @@
-
-1.0.6 / 2014-06-24
-==================
-
- * deps: negotiator@0.4.7
-
-1.0.5 / 2014-06-20
-==================
-
- * fix crash when unknown extension given
-
-1.0.4 / 2014-06-19
-==================
-
- * use `mime-types`
-
-1.0.3 / 2014-06-11
-==================
-
- * deps: negotiator@0.4.6
- - Order by specificity when quality is the same
-
-1.0.2 / 2014-05-29
-==================
-
- * Fix interpretation when header not in request
- * deps: pin negotiator@0.4.5
-
-1.0.1 / 2014-01-18
-==================
-
- * Identity encoding isn't always acceptable
- * deps: negotiator@~0.4.0
-
-1.0.0 / 2013-12-27
-==================
-
- * Genesis
diff --git a/node_modules/errorhandler/node_modules/accepts/README.md b/node_modules/errorhandler/node_modules/accepts/README.md
deleted file mode 100755
index f65596a..0000000
--- a/node_modules/errorhandler/node_modules/accepts/README.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Accepts
-
-[![NPM version](https://badge.fury.io/js/accepts.svg)](http://badge.fury.io/js/accepts)
-[![Build Status](https://travis-ci.org/expressjs/accepts.svg?branch=master)](https://travis-ci.org/expressjs/accepts)
-[![Coverage Status](https://img.shields.io/coveralls/expressjs/accepts.svg?branch=master)](https://coveralls.io/r/expressjs/accepts)
-
-Higher level content negotation based on [negotiator](https://github.com/federomero/negotiator). Extracted from [koa](https://github.com/koajs/koa) for general use.
-
-In addition to negotatior, it allows:
-
-- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.
-- Allows type shorthands such as `json`.
-- Returns `false` when no types match
-- Treats non-existent headers as `*`
-
-## API
-
-### var accept = new Accepts(req)
-
-```js
-var accepts = require('accepts')
-
-http.createServer(function (req, res) {
- var accept = accepts(req)
-})
-```
-
-### accept\[property\]\(\)
-
-Returns all the explicitly accepted content property as an array in descending priority.
-
-- `accept.types()`
-- `accept.encodings()`
-- `accept.charsets()`
-- `accept.languages()`
-
-They are also aliased in singular form such as `accept.type()`. `accept.languages()` is also aliased as `accept.langs()`, etc.
-
-Note: you should almost never do this in a real app as it defeats the purpose of content negotiation.
-
-Example:
-
-```js
-// in Google Chrome
-var encodings = accept.encodings() // -> ['sdch', 'gzip', 'deflate']
-```
-
-Since you probably don't support `sdch`, you should just supply the encodings you support:
-
-```js
-var encoding = accept.encodings('gzip', 'deflate') // -> 'gzip', probably
-```
-
-### accept\[property\]\(values, ...\)
-
-You can either have `values` be an array or have an argument list of values.
-
-If the client does not accept any `values`, `false` will be returned.
-If the client accepts any `values`, the preferred `value` will be return.
-
-For `accept.types()`, shorthand mime types are allowed.
-
-Example:
-
-```js
-// req.headers.accept = 'application/json'
-
-accept.types('json') // -> 'json'
-accept.types('html', 'json') // -> 'json'
-accept.types('html') // -> false
-
-// req.headers.accept = ''
-// which is equivalent to `*`
-
-accept.types() // -> [], no explicit types
-accept.types('text/html', 'text/json') // -> 'text/html', since it was first
-```
-
-## License
-
-The MIT License (MIT)
-
-Copyright (c) 2013 Jonathan Ong me@jongleberry.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/errorhandler/node_modules/accepts/index.js b/node_modules/errorhandler/node_modules/accepts/index.js
deleted file mode 100755
index 75c2b50..0000000
--- a/node_modules/errorhandler/node_modules/accepts/index.js
+++ /dev/null
@@ -1,160 +0,0 @@
-var Negotiator = require('negotiator')
-var mime = require('mime-types')
-
-var slice = [].slice
-
-module.exports = Accepts
-
-function Accepts(req) {
- if (!(this instanceof Accepts))
- return new Accepts(req)
-
- this.headers = req.headers
- this.negotiator = Negotiator(req)
-}
-
-/**
- * Check if the given `type(s)` is acceptable, returning
- * the best match when true, otherwise `undefined`, in which
- * case you should respond with 406 "Not Acceptable".
- *
- * The `type` value may be a single mime type string
- * such as "application/json", the extension name
- * such as "json" or an array `["json", "html", "text/plain"]`. When a list
- * or array is given the _best_ match, if any is returned.
- *
- * Examples:
- *
- * // Accept: text/html
- * this.types('html');
- * // => "html"
- *
- * // Accept: text/*, application/json
- * this.types('html');
- * // => "html"
- * this.types('text/html');
- * // => "text/html"
- * this.types('json', 'text');
- * // => "json"
- * this.types('application/json');
- * // => "application/json"
- *
- * // Accept: text/*, application/json
- * this.types('image/png');
- * this.types('png');
- * // => undefined
- *
- * // Accept: text/*;q=.5, application/json
- * this.types(['html', 'json']);
- * this.types('html', 'json');
- * // => "json"
- *
- * @param {String|Array} type(s)...
- * @return {String|Array|Boolean}
- * @api public
- */
-
-Accepts.prototype.type =
-Accepts.prototype.types = function (types) {
- if (!Array.isArray(types)) types = slice.call(arguments);
- var n = this.negotiator;
- if (!types.length) return n.mediaTypes();
- if (!this.headers.accept) return types[0];
- var mimes = types.map(extToMime).filter(validMime);
- var accepts = n.mediaTypes(mimes);
- var first = accepts[0];
- if (!first) return false;
- return types[mimes.indexOf(first)];
-}
-
-/**
- * Return accepted encodings or best fit based on `encodings`.
- *
- * Given `Accept-Encoding: gzip, deflate`
- * an array sorted by quality is returned:
- *
- * ['gzip', 'deflate']
- *
- * @param {String|Array} encoding(s)...
- * @return {String|Array}
- * @api public
- */
-
-Accepts.prototype.encoding =
-Accepts.prototype.encodings = function (encodings) {
- if (!Array.isArray(encodings)) encodings = slice.call(arguments);
- var n = this.negotiator;
- if (!encodings.length) return n.encodings();
- return n.encodings(encodings)[0] || false;
-}
-
-/**
- * Return accepted charsets or best fit based on `charsets`.
- *
- * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
- * an array sorted by quality is returned:
- *
- * ['utf-8', 'utf-7', 'iso-8859-1']
- *
- * @param {String|Array} charset(s)...
- * @return {String|Array}
- * @api public
- */
-
-Accepts.prototype.charset =
-Accepts.prototype.charsets = function (charsets) {
- if (!Array.isArray(charsets)) charsets = [].slice.call(arguments);
- var n = this.negotiator;
- if (!charsets.length) return n.charsets();
- if (!this.headers['accept-charset']) return charsets[0];
- return n.charsets(charsets)[0] || false;
-}
-
-/**
- * Return accepted languages or best fit based on `langs`.
- *
- * Given `Accept-Language: en;q=0.8, es, pt`
- * an array sorted by quality is returned:
- *
- * ['es', 'pt', 'en']
- *
- * @param {String|Array} lang(s)...
- * @return {Array|String}
- * @api public
- */
-
-Accepts.prototype.lang =
-Accepts.prototype.langs =
-Accepts.prototype.language =
-Accepts.prototype.languages = function (langs) {
- if (!Array.isArray(langs)) langs = slice.call(arguments);
- var n = this.negotiator;
- if (!langs.length) return n.languages();
- if (!this.headers['accept-language']) return langs[0];
- return n.languages(langs)[0] || false;
-}
-
-/**
- * Convert extnames to mime.
- *
- * @param {String} type
- * @return {String}
- * @api private
- */
-
-function extToMime(type) {
- if (~type.indexOf('/')) return type;
- return mime.lookup(type);
-}
-
-/**
- * Check if mime is valid.
- *
- * @param {String} type
- * @return {String}
- * @api private
- */
-
-function validMime(type) {
- return typeof type === 'string';
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/.npmignore b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/.npmignore
deleted file mode 100755
index 919d51b..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/.npmignore
+++ /dev/null
@@ -1,14 +0,0 @@
-test
-build.js
-
-# OS generated files #
-######################
-.DS_Store*
-# Icon?
-ehthumbs.db
-Thumbs.db
-
-# Node.js #
-###########
-node_modules
-npm-debug.log
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/.travis.yml b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/.travis.yml
deleted file mode 100755
index 73c85c6..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.11"
-matrix:
- allow_failures:
- - node_js: "0.11"
- fast_finish: true
-before_install:
- # remove build script deps before install
- - node -pe 'f="./package.json";p=require(f);d=p.devDependencies;for(k in d){if("co"===k.substr(0,2))delete d[k]}require("fs").writeFileSync(f,JSON.stringify(p,null,2))'
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/LICENSE b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/LICENSE
deleted file mode 100755
index a7ae8ee..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2014 Jonathan Ong me@jongleberry.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/Makefile b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/Makefile
deleted file mode 100755
index ceaf011..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-
-build:
- node --harmony-generators build.js
-
-test:
- node test/mime.js
- mocha --require should --reporter spec test/test.js
-
-.PHONY: build test
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/README.md b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/README.md
deleted file mode 100755
index 8e21ee1..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/README.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# mime-types
-[![NPM version](https://badge.fury.io/js/mime-types.svg)](https://badge.fury.io/js/mime-types) [![Build Status](https://travis-ci.org/expressjs/mime-types.svg?branch=master)](https://travis-ci.org/expressjs/mime-types)
-
-The ultimate javascript content-type utility.
-
-### Install
-
-```sh
-$ npm install mime-types
-```
-
-#### Similar to [node-mime](https://github.com/broofa/node-mime), except:
-
-- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.
-- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
-- Additional mime types are added such as jade and stylus. Feel free to add more!
-- Browser support via Browserify and Component by converting lists to JSON files.
-
-Otherwise, the API is compatible.
-
-### Adding Types
-
-If you'd like to add additional types,
-simply create a PR adding the type to `custom.json` and
-a reference link to the [sources](SOURCES.md).
-
-Do __NOT__ edit `mime.json` or `node.json`.
-Those are pulled using `build.js`.
-You should only touch `custom.json`.
-
-## API
-
-```js
-var mime = require('mime-types')
-```
-
-All functions return `false` if input is invalid or not found.
-
-### mime.lookup(path)
-
-Lookup the content-type associated with a file.
-
-```js
-mime.lookup('json') // 'application/json'
-mime.lookup('.md') // 'text/x-markdown'
-mime.lookup('file.html') // 'text/html'
-mime.lookup('folder/file.js') // 'application/javascript'
-
-mime.lookup('cats') // false
-```
-
-### mime.contentType(type)
-
-Create a full content-type header given a content-type or extension.
-
-```js
-mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
-mime.contentType('file.json') // 'application/json; charset=utf-8'
-```
-
-### mime.extension(type)
-
-Get the default extension for a content-type.
-
-```js
-mime.extension('application/octet-stream') // 'bin'
-```
-
-### mime.charset(type)
-
-Lookup the implied default charset of a content-type.
-
-```js
-mime.charset('text/x-markdown') // 'UTF-8'
-```
-
-### mime.types[extension] = type
-
-A map of content-types by extension.
-
-### mime.extensions[type] = [extensions]
-
-A map of extensions by content-type.
-
-### mime.define(types)
-
-Globally add definitions.
-`types` must be an object of the form:
-
-```js
-{
- "": [extensions...],
- "": [extensions...]
-}
-```
-
-See the `.json` files in `lib/` for examples.
-
-## License
-
-[MIT](LICENSE)
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/SOURCES.md b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/SOURCES.md
deleted file mode 100755
index 1d65012..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/SOURCES.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-### Sources for custom types
-
-This is a list of sources for any custom mime types.
-When adding custom mime types, please link to where you found the mime type,
-even if it's from an unofficial source.
-
-- `text/coffeescript` - http://coffeescript.org/#scripts
-- `text/x-handlebars-template` - https://handlebarsjs.com/#getting-started
-- `text/x-sass` & `text/x-scss` - https://github.com/janlelis/rubybuntu-mime/blob/master/sass.xml
-- `text.jsx` - http://facebook.github.io/react/docs/getting-started.html [[2]](https://github.com/facebook/react/blob/f230e0a03154e6f8a616e0da1fb3d97ffa1a6472/vendor/browser-transforms.js#L210)
-
-[Sources for node.json types](https://github.com/broofa/node-mime/blob/master/types/node.types)
-
-### Notes on weird types
-
-- `font/opentype` - This type is technically invalid according to the spec. No valid types begin with `font/`. No-one uses the official type of `application/vnd.ms-opentype` as the community standardized `application/x-font-otf`. However, chrome logs nonsense warnings unless opentype fonts are served with `font/opentype`. [[1]](http://stackoverflow.com/questions/2871655/proper-mime-type-for-fonts)
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/component.json b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/component.json
deleted file mode 100755
index fa67a6d..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/component.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "mime-types",
- "description": "The ultimate javascript content-type utility.",
- "version": "0.1.0",
- "author": {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com",
- "twitter": "https://twitter.com/jongleberry"
- },
- "repository": "expressjs/mime-types",
- "license": "MIT",
- "main": "lib/index.js",
- "scripts": ["lib/index.js"],
- "json": ["mime.json", "node.json", "custom.json"]
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/custom.json b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/custom.json
deleted file mode 100755
index 6137da3..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/custom.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "text/jade": [
- "jade"
- ],
- "text/stylus": [
- "stylus",
- "styl"
- ],
- "text/less": [
- "less"
- ],
- "text/x-sass": [
- "sass"
- ],
- "text/x-scss": [
- "scss"
- ],
- "text/coffeescript": [
- "coffee"
- ],
- "text/x-handlebars-template": [
- "hbs"
- ],
- "text/jsx": [
- "jsx"
- ]
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/index.js b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/index.js
deleted file mode 100755
index 27559ea..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-
-// types[extension] = type
-exports.types = Object.create(null)
-// extensions[type] = [extensions]
-exports.extensions = Object.create(null)
-// define more mime types
-exports.define = define
-
-// store the json files
-exports.json = {
- mime: require('./mime.json'),
- node: require('./node.json'),
- custom: require('./custom.json'),
-}
-
-exports.lookup = function (string) {
- if (!string || typeof string !== "string") return false
- string = string.replace(/.*[\.\/\\]/, '').toLowerCase()
- if (!string) return false
- return exports.types[string] || false
-}
-
-exports.extension = function (type) {
- if (!type || typeof type !== "string") return false
- type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/)
- if (!type) return false
- var exts = exports.extensions[type[1].toLowerCase()]
- if (!exts || !exts.length) return false
- return exts[0]
-}
-
-// type has to be an exact mime type
-exports.charset = function (type) {
- // special cases
- switch (type) {
- case 'application/json': return 'UTF-8'
- }
-
- // default text/* to utf-8
- if (/^text\//.test(type)) return 'UTF-8'
-
- return false
-}
-
-// backwards compatibility
-exports.charsets = {
- lookup: exports.charset
-}
-
-exports.contentType = function (type) {
- if (!type || typeof type !== "string") return false
- if (!~type.indexOf('/')) type = exports.lookup(type)
- if (!type) return false
- if (!~type.indexOf('charset')) {
- var charset = exports.charset(type)
- if (charset) type += '; charset=' + charset.toLowerCase()
- }
- return type
-}
-
-define(exports.json.mime)
-define(exports.json.node)
-define(exports.json.custom)
-
-function define(json) {
- Object.keys(json).forEach(function (type) {
- var exts = json[type] || []
- exports.extensions[type] = exports.extensions[type] || []
- exts.forEach(function (ext) {
- if (!~exports.extensions[type].indexOf(ext)) exports.extensions[type].push(ext)
- exports.types[ext] = type
- })
- })
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/mime.json b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/mime.json
deleted file mode 100755
index f445a86..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/mime.json
+++ /dev/null
@@ -1,3317 +0,0 @@
-{
- "application/1d-interleaved-parityfec": [],
- "application/3gpp-ims+xml": [],
- "application/activemessage": [],
- "application/andrew-inset": [
- "ez"
- ],
- "application/applefile": [],
- "application/applixware": [
- "aw"
- ],
- "application/atom+xml": [
- "atom"
- ],
- "application/atomcat+xml": [
- "atomcat"
- ],
- "application/atomicmail": [],
- "application/atomsvc+xml": [
- "atomsvc"
- ],
- "application/auth-policy+xml": [],
- "application/batch-smtp": [],
- "application/beep+xml": [],
- "application/calendar+xml": [],
- "application/cals-1840": [],
- "application/ccmp+xml": [],
- "application/ccxml+xml": [
- "ccxml"
- ],
- "application/cdmi-capability": [
- "cdmia"
- ],
- "application/cdmi-container": [
- "cdmic"
- ],
- "application/cdmi-domain": [
- "cdmid"
- ],
- "application/cdmi-object": [
- "cdmio"
- ],
- "application/cdmi-queue": [
- "cdmiq"
- ],
- "application/cea-2018+xml": [],
- "application/cellml+xml": [],
- "application/cfw": [],
- "application/cnrp+xml": [],
- "application/commonground": [],
- "application/conference-info+xml": [],
- "application/cpl+xml": [],
- "application/csta+xml": [],
- "application/cstadata+xml": [],
- "application/cu-seeme": [
- "cu"
- ],
- "application/cybercash": [],
- "application/davmount+xml": [
- "davmount"
- ],
- "application/dca-rft": [],
- "application/dec-dx": [],
- "application/dialog-info+xml": [],
- "application/dicom": [],
- "application/dns": [],
- "application/docbook+xml": [
- "dbk"
- ],
- "application/dskpp+xml": [],
- "application/dssc+der": [
- "dssc"
- ],
- "application/dssc+xml": [
- "xdssc"
- ],
- "application/dvcs": [],
- "application/ecmascript": [
- "ecma"
- ],
- "application/edi-consent": [],
- "application/edi-x12": [],
- "application/edifact": [],
- "application/emma+xml": [
- "emma"
- ],
- "application/epp+xml": [],
- "application/epub+zip": [
- "epub"
- ],
- "application/eshop": [],
- "application/example": [],
- "application/exi": [
- "exi"
- ],
- "application/fastinfoset": [],
- "application/fastsoap": [],
- "application/fits": [],
- "application/font-tdpfr": [
- "pfr"
- ],
- "application/framework-attributes+xml": [],
- "application/gml+xml": [
- "gml"
- ],
- "application/gpx+xml": [
- "gpx"
- ],
- "application/gxf": [
- "gxf"
- ],
- "application/h224": [],
- "application/held+xml": [],
- "application/http": [],
- "application/hyperstudio": [
- "stk"
- ],
- "application/ibe-key-request+xml": [],
- "application/ibe-pkg-reply+xml": [],
- "application/ibe-pp-data": [],
- "application/iges": [],
- "application/im-iscomposing+xml": [],
- "application/index": [],
- "application/index.cmd": [],
- "application/index.obj": [],
- "application/index.response": [],
- "application/index.vnd": [],
- "application/inkml+xml": [
- "ink",
- "inkml"
- ],
- "application/iotp": [],
- "application/ipfix": [
- "ipfix"
- ],
- "application/ipp": [],
- "application/isup": [],
- "application/java-archive": [
- "jar"
- ],
- "application/java-serialized-object": [
- "ser"
- ],
- "application/java-vm": [
- "class"
- ],
- "application/javascript": [
- "js"
- ],
- "application/json": [
- "json"
- ],
- "application/jsonml+json": [
- "jsonml"
- ],
- "application/kpml-request+xml": [],
- "application/kpml-response+xml": [],
- "application/lost+xml": [
- "lostxml"
- ],
- "application/mac-binhex40": [
- "hqx"
- ],
- "application/mac-compactpro": [
- "cpt"
- ],
- "application/macwriteii": [],
- "application/mads+xml": [
- "mads"
- ],
- "application/marc": [
- "mrc"
- ],
- "application/marcxml+xml": [
- "mrcx"
- ],
- "application/mathematica": [
- "ma",
- "nb",
- "mb"
- ],
- "application/mathml-content+xml": [],
- "application/mathml-presentation+xml": [],
- "application/mathml+xml": [
- "mathml"
- ],
- "application/mbms-associated-procedure-description+xml": [],
- "application/mbms-deregister+xml": [],
- "application/mbms-envelope+xml": [],
- "application/mbms-msk+xml": [],
- "application/mbms-msk-response+xml": [],
- "application/mbms-protection-description+xml": [],
- "application/mbms-reception-report+xml": [],
- "application/mbms-register+xml": [],
- "application/mbms-register-response+xml": [],
- "application/mbms-user-service-description+xml": [],
- "application/mbox": [
- "mbox"
- ],
- "application/media_control+xml": [],
- "application/mediaservercontrol+xml": [
- "mscml"
- ],
- "application/metalink+xml": [
- "metalink"
- ],
- "application/metalink4+xml": [
- "meta4"
- ],
- "application/mets+xml": [
- "mets"
- ],
- "application/mikey": [],
- "application/mods+xml": [
- "mods"
- ],
- "application/moss-keys": [],
- "application/moss-signature": [],
- "application/mosskey-data": [],
- "application/mosskey-request": [],
- "application/mp21": [
- "m21",
- "mp21"
- ],
- "application/mp4": [
- "mp4s"
- ],
- "application/mpeg4-generic": [],
- "application/mpeg4-iod": [],
- "application/mpeg4-iod-xmt": [],
- "application/msc-ivr+xml": [],
- "application/msc-mixer+xml": [],
- "application/msword": [
- "doc",
- "dot"
- ],
- "application/mxf": [
- "mxf"
- ],
- "application/nasdata": [],
- "application/news-checkgroups": [],
- "application/news-groupinfo": [],
- "application/news-transmission": [],
- "application/nss": [],
- "application/ocsp-request": [],
- "application/ocsp-response": [],
- "application/octet-stream": [
- "bin",
- "dms",
- "lrf",
- "mar",
- "so",
- "dist",
- "distz",
- "pkg",
- "bpk",
- "dump",
- "elc",
- "deploy"
- ],
- "application/oda": [
- "oda"
- ],
- "application/oebps-package+xml": [
- "opf"
- ],
- "application/ogg": [
- "ogx"
- ],
- "application/omdoc+xml": [
- "omdoc"
- ],
- "application/onenote": [
- "onetoc",
- "onetoc2",
- "onetmp",
- "onepkg"
- ],
- "application/oxps": [
- "oxps"
- ],
- "application/parityfec": [],
- "application/patch-ops-error+xml": [
- "xer"
- ],
- "application/pdf": [
- "pdf"
- ],
- "application/pgp-encrypted": [
- "pgp"
- ],
- "application/pgp-keys": [],
- "application/pgp-signature": [
- "asc",
- "sig"
- ],
- "application/pics-rules": [
- "prf"
- ],
- "application/pidf+xml": [],
- "application/pidf-diff+xml": [],
- "application/pkcs10": [
- "p10"
- ],
- "application/pkcs7-mime": [
- "p7m",
- "p7c"
- ],
- "application/pkcs7-signature": [
- "p7s"
- ],
- "application/pkcs8": [
- "p8"
- ],
- "application/pkix-attr-cert": [
- "ac"
- ],
- "application/pkix-cert": [
- "cer"
- ],
- "application/pkix-crl": [
- "crl"
- ],
- "application/pkix-pkipath": [
- "pkipath"
- ],
- "application/pkixcmp": [
- "pki"
- ],
- "application/pls+xml": [
- "pls"
- ],
- "application/poc-settings+xml": [],
- "application/postscript": [
- "ai",
- "eps",
- "ps"
- ],
- "application/prs.alvestrand.titrax-sheet": [],
- "application/prs.cww": [
- "cww"
- ],
- "application/prs.nprend": [],
- "application/prs.plucker": [],
- "application/prs.rdf-xml-crypt": [],
- "application/prs.xsf+xml": [],
- "application/pskc+xml": [
- "pskcxml"
- ],
- "application/qsig": [],
- "application/rdf+xml": [
- "rdf"
- ],
- "application/reginfo+xml": [
- "rif"
- ],
- "application/relax-ng-compact-syntax": [
- "rnc"
- ],
- "application/remote-printing": [],
- "application/resource-lists+xml": [
- "rl"
- ],
- "application/resource-lists-diff+xml": [
- "rld"
- ],
- "application/riscos": [],
- "application/rlmi+xml": [],
- "application/rls-services+xml": [
- "rs"
- ],
- "application/rpki-ghostbusters": [
- "gbr"
- ],
- "application/rpki-manifest": [
- "mft"
- ],
- "application/rpki-roa": [
- "roa"
- ],
- "application/rpki-updown": [],
- "application/rsd+xml": [
- "rsd"
- ],
- "application/rss+xml": [
- "rss"
- ],
- "application/rtf": [
- "rtf"
- ],
- "application/rtx": [],
- "application/samlassertion+xml": [],
- "application/samlmetadata+xml": [],
- "application/sbml+xml": [
- "sbml"
- ],
- "application/scvp-cv-request": [
- "scq"
- ],
- "application/scvp-cv-response": [
- "scs"
- ],
- "application/scvp-vp-request": [
- "spq"
- ],
- "application/scvp-vp-response": [
- "spp"
- ],
- "application/sdp": [
- "sdp"
- ],
- "application/set-payment": [],
- "application/set-payment-initiation": [
- "setpay"
- ],
- "application/set-registration": [],
- "application/set-registration-initiation": [
- "setreg"
- ],
- "application/sgml": [],
- "application/sgml-open-catalog": [],
- "application/shf+xml": [
- "shf"
- ],
- "application/sieve": [],
- "application/simple-filter+xml": [],
- "application/simple-message-summary": [],
- "application/simplesymbolcontainer": [],
- "application/slate": [],
- "application/smil": [],
- "application/smil+xml": [
- "smi",
- "smil"
- ],
- "application/soap+fastinfoset": [],
- "application/soap+xml": [],
- "application/sparql-query": [
- "rq"
- ],
- "application/sparql-results+xml": [
- "srx"
- ],
- "application/spirits-event+xml": [],
- "application/srgs": [
- "gram"
- ],
- "application/srgs+xml": [
- "grxml"
- ],
- "application/sru+xml": [
- "sru"
- ],
- "application/ssdl+xml": [
- "ssdl"
- ],
- "application/ssml+xml": [
- "ssml"
- ],
- "application/tamp-apex-update": [],
- "application/tamp-apex-update-confirm": [],
- "application/tamp-community-update": [],
- "application/tamp-community-update-confirm": [],
- "application/tamp-error": [],
- "application/tamp-sequence-adjust": [],
- "application/tamp-sequence-adjust-confirm": [],
- "application/tamp-status-query": [],
- "application/tamp-status-response": [],
- "application/tamp-update": [],
- "application/tamp-update-confirm": [],
- "application/tei+xml": [
- "tei",
- "teicorpus"
- ],
- "application/thraud+xml": [
- "tfi"
- ],
- "application/timestamp-query": [],
- "application/timestamp-reply": [],
- "application/timestamped-data": [
- "tsd"
- ],
- "application/tve-trigger": [],
- "application/ulpfec": [],
- "application/vcard+xml": [],
- "application/vemmi": [],
- "application/vividence.scriptfile": [],
- "application/vnd.3gpp.bsf+xml": [],
- "application/vnd.3gpp.pic-bw-large": [
- "plb"
- ],
- "application/vnd.3gpp.pic-bw-small": [
- "psb"
- ],
- "application/vnd.3gpp.pic-bw-var": [
- "pvb"
- ],
- "application/vnd.3gpp.sms": [],
- "application/vnd.3gpp2.bcmcsinfo+xml": [],
- "application/vnd.3gpp2.sms": [],
- "application/vnd.3gpp2.tcap": [
- "tcap"
- ],
- "application/vnd.3m.post-it-notes": [
- "pwn"
- ],
- "application/vnd.accpac.simply.aso": [
- "aso"
- ],
- "application/vnd.accpac.simply.imp": [
- "imp"
- ],
- "application/vnd.acucobol": [
- "acu"
- ],
- "application/vnd.acucorp": [
- "atc",
- "acutc"
- ],
- "application/vnd.adobe.air-application-installer-package+zip": [
- "air"
- ],
- "application/vnd.adobe.formscentral.fcdt": [
- "fcdt"
- ],
- "application/vnd.adobe.fxp": [
- "fxp",
- "fxpl"
- ],
- "application/vnd.adobe.partial-upload": [],
- "application/vnd.adobe.xdp+xml": [
- "xdp"
- ],
- "application/vnd.adobe.xfdf": [
- "xfdf"
- ],
- "application/vnd.aether.imp": [],
- "application/vnd.ah-barcode": [],
- "application/vnd.ahead.space": [
- "ahead"
- ],
- "application/vnd.airzip.filesecure.azf": [
- "azf"
- ],
- "application/vnd.airzip.filesecure.azs": [
- "azs"
- ],
- "application/vnd.amazon.ebook": [
- "azw"
- ],
- "application/vnd.americandynamics.acc": [
- "acc"
- ],
- "application/vnd.amiga.ami": [
- "ami"
- ],
- "application/vnd.amundsen.maze+xml": [],
- "application/vnd.android.package-archive": [
- "apk"
- ],
- "application/vnd.anser-web-certificate-issue-initiation": [
- "cii"
- ],
- "application/vnd.anser-web-funds-transfer-initiation": [
- "fti"
- ],
- "application/vnd.antix.game-component": [
- "atx"
- ],
- "application/vnd.apple.installer+xml": [
- "mpkg"
- ],
- "application/vnd.apple.mpegurl": [
- "m3u8"
- ],
- "application/vnd.arastra.swi": [],
- "application/vnd.aristanetworks.swi": [
- "swi"
- ],
- "application/vnd.astraea-software.iota": [
- "iota"
- ],
- "application/vnd.audiograph": [
- "aep"
- ],
- "application/vnd.autopackage": [],
- "application/vnd.avistar+xml": [],
- "application/vnd.blueice.multipass": [
- "mpm"
- ],
- "application/vnd.bluetooth.ep.oob": [],
- "application/vnd.bmi": [
- "bmi"
- ],
- "application/vnd.businessobjects": [
- "rep"
- ],
- "application/vnd.cab-jscript": [],
- "application/vnd.canon-cpdl": [],
- "application/vnd.canon-lips": [],
- "application/vnd.cendio.thinlinc.clientconf": [],
- "application/vnd.chemdraw+xml": [
- "cdxml"
- ],
- "application/vnd.chipnuts.karaoke-mmd": [
- "mmd"
- ],
- "application/vnd.cinderella": [
- "cdy"
- ],
- "application/vnd.cirpack.isdn-ext": [],
- "application/vnd.claymore": [
- "cla"
- ],
- "application/vnd.cloanto.rp9": [
- "rp9"
- ],
- "application/vnd.clonk.c4group": [
- "c4g",
- "c4d",
- "c4f",
- "c4p",
- "c4u"
- ],
- "application/vnd.cluetrust.cartomobile-config": [
- "c11amc"
- ],
- "application/vnd.cluetrust.cartomobile-config-pkg": [
- "c11amz"
- ],
- "application/vnd.collection+json": [],
- "application/vnd.commerce-battelle": [],
- "application/vnd.commonspace": [
- "csp"
- ],
- "application/vnd.contact.cmsg": [
- "cdbcmsg"
- ],
- "application/vnd.cosmocaller": [
- "cmc"
- ],
- "application/vnd.crick.clicker": [
- "clkx"
- ],
- "application/vnd.crick.clicker.keyboard": [
- "clkk"
- ],
- "application/vnd.crick.clicker.palette": [
- "clkp"
- ],
- "application/vnd.crick.clicker.template": [
- "clkt"
- ],
- "application/vnd.crick.clicker.wordbank": [
- "clkw"
- ],
- "application/vnd.criticaltools.wbs+xml": [
- "wbs"
- ],
- "application/vnd.ctc-posml": [
- "pml"
- ],
- "application/vnd.ctct.ws+xml": [],
- "application/vnd.cups-pdf": [],
- "application/vnd.cups-postscript": [],
- "application/vnd.cups-ppd": [
- "ppd"
- ],
- "application/vnd.cups-raster": [],
- "application/vnd.cups-raw": [],
- "application/vnd.curl": [],
- "application/vnd.curl.car": [
- "car"
- ],
- "application/vnd.curl.pcurl": [
- "pcurl"
- ],
- "application/vnd.cybank": [],
- "application/vnd.dart": [
- "dart"
- ],
- "application/vnd.data-vision.rdz": [
- "rdz"
- ],
- "application/vnd.dece.data": [
- "uvf",
- "uvvf",
- "uvd",
- "uvvd"
- ],
- "application/vnd.dece.ttml+xml": [
- "uvt",
- "uvvt"
- ],
- "application/vnd.dece.unspecified": [
- "uvx",
- "uvvx"
- ],
- "application/vnd.dece.zip": [
- "uvz",
- "uvvz"
- ],
- "application/vnd.denovo.fcselayout-link": [
- "fe_launch"
- ],
- "application/vnd.dir-bi.plate-dl-nosuffix": [],
- "application/vnd.dna": [
- "dna"
- ],
- "application/vnd.dolby.mlp": [
- "mlp"
- ],
- "application/vnd.dolby.mobile.1": [],
- "application/vnd.dolby.mobile.2": [],
- "application/vnd.dpgraph": [
- "dpg"
- ],
- "application/vnd.dreamfactory": [
- "dfac"
- ],
- "application/vnd.ds-keypoint": [
- "kpxx"
- ],
- "application/vnd.dvb.ait": [
- "ait"
- ],
- "application/vnd.dvb.dvbj": [],
- "application/vnd.dvb.esgcontainer": [],
- "application/vnd.dvb.ipdcdftnotifaccess": [],
- "application/vnd.dvb.ipdcesgaccess": [],
- "application/vnd.dvb.ipdcesgaccess2": [],
- "application/vnd.dvb.ipdcesgpdd": [],
- "application/vnd.dvb.ipdcroaming": [],
- "application/vnd.dvb.iptv.alfec-base": [],
- "application/vnd.dvb.iptv.alfec-enhancement": [],
- "application/vnd.dvb.notif-aggregate-root+xml": [],
- "application/vnd.dvb.notif-container+xml": [],
- "application/vnd.dvb.notif-generic+xml": [],
- "application/vnd.dvb.notif-ia-msglist+xml": [],
- "application/vnd.dvb.notif-ia-registration-request+xml": [],
- "application/vnd.dvb.notif-ia-registration-response+xml": [],
- "application/vnd.dvb.notif-init+xml": [],
- "application/vnd.dvb.pfr": [],
- "application/vnd.dvb.service": [
- "svc"
- ],
- "application/vnd.dxr": [],
- "application/vnd.dynageo": [
- "geo"
- ],
- "application/vnd.easykaraoke.cdgdownload": [],
- "application/vnd.ecdis-update": [],
- "application/vnd.ecowin.chart": [
- "mag"
- ],
- "application/vnd.ecowin.filerequest": [],
- "application/vnd.ecowin.fileupdate": [],
- "application/vnd.ecowin.series": [],
- "application/vnd.ecowin.seriesrequest": [],
- "application/vnd.ecowin.seriesupdate": [],
- "application/vnd.emclient.accessrequest+xml": [],
- "application/vnd.enliven": [
- "nml"
- ],
- "application/vnd.eprints.data+xml": [],
- "application/vnd.epson.esf": [
- "esf"
- ],
- "application/vnd.epson.msf": [
- "msf"
- ],
- "application/vnd.epson.quickanime": [
- "qam"
- ],
- "application/vnd.epson.salt": [
- "slt"
- ],
- "application/vnd.epson.ssf": [
- "ssf"
- ],
- "application/vnd.ericsson.quickcall": [],
- "application/vnd.eszigno3+xml": [
- "es3",
- "et3"
- ],
- "application/vnd.etsi.aoc+xml": [],
- "application/vnd.etsi.cug+xml": [],
- "application/vnd.etsi.iptvcommand+xml": [],
- "application/vnd.etsi.iptvdiscovery+xml": [],
- "application/vnd.etsi.iptvprofile+xml": [],
- "application/vnd.etsi.iptvsad-bc+xml": [],
- "application/vnd.etsi.iptvsad-cod+xml": [],
- "application/vnd.etsi.iptvsad-npvr+xml": [],
- "application/vnd.etsi.iptvservice+xml": [],
- "application/vnd.etsi.iptvsync+xml": [],
- "application/vnd.etsi.iptvueprofile+xml": [],
- "application/vnd.etsi.mcid+xml": [],
- "application/vnd.etsi.overload-control-policy-dataset+xml": [],
- "application/vnd.etsi.sci+xml": [],
- "application/vnd.etsi.simservs+xml": [],
- "application/vnd.etsi.tsl+xml": [],
- "application/vnd.etsi.tsl.der": [],
- "application/vnd.eudora.data": [],
- "application/vnd.ezpix-album": [
- "ez2"
- ],
- "application/vnd.ezpix-package": [
- "ez3"
- ],
- "application/vnd.f-secure.mobile": [],
- "application/vnd.fdf": [
- "fdf"
- ],
- "application/vnd.fdsn.mseed": [
- "mseed"
- ],
- "application/vnd.fdsn.seed": [
- "seed",
- "dataless"
- ],
- "application/vnd.ffsns": [],
- "application/vnd.fints": [],
- "application/vnd.flographit": [
- "gph"
- ],
- "application/vnd.fluxtime.clip": [
- "ftc"
- ],
- "application/vnd.font-fontforge-sfd": [],
- "application/vnd.framemaker": [
- "fm",
- "frame",
- "maker",
- "book"
- ],
- "application/vnd.frogans.fnc": [
- "fnc"
- ],
- "application/vnd.frogans.ltf": [
- "ltf"
- ],
- "application/vnd.fsc.weblaunch": [
- "fsc"
- ],
- "application/vnd.fujitsu.oasys": [
- "oas"
- ],
- "application/vnd.fujitsu.oasys2": [
- "oa2"
- ],
- "application/vnd.fujitsu.oasys3": [
- "oa3"
- ],
- "application/vnd.fujitsu.oasysgp": [
- "fg5"
- ],
- "application/vnd.fujitsu.oasysprs": [
- "bh2"
- ],
- "application/vnd.fujixerox.art-ex": [],
- "application/vnd.fujixerox.art4": [],
- "application/vnd.fujixerox.hbpl": [],
- "application/vnd.fujixerox.ddd": [
- "ddd"
- ],
- "application/vnd.fujixerox.docuworks": [
- "xdw"
- ],
- "application/vnd.fujixerox.docuworks.binder": [
- "xbd"
- ],
- "application/vnd.fut-misnet": [],
- "application/vnd.fuzzysheet": [
- "fzs"
- ],
- "application/vnd.genomatix.tuxedo": [
- "txd"
- ],
- "application/vnd.geocube+xml": [],
- "application/vnd.geogebra.file": [
- "ggb"
- ],
- "application/vnd.geogebra.tool": [
- "ggt"
- ],
- "application/vnd.geometry-explorer": [
- "gex",
- "gre"
- ],
- "application/vnd.geonext": [
- "gxt"
- ],
- "application/vnd.geoplan": [
- "g2w"
- ],
- "application/vnd.geospace": [
- "g3w"
- ],
- "application/vnd.globalplatform.card-content-mgt": [],
- "application/vnd.globalplatform.card-content-mgt-response": [],
- "application/vnd.gmx": [
- "gmx"
- ],
- "application/vnd.google-earth.kml+xml": [
- "kml"
- ],
- "application/vnd.google-earth.kmz": [
- "kmz"
- ],
- "application/vnd.grafeq": [
- "gqf",
- "gqs"
- ],
- "application/vnd.gridmp": [],
- "application/vnd.groove-account": [
- "gac"
- ],
- "application/vnd.groove-help": [
- "ghf"
- ],
- "application/vnd.groove-identity-message": [
- "gim"
- ],
- "application/vnd.groove-injector": [
- "grv"
- ],
- "application/vnd.groove-tool-message": [
- "gtm"
- ],
- "application/vnd.groove-tool-template": [
- "tpl"
- ],
- "application/vnd.groove-vcard": [
- "vcg"
- ],
- "application/vnd.hal+json": [],
- "application/vnd.hal+xml": [
- "hal"
- ],
- "application/vnd.handheld-entertainment+xml": [
- "zmm"
- ],
- "application/vnd.hbci": [
- "hbci"
- ],
- "application/vnd.hcl-bireports": [],
- "application/vnd.hhe.lesson-player": [
- "les"
- ],
- "application/vnd.hp-hpgl": [
- "hpgl"
- ],
- "application/vnd.hp-hpid": [
- "hpid"
- ],
- "application/vnd.hp-hps": [
- "hps"
- ],
- "application/vnd.hp-jlyt": [
- "jlt"
- ],
- "application/vnd.hp-pcl": [
- "pcl"
- ],
- "application/vnd.hp-pclxl": [
- "pclxl"
- ],
- "application/vnd.httphone": [],
- "application/vnd.hzn-3d-crossword": [],
- "application/vnd.ibm.afplinedata": [],
- "application/vnd.ibm.electronic-media": [],
- "application/vnd.ibm.minipay": [
- "mpy"
- ],
- "application/vnd.ibm.modcap": [
- "afp",
- "listafp",
- "list3820"
- ],
- "application/vnd.ibm.rights-management": [
- "irm"
- ],
- "application/vnd.ibm.secure-container": [
- "sc"
- ],
- "application/vnd.iccprofile": [
- "icc",
- "icm"
- ],
- "application/vnd.igloader": [
- "igl"
- ],
- "application/vnd.immervision-ivp": [
- "ivp"
- ],
- "application/vnd.immervision-ivu": [
- "ivu"
- ],
- "application/vnd.informedcontrol.rms+xml": [],
- "application/vnd.informix-visionary": [],
- "application/vnd.infotech.project": [],
- "application/vnd.infotech.project+xml": [],
- "application/vnd.innopath.wamp.notification": [],
- "application/vnd.insors.igm": [
- "igm"
- ],
- "application/vnd.intercon.formnet": [
- "xpw",
- "xpx"
- ],
- "application/vnd.intergeo": [
- "i2g"
- ],
- "application/vnd.intertrust.digibox": [],
- "application/vnd.intertrust.nncp": [],
- "application/vnd.intu.qbo": [
- "qbo"
- ],
- "application/vnd.intu.qfx": [
- "qfx"
- ],
- "application/vnd.iptc.g2.conceptitem+xml": [],
- "application/vnd.iptc.g2.knowledgeitem+xml": [],
- "application/vnd.iptc.g2.newsitem+xml": [],
- "application/vnd.iptc.g2.newsmessage+xml": [],
- "application/vnd.iptc.g2.packageitem+xml": [],
- "application/vnd.iptc.g2.planningitem+xml": [],
- "application/vnd.ipunplugged.rcprofile": [
- "rcprofile"
- ],
- "application/vnd.irepository.package+xml": [
- "irp"
- ],
- "application/vnd.is-xpr": [
- "xpr"
- ],
- "application/vnd.isac.fcs": [
- "fcs"
- ],
- "application/vnd.jam": [
- "jam"
- ],
- "application/vnd.japannet-directory-service": [],
- "application/vnd.japannet-jpnstore-wakeup": [],
- "application/vnd.japannet-payment-wakeup": [],
- "application/vnd.japannet-registration": [],
- "application/vnd.japannet-registration-wakeup": [],
- "application/vnd.japannet-setstore-wakeup": [],
- "application/vnd.japannet-verification": [],
- "application/vnd.japannet-verification-wakeup": [],
- "application/vnd.jcp.javame.midlet-rms": [
- "rms"
- ],
- "application/vnd.jisp": [
- "jisp"
- ],
- "application/vnd.joost.joda-archive": [
- "joda"
- ],
- "application/vnd.kahootz": [
- "ktz",
- "ktr"
- ],
- "application/vnd.kde.karbon": [
- "karbon"
- ],
- "application/vnd.kde.kchart": [
- "chrt"
- ],
- "application/vnd.kde.kformula": [
- "kfo"
- ],
- "application/vnd.kde.kivio": [
- "flw"
- ],
- "application/vnd.kde.kontour": [
- "kon"
- ],
- "application/vnd.kde.kpresenter": [
- "kpr",
- "kpt"
- ],
- "application/vnd.kde.kspread": [
- "ksp"
- ],
- "application/vnd.kde.kword": [
- "kwd",
- "kwt"
- ],
- "application/vnd.kenameaapp": [
- "htke"
- ],
- "application/vnd.kidspiration": [
- "kia"
- ],
- "application/vnd.kinar": [
- "kne",
- "knp"
- ],
- "application/vnd.koan": [
- "skp",
- "skd",
- "skt",
- "skm"
- ],
- "application/vnd.kodak-descriptor": [
- "sse"
- ],
- "application/vnd.las.las+xml": [
- "lasxml"
- ],
- "application/vnd.liberty-request+xml": [],
- "application/vnd.llamagraphics.life-balance.desktop": [
- "lbd"
- ],
- "application/vnd.llamagraphics.life-balance.exchange+xml": [
- "lbe"
- ],
- "application/vnd.lotus-1-2-3": [
- "123"
- ],
- "application/vnd.lotus-approach": [
- "apr"
- ],
- "application/vnd.lotus-freelance": [
- "pre"
- ],
- "application/vnd.lotus-notes": [
- "nsf"
- ],
- "application/vnd.lotus-organizer": [
- "org"
- ],
- "application/vnd.lotus-screencam": [
- "scm"
- ],
- "application/vnd.lotus-wordpro": [
- "lwp"
- ],
- "application/vnd.macports.portpkg": [
- "portpkg"
- ],
- "application/vnd.marlin.drm.actiontoken+xml": [],
- "application/vnd.marlin.drm.conftoken+xml": [],
- "application/vnd.marlin.drm.license+xml": [],
- "application/vnd.marlin.drm.mdcf": [],
- "application/vnd.mcd": [
- "mcd"
- ],
- "application/vnd.medcalcdata": [
- "mc1"
- ],
- "application/vnd.mediastation.cdkey": [
- "cdkey"
- ],
- "application/vnd.meridian-slingshot": [],
- "application/vnd.mfer": [
- "mwf"
- ],
- "application/vnd.mfmp": [
- "mfm"
- ],
- "application/vnd.micrografx.flo": [
- "flo"
- ],
- "application/vnd.micrografx.igx": [
- "igx"
- ],
- "application/vnd.mif": [
- "mif"
- ],
- "application/vnd.minisoft-hp3000-save": [],
- "application/vnd.mitsubishi.misty-guard.trustweb": [],
- "application/vnd.mobius.daf": [
- "daf"
- ],
- "application/vnd.mobius.dis": [
- "dis"
- ],
- "application/vnd.mobius.mbk": [
- "mbk"
- ],
- "application/vnd.mobius.mqy": [
- "mqy"
- ],
- "application/vnd.mobius.msl": [
- "msl"
- ],
- "application/vnd.mobius.plc": [
- "plc"
- ],
- "application/vnd.mobius.txf": [
- "txf"
- ],
- "application/vnd.mophun.application": [
- "mpn"
- ],
- "application/vnd.mophun.certificate": [
- "mpc"
- ],
- "application/vnd.motorola.flexsuite": [],
- "application/vnd.motorola.flexsuite.adsi": [],
- "application/vnd.motorola.flexsuite.fis": [],
- "application/vnd.motorola.flexsuite.gotap": [],
- "application/vnd.motorola.flexsuite.kmr": [],
- "application/vnd.motorola.flexsuite.ttc": [],
- "application/vnd.motorola.flexsuite.wem": [],
- "application/vnd.motorola.iprm": [],
- "application/vnd.mozilla.xul+xml": [
- "xul"
- ],
- "application/vnd.ms-artgalry": [
- "cil"
- ],
- "application/vnd.ms-asf": [],
- "application/vnd.ms-cab-compressed": [
- "cab"
- ],
- "application/vnd.ms-color.iccprofile": [],
- "application/vnd.ms-excel": [
- "xls",
- "xlm",
- "xla",
- "xlc",
- "xlt",
- "xlw"
- ],
- "application/vnd.ms-excel.addin.macroenabled.12": [
- "xlam"
- ],
- "application/vnd.ms-excel.sheet.binary.macroenabled.12": [
- "xlsb"
- ],
- "application/vnd.ms-excel.sheet.macroenabled.12": [
- "xlsm"
- ],
- "application/vnd.ms-excel.template.macroenabled.12": [
- "xltm"
- ],
- "application/vnd.ms-fontobject": [
- "eot"
- ],
- "application/vnd.ms-htmlhelp": [
- "chm"
- ],
- "application/vnd.ms-ims": [
- "ims"
- ],
- "application/vnd.ms-lrm": [
- "lrm"
- ],
- "application/vnd.ms-office.activex+xml": [],
- "application/vnd.ms-officetheme": [
- "thmx"
- ],
- "application/vnd.ms-opentype": [],
- "application/vnd.ms-package.obfuscated-opentype": [],
- "application/vnd.ms-pki.seccat": [
- "cat"
- ],
- "application/vnd.ms-pki.stl": [
- "stl"
- ],
- "application/vnd.ms-playready.initiator+xml": [],
- "application/vnd.ms-powerpoint": [
- "ppt",
- "pps",
- "pot"
- ],
- "application/vnd.ms-powerpoint.addin.macroenabled.12": [
- "ppam"
- ],
- "application/vnd.ms-powerpoint.presentation.macroenabled.12": [
- "pptm"
- ],
- "application/vnd.ms-powerpoint.slide.macroenabled.12": [
- "sldm"
- ],
- "application/vnd.ms-powerpoint.slideshow.macroenabled.12": [
- "ppsm"
- ],
- "application/vnd.ms-powerpoint.template.macroenabled.12": [
- "potm"
- ],
- "application/vnd.ms-printing.printticket+xml": [],
- "application/vnd.ms-project": [
- "mpp",
- "mpt"
- ],
- "application/vnd.ms-tnef": [],
- "application/vnd.ms-wmdrm.lic-chlg-req": [],
- "application/vnd.ms-wmdrm.lic-resp": [],
- "application/vnd.ms-wmdrm.meter-chlg-req": [],
- "application/vnd.ms-wmdrm.meter-resp": [],
- "application/vnd.ms-word.document.macroenabled.12": [
- "docm"
- ],
- "application/vnd.ms-word.template.macroenabled.12": [
- "dotm"
- ],
- "application/vnd.ms-works": [
- "wps",
- "wks",
- "wcm",
- "wdb"
- ],
- "application/vnd.ms-wpl": [
- "wpl"
- ],
- "application/vnd.ms-xpsdocument": [
- "xps"
- ],
- "application/vnd.mseq": [
- "mseq"
- ],
- "application/vnd.msign": [],
- "application/vnd.multiad.creator": [],
- "application/vnd.multiad.creator.cif": [],
- "application/vnd.music-niff": [],
- "application/vnd.musician": [
- "mus"
- ],
- "application/vnd.muvee.style": [
- "msty"
- ],
- "application/vnd.mynfc": [
- "taglet"
- ],
- "application/vnd.ncd.control": [],
- "application/vnd.ncd.reference": [],
- "application/vnd.nervana": [],
- "application/vnd.netfpx": [],
- "application/vnd.neurolanguage.nlu": [
- "nlu"
- ],
- "application/vnd.nitf": [
- "ntf",
- "nitf"
- ],
- "application/vnd.noblenet-directory": [
- "nnd"
- ],
- "application/vnd.noblenet-sealer": [
- "nns"
- ],
- "application/vnd.noblenet-web": [
- "nnw"
- ],
- "application/vnd.nokia.catalogs": [],
- "application/vnd.nokia.conml+wbxml": [],
- "application/vnd.nokia.conml+xml": [],
- "application/vnd.nokia.isds-radio-presets": [],
- "application/vnd.nokia.iptv.config+xml": [],
- "application/vnd.nokia.landmark+wbxml": [],
- "application/vnd.nokia.landmark+xml": [],
- "application/vnd.nokia.landmarkcollection+xml": [],
- "application/vnd.nokia.n-gage.ac+xml": [],
- "application/vnd.nokia.n-gage.data": [
- "ngdat"
- ],
- "application/vnd.nokia.ncd": [],
- "application/vnd.nokia.pcd+wbxml": [],
- "application/vnd.nokia.pcd+xml": [],
- "application/vnd.nokia.radio-preset": [
- "rpst"
- ],
- "application/vnd.nokia.radio-presets": [
- "rpss"
- ],
- "application/vnd.novadigm.edm": [
- "edm"
- ],
- "application/vnd.novadigm.edx": [
- "edx"
- ],
- "application/vnd.novadigm.ext": [
- "ext"
- ],
- "application/vnd.ntt-local.file-transfer": [],
- "application/vnd.ntt-local.sip-ta_remote": [],
- "application/vnd.ntt-local.sip-ta_tcp_stream": [],
- "application/vnd.oasis.opendocument.chart": [
- "odc"
- ],
- "application/vnd.oasis.opendocument.chart-template": [
- "otc"
- ],
- "application/vnd.oasis.opendocument.database": [
- "odb"
- ],
- "application/vnd.oasis.opendocument.formula": [
- "odf"
- ],
- "application/vnd.oasis.opendocument.formula-template": [
- "odft"
- ],
- "application/vnd.oasis.opendocument.graphics": [
- "odg"
- ],
- "application/vnd.oasis.opendocument.graphics-template": [
- "otg"
- ],
- "application/vnd.oasis.opendocument.image": [
- "odi"
- ],
- "application/vnd.oasis.opendocument.image-template": [
- "oti"
- ],
- "application/vnd.oasis.opendocument.presentation": [
- "odp"
- ],
- "application/vnd.oasis.opendocument.presentation-template": [
- "otp"
- ],
- "application/vnd.oasis.opendocument.spreadsheet": [
- "ods"
- ],
- "application/vnd.oasis.opendocument.spreadsheet-template": [
- "ots"
- ],
- "application/vnd.oasis.opendocument.text": [
- "odt"
- ],
- "application/vnd.oasis.opendocument.text-master": [
- "odm"
- ],
- "application/vnd.oasis.opendocument.text-template": [
- "ott"
- ],
- "application/vnd.oasis.opendocument.text-web": [
- "oth"
- ],
- "application/vnd.obn": [],
- "application/vnd.oftn.l10n+json": [],
- "application/vnd.oipf.contentaccessdownload+xml": [],
- "application/vnd.oipf.contentaccessstreaming+xml": [],
- "application/vnd.oipf.cspg-hexbinary": [],
- "application/vnd.oipf.dae.svg+xml": [],
- "application/vnd.oipf.dae.xhtml+xml": [],
- "application/vnd.oipf.mippvcontrolmessage+xml": [],
- "application/vnd.oipf.pae.gem": [],
- "application/vnd.oipf.spdiscovery+xml": [],
- "application/vnd.oipf.spdlist+xml": [],
- "application/vnd.oipf.ueprofile+xml": [],
- "application/vnd.oipf.userprofile+xml": [],
- "application/vnd.olpc-sugar": [
- "xo"
- ],
- "application/vnd.oma-scws-config": [],
- "application/vnd.oma-scws-http-request": [],
- "application/vnd.oma-scws-http-response": [],
- "application/vnd.oma.bcast.associated-procedure-parameter+xml": [],
- "application/vnd.oma.bcast.drm-trigger+xml": [],
- "application/vnd.oma.bcast.imd+xml": [],
- "application/vnd.oma.bcast.ltkm": [],
- "application/vnd.oma.bcast.notification+xml": [],
- "application/vnd.oma.bcast.provisioningtrigger": [],
- "application/vnd.oma.bcast.sgboot": [],
- "application/vnd.oma.bcast.sgdd+xml": [],
- "application/vnd.oma.bcast.sgdu": [],
- "application/vnd.oma.bcast.simple-symbol-container": [],
- "application/vnd.oma.bcast.smartcard-trigger+xml": [],
- "application/vnd.oma.bcast.sprov+xml": [],
- "application/vnd.oma.bcast.stkm": [],
- "application/vnd.oma.cab-address-book+xml": [],
- "application/vnd.oma.cab-feature-handler+xml": [],
- "application/vnd.oma.cab-pcc+xml": [],
- "application/vnd.oma.cab-user-prefs+xml": [],
- "application/vnd.oma.dcd": [],
- "application/vnd.oma.dcdc": [],
- "application/vnd.oma.dd2+xml": [
- "dd2"
- ],
- "application/vnd.oma.drm.risd+xml": [],
- "application/vnd.oma.group-usage-list+xml": [],
- "application/vnd.oma.pal+xml": [],
- "application/vnd.oma.poc.detailed-progress-report+xml": [],
- "application/vnd.oma.poc.final-report+xml": [],
- "application/vnd.oma.poc.groups+xml": [],
- "application/vnd.oma.poc.invocation-descriptor+xml": [],
- "application/vnd.oma.poc.optimized-progress-report+xml": [],
- "application/vnd.oma.push": [],
- "application/vnd.oma.scidm.messages+xml": [],
- "application/vnd.oma.xcap-directory+xml": [],
- "application/vnd.omads-email+xml": [],
- "application/vnd.omads-file+xml": [],
- "application/vnd.omads-folder+xml": [],
- "application/vnd.omaloc-supl-init": [],
- "application/vnd.openofficeorg.extension": [
- "oxt"
- ],
- "application/vnd.openxmlformats-officedocument.custom-properties+xml": [],
- "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": [],
- "application/vnd.openxmlformats-officedocument.drawing+xml": [],
- "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": [],
- "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": [],
- "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": [],
- "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": [],
- "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": [],
- "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": [],
- "application/vnd.openxmlformats-officedocument.extended-properties+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.presentation": [
- "pptx"
- ],
- "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.slide": [
- "sldx"
- ],
- "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow": [
- "ppsx"
- ],
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.template": [
- "potx"
- ],
- "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": [],
- "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": [
- "xlsx"
- ],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template": [
- "xltx"
- ],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": [],
- "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": [],
- "application/vnd.openxmlformats-officedocument.theme+xml": [],
- "application/vnd.openxmlformats-officedocument.themeoverride+xml": [],
- "application/vnd.openxmlformats-officedocument.vmldrawing": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": [
- "docx"
- ],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template": [
- "dotx"
- ],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": [],
- "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": [],
- "application/vnd.openxmlformats-package.core-properties+xml": [],
- "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": [],
- "application/vnd.openxmlformats-package.relationships+xml": [],
- "application/vnd.quobject-quoxdocument": [],
- "application/vnd.osa.netdeploy": [],
- "application/vnd.osgeo.mapguide.package": [
- "mgp"
- ],
- "application/vnd.osgi.bundle": [],
- "application/vnd.osgi.dp": [
- "dp"
- ],
- "application/vnd.osgi.subsystem": [
- "esa"
- ],
- "application/vnd.otps.ct-kip+xml": [],
- "application/vnd.palm": [
- "pdb",
- "pqa",
- "oprc"
- ],
- "application/vnd.paos.xml": [],
- "application/vnd.pawaafile": [
- "paw"
- ],
- "application/vnd.pg.format": [
- "str"
- ],
- "application/vnd.pg.osasli": [
- "ei6"
- ],
- "application/vnd.piaccess.application-licence": [],
- "application/vnd.picsel": [
- "efif"
- ],
- "application/vnd.pmi.widget": [
- "wg"
- ],
- "application/vnd.poc.group-advertisement+xml": [],
- "application/vnd.pocketlearn": [
- "plf"
- ],
- "application/vnd.powerbuilder6": [
- "pbd"
- ],
- "application/vnd.powerbuilder6-s": [],
- "application/vnd.powerbuilder7": [],
- "application/vnd.powerbuilder7-s": [],
- "application/vnd.powerbuilder75": [],
- "application/vnd.powerbuilder75-s": [],
- "application/vnd.preminet": [],
- "application/vnd.previewsystems.box": [
- "box"
- ],
- "application/vnd.proteus.magazine": [
- "mgz"
- ],
- "application/vnd.publishare-delta-tree": [
- "qps"
- ],
- "application/vnd.pvi.ptid1": [
- "ptid"
- ],
- "application/vnd.pwg-multiplexed": [],
- "application/vnd.pwg-xhtml-print+xml": [],
- "application/vnd.qualcomm.brew-app-res": [],
- "application/vnd.quark.quarkxpress": [
- "qxd",
- "qxt",
- "qwd",
- "qwt",
- "qxl",
- "qxb"
- ],
- "application/vnd.radisys.moml+xml": [],
- "application/vnd.radisys.msml+xml": [],
- "application/vnd.radisys.msml-audit+xml": [],
- "application/vnd.radisys.msml-audit-conf+xml": [],
- "application/vnd.radisys.msml-audit-conn+xml": [],
- "application/vnd.radisys.msml-audit-dialog+xml": [],
- "application/vnd.radisys.msml-audit-stream+xml": [],
- "application/vnd.radisys.msml-conf+xml": [],
- "application/vnd.radisys.msml-dialog+xml": [],
- "application/vnd.radisys.msml-dialog-base+xml": [],
- "application/vnd.radisys.msml-dialog-fax-detect+xml": [],
- "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": [],
- "application/vnd.radisys.msml-dialog-group+xml": [],
- "application/vnd.radisys.msml-dialog-speech+xml": [],
- "application/vnd.radisys.msml-dialog-transform+xml": [],
- "application/vnd.rainstor.data": [],
- "application/vnd.rapid": [],
- "application/vnd.realvnc.bed": [
- "bed"
- ],
- "application/vnd.recordare.musicxml": [
- "mxl"
- ],
- "application/vnd.recordare.musicxml+xml": [
- "musicxml"
- ],
- "application/vnd.renlearn.rlprint": [],
- "application/vnd.rig.cryptonote": [
- "cryptonote"
- ],
- "application/vnd.rim.cod": [
- "cod"
- ],
- "application/vnd.rn-realmedia": [
- "rm"
- ],
- "application/vnd.rn-realmedia-vbr": [
- "rmvb"
- ],
- "application/vnd.route66.link66+xml": [
- "link66"
- ],
- "application/vnd.rs-274x": [],
- "application/vnd.ruckus.download": [],
- "application/vnd.s3sms": [],
- "application/vnd.sailingtracker.track": [
- "st"
- ],
- "application/vnd.sbm.cid": [],
- "application/vnd.sbm.mid2": [],
- "application/vnd.scribus": [],
- "application/vnd.sealed.3df": [],
- "application/vnd.sealed.csf": [],
- "application/vnd.sealed.doc": [],
- "application/vnd.sealed.eml": [],
- "application/vnd.sealed.mht": [],
- "application/vnd.sealed.net": [],
- "application/vnd.sealed.ppt": [],
- "application/vnd.sealed.tiff": [],
- "application/vnd.sealed.xls": [],
- "application/vnd.sealedmedia.softseal.html": [],
- "application/vnd.sealedmedia.softseal.pdf": [],
- "application/vnd.seemail": [
- "see"
- ],
- "application/vnd.sema": [
- "sema"
- ],
- "application/vnd.semd": [
- "semd"
- ],
- "application/vnd.semf": [
- "semf"
- ],
- "application/vnd.shana.informed.formdata": [
- "ifm"
- ],
- "application/vnd.shana.informed.formtemplate": [
- "itp"
- ],
- "application/vnd.shana.informed.interchange": [
- "iif"
- ],
- "application/vnd.shana.informed.package": [
- "ipk"
- ],
- "application/vnd.simtech-mindmapper": [
- "twd",
- "twds"
- ],
- "application/vnd.smaf": [
- "mmf"
- ],
- "application/vnd.smart.notebook": [],
- "application/vnd.smart.teacher": [
- "teacher"
- ],
- "application/vnd.software602.filler.form+xml": [],
- "application/vnd.software602.filler.form-xml-zip": [],
- "application/vnd.solent.sdkm+xml": [
- "sdkm",
- "sdkd"
- ],
- "application/vnd.spotfire.dxp": [
- "dxp"
- ],
- "application/vnd.spotfire.sfs": [
- "sfs"
- ],
- "application/vnd.sss-cod": [],
- "application/vnd.sss-dtf": [],
- "application/vnd.sss-ntf": [],
- "application/vnd.stardivision.calc": [
- "sdc"
- ],
- "application/vnd.stardivision.draw": [
- "sda"
- ],
- "application/vnd.stardivision.impress": [
- "sdd"
- ],
- "application/vnd.stardivision.math": [
- "smf"
- ],
- "application/vnd.stardivision.writer": [
- "sdw",
- "vor"
- ],
- "application/vnd.stardivision.writer-global": [
- "sgl"
- ],
- "application/vnd.stepmania.package": [
- "smzip"
- ],
- "application/vnd.stepmania.stepchart": [
- "sm"
- ],
- "application/vnd.street-stream": [],
- "application/vnd.sun.xml.calc": [
- "sxc"
- ],
- "application/vnd.sun.xml.calc.template": [
- "stc"
- ],
- "application/vnd.sun.xml.draw": [
- "sxd"
- ],
- "application/vnd.sun.xml.draw.template": [
- "std"
- ],
- "application/vnd.sun.xml.impress": [
- "sxi"
- ],
- "application/vnd.sun.xml.impress.template": [
- "sti"
- ],
- "application/vnd.sun.xml.math": [
- "sxm"
- ],
- "application/vnd.sun.xml.writer": [
- "sxw"
- ],
- "application/vnd.sun.xml.writer.global": [
- "sxg"
- ],
- "application/vnd.sun.xml.writer.template": [
- "stw"
- ],
- "application/vnd.sun.wadl+xml": [],
- "application/vnd.sus-calendar": [
- "sus",
- "susp"
- ],
- "application/vnd.svd": [
- "svd"
- ],
- "application/vnd.swiftview-ics": [],
- "application/vnd.symbian.install": [
- "sis",
- "sisx"
- ],
- "application/vnd.syncml+xml": [
- "xsm"
- ],
- "application/vnd.syncml.dm+wbxml": [
- "bdm"
- ],
- "application/vnd.syncml.dm+xml": [
- "xdm"
- ],
- "application/vnd.syncml.dm.notification": [],
- "application/vnd.syncml.ds.notification": [],
- "application/vnd.tao.intent-module-archive": [
- "tao"
- ],
- "application/vnd.tcpdump.pcap": [
- "pcap",
- "cap",
- "dmp"
- ],
- "application/vnd.tmobile-livetv": [
- "tmo"
- ],
- "application/vnd.trid.tpt": [
- "tpt"
- ],
- "application/vnd.triscape.mxs": [
- "mxs"
- ],
- "application/vnd.trueapp": [
- "tra"
- ],
- "application/vnd.truedoc": [],
- "application/vnd.ubisoft.webplayer": [],
- "application/vnd.ufdl": [
- "ufd",
- "ufdl"
- ],
- "application/vnd.uiq.theme": [
- "utz"
- ],
- "application/vnd.umajin": [
- "umj"
- ],
- "application/vnd.unity": [
- "unityweb"
- ],
- "application/vnd.uoml+xml": [
- "uoml"
- ],
- "application/vnd.uplanet.alert": [],
- "application/vnd.uplanet.alert-wbxml": [],
- "application/vnd.uplanet.bearer-choice": [],
- "application/vnd.uplanet.bearer-choice-wbxml": [],
- "application/vnd.uplanet.cacheop": [],
- "application/vnd.uplanet.cacheop-wbxml": [],
- "application/vnd.uplanet.channel": [],
- "application/vnd.uplanet.channel-wbxml": [],
- "application/vnd.uplanet.list": [],
- "application/vnd.uplanet.list-wbxml": [],
- "application/vnd.uplanet.listcmd": [],
- "application/vnd.uplanet.listcmd-wbxml": [],
- "application/vnd.uplanet.signal": [],
- "application/vnd.vcx": [
- "vcx"
- ],
- "application/vnd.vd-study": [],
- "application/vnd.vectorworks": [],
- "application/vnd.verimatrix.vcas": [],
- "application/vnd.vidsoft.vidconference": [],
- "application/vnd.visio": [
- "vsd",
- "vst",
- "vss",
- "vsw"
- ],
- "application/vnd.visionary": [
- "vis"
- ],
- "application/vnd.vividence.scriptfile": [],
- "application/vnd.vsf": [
- "vsf"
- ],
- "application/vnd.wap.sic": [],
- "application/vnd.wap.slc": [],
- "application/vnd.wap.wbxml": [
- "wbxml"
- ],
- "application/vnd.wap.wmlc": [
- "wmlc"
- ],
- "application/vnd.wap.wmlscriptc": [
- "wmlsc"
- ],
- "application/vnd.webturbo": [
- "wtb"
- ],
- "application/vnd.wfa.wsc": [],
- "application/vnd.wmc": [],
- "application/vnd.wmf.bootstrap": [],
- "application/vnd.wolfram.mathematica": [],
- "application/vnd.wolfram.mathematica.package": [],
- "application/vnd.wolfram.player": [
- "nbp"
- ],
- "application/vnd.wordperfect": [
- "wpd"
- ],
- "application/vnd.wqd": [
- "wqd"
- ],
- "application/vnd.wrq-hp3000-labelled": [],
- "application/vnd.wt.stf": [
- "stf"
- ],
- "application/vnd.wv.csp+wbxml": [],
- "application/vnd.wv.csp+xml": [],
- "application/vnd.wv.ssp+xml": [],
- "application/vnd.xara": [
- "xar"
- ],
- "application/vnd.xfdl": [
- "xfdl"
- ],
- "application/vnd.xfdl.webform": [],
- "application/vnd.xmi+xml": [],
- "application/vnd.xmpie.cpkg": [],
- "application/vnd.xmpie.dpkg": [],
- "application/vnd.xmpie.plan": [],
- "application/vnd.xmpie.ppkg": [],
- "application/vnd.xmpie.xlim": [],
- "application/vnd.yamaha.hv-dic": [
- "hvd"
- ],
- "application/vnd.yamaha.hv-script": [
- "hvs"
- ],
- "application/vnd.yamaha.hv-voice": [
- "hvp"
- ],
- "application/vnd.yamaha.openscoreformat": [
- "osf"
- ],
- "application/vnd.yamaha.openscoreformat.osfpvg+xml": [
- "osfpvg"
- ],
- "application/vnd.yamaha.remote-setup": [],
- "application/vnd.yamaha.smaf-audio": [
- "saf"
- ],
- "application/vnd.yamaha.smaf-phrase": [
- "spf"
- ],
- "application/vnd.yamaha.through-ngn": [],
- "application/vnd.yamaha.tunnel-udpencap": [],
- "application/vnd.yellowriver-custom-menu": [
- "cmp"
- ],
- "application/vnd.zul": [
- "zir",
- "zirz"
- ],
- "application/vnd.zzazz.deck+xml": [
- "zaz"
- ],
- "application/voicexml+xml": [
- "vxml"
- ],
- "application/vq-rtcpxr": [],
- "application/watcherinfo+xml": [],
- "application/whoispp-query": [],
- "application/whoispp-response": [],
- "application/widget": [
- "wgt"
- ],
- "application/winhlp": [
- "hlp"
- ],
- "application/wita": [],
- "application/wordperfect5.1": [],
- "application/wsdl+xml": [
- "wsdl"
- ],
- "application/wspolicy+xml": [
- "wspolicy"
- ],
- "application/x-7z-compressed": [
- "7z"
- ],
- "application/x-abiword": [
- "abw"
- ],
- "application/x-ace-compressed": [
- "ace"
- ],
- "application/x-amf": [],
- "application/x-apple-diskimage": [
- "dmg"
- ],
- "application/x-authorware-bin": [
- "aab",
- "x32",
- "u32",
- "vox"
- ],
- "application/x-authorware-map": [
- "aam"
- ],
- "application/x-authorware-seg": [
- "aas"
- ],
- "application/x-bcpio": [
- "bcpio"
- ],
- "application/x-bittorrent": [
- "torrent"
- ],
- "application/x-blorb": [
- "blb",
- "blorb"
- ],
- "application/x-bzip": [
- "bz"
- ],
- "application/x-bzip2": [
- "bz2",
- "boz"
- ],
- "application/x-cbr": [
- "cbr",
- "cba",
- "cbt",
- "cbz",
- "cb7"
- ],
- "application/x-cdlink": [
- "vcd"
- ],
- "application/x-cfs-compressed": [
- "cfs"
- ],
- "application/x-chat": [
- "chat"
- ],
- "application/x-chess-pgn": [
- "pgn"
- ],
- "application/x-conference": [
- "nsc"
- ],
- "application/x-compress": [],
- "application/x-cpio": [
- "cpio"
- ],
- "application/x-csh": [
- "csh"
- ],
- "application/x-debian-package": [
- "deb",
- "udeb"
- ],
- "application/x-dgc-compressed": [
- "dgc"
- ],
- "application/x-director": [
- "dir",
- "dcr",
- "dxr",
- "cst",
- "cct",
- "cxt",
- "w3d",
- "fgd",
- "swa"
- ],
- "application/x-doom": [
- "wad"
- ],
- "application/x-dtbncx+xml": [
- "ncx"
- ],
- "application/x-dtbook+xml": [
- "dtb"
- ],
- "application/x-dtbresource+xml": [
- "res"
- ],
- "application/x-dvi": [
- "dvi"
- ],
- "application/x-envoy": [
- "evy"
- ],
- "application/x-eva": [
- "eva"
- ],
- "application/x-font-bdf": [
- "bdf"
- ],
- "application/x-font-dos": [],
- "application/x-font-framemaker": [],
- "application/x-font-ghostscript": [
- "gsf"
- ],
- "application/x-font-libgrx": [],
- "application/x-font-linux-psf": [
- "psf"
- ],
- "application/x-font-otf": [
- "otf"
- ],
- "application/x-font-pcf": [
- "pcf"
- ],
- "application/x-font-snf": [
- "snf"
- ],
- "application/x-font-speedo": [],
- "application/x-font-sunos-news": [],
- "application/x-font-ttf": [
- "ttf",
- "ttc"
- ],
- "application/x-font-type1": [
- "pfa",
- "pfb",
- "pfm",
- "afm"
- ],
- "application/font-woff": [
- "woff"
- ],
- "application/x-font-vfont": [],
- "application/x-freearc": [
- "arc"
- ],
- "application/x-futuresplash": [
- "spl"
- ],
- "application/x-gca-compressed": [
- "gca"
- ],
- "application/x-glulx": [
- "ulx"
- ],
- "application/x-gnumeric": [
- "gnumeric"
- ],
- "application/x-gramps-xml": [
- "gramps"
- ],
- "application/x-gtar": [
- "gtar"
- ],
- "application/x-gzip": [],
- "application/x-hdf": [
- "hdf"
- ],
- "application/x-install-instructions": [
- "install"
- ],
- "application/x-iso9660-image": [
- "iso"
- ],
- "application/x-java-jnlp-file": [
- "jnlp"
- ],
- "application/x-latex": [
- "latex"
- ],
- "application/x-lzh-compressed": [
- "lzh",
- "lha"
- ],
- "application/x-mie": [
- "mie"
- ],
- "application/x-mobipocket-ebook": [
- "prc",
- "mobi"
- ],
- "application/x-ms-application": [
- "application"
- ],
- "application/x-ms-shortcut": [
- "lnk"
- ],
- "application/x-ms-wmd": [
- "wmd"
- ],
- "application/x-ms-wmz": [
- "wmz"
- ],
- "application/x-ms-xbap": [
- "xbap"
- ],
- "application/x-msaccess": [
- "mdb"
- ],
- "application/x-msbinder": [
- "obd"
- ],
- "application/x-mscardfile": [
- "crd"
- ],
- "application/x-msclip": [
- "clp"
- ],
- "application/x-msdownload": [
- "exe",
- "dll",
- "com",
- "bat",
- "msi"
- ],
- "application/x-msmediaview": [
- "mvb",
- "m13",
- "m14"
- ],
- "application/x-msmetafile": [
- "wmf",
- "wmz",
- "emf",
- "emz"
- ],
- "application/x-msmoney": [
- "mny"
- ],
- "application/x-mspublisher": [
- "pub"
- ],
- "application/x-msschedule": [
- "scd"
- ],
- "application/x-msterminal": [
- "trm"
- ],
- "application/x-mswrite": [
- "wri"
- ],
- "application/x-netcdf": [
- "nc",
- "cdf"
- ],
- "application/x-nzb": [
- "nzb"
- ],
- "application/x-pkcs12": [
- "p12",
- "pfx"
- ],
- "application/x-pkcs7-certificates": [
- "p7b",
- "spc"
- ],
- "application/x-pkcs7-certreqresp": [
- "p7r"
- ],
- "application/x-rar-compressed": [
- "rar"
- ],
- "application/x-research-info-systems": [
- "ris"
- ],
- "application/x-sh": [
- "sh"
- ],
- "application/x-shar": [
- "shar"
- ],
- "application/x-shockwave-flash": [
- "swf"
- ],
- "application/x-silverlight-app": [
- "xap"
- ],
- "application/x-sql": [
- "sql"
- ],
- "application/x-stuffit": [
- "sit"
- ],
- "application/x-stuffitx": [
- "sitx"
- ],
- "application/x-subrip": [
- "srt"
- ],
- "application/x-sv4cpio": [
- "sv4cpio"
- ],
- "application/x-sv4crc": [
- "sv4crc"
- ],
- "application/x-t3vm-image": [
- "t3"
- ],
- "application/x-tads": [
- "gam"
- ],
- "application/x-tar": [
- "tar"
- ],
- "application/x-tcl": [
- "tcl"
- ],
- "application/x-tex": [
- "tex"
- ],
- "application/x-tex-tfm": [
- "tfm"
- ],
- "application/x-texinfo": [
- "texinfo",
- "texi"
- ],
- "application/x-tgif": [
- "obj"
- ],
- "application/x-ustar": [
- "ustar"
- ],
- "application/x-wais-source": [
- "src"
- ],
- "application/x-x509-ca-cert": [
- "der",
- "crt"
- ],
- "application/x-xfig": [
- "fig"
- ],
- "application/x-xliff+xml": [
- "xlf"
- ],
- "application/x-xpinstall": [
- "xpi"
- ],
- "application/x-xz": [
- "xz"
- ],
- "application/x-zmachine": [
- "z1",
- "z2",
- "z3",
- "z4",
- "z5",
- "z6",
- "z7",
- "z8"
- ],
- "application/x400-bp": [],
- "application/xaml+xml": [
- "xaml"
- ],
- "application/xcap-att+xml": [],
- "application/xcap-caps+xml": [],
- "application/xcap-diff+xml": [
- "xdf"
- ],
- "application/xcap-el+xml": [],
- "application/xcap-error+xml": [],
- "application/xcap-ns+xml": [],
- "application/xcon-conference-info-diff+xml": [],
- "application/xcon-conference-info+xml": [],
- "application/xenc+xml": [
- "xenc"
- ],
- "application/xhtml+xml": [
- "xhtml",
- "xht"
- ],
- "application/xhtml-voice+xml": [],
- "application/xml": [
- "xml",
- "xsl"
- ],
- "application/xml-dtd": [
- "dtd"
- ],
- "application/xml-external-parsed-entity": [],
- "application/xmpp+xml": [],
- "application/xop+xml": [
- "xop"
- ],
- "application/xproc+xml": [
- "xpl"
- ],
- "application/xslt+xml": [
- "xslt"
- ],
- "application/xspf+xml": [
- "xspf"
- ],
- "application/xv+xml": [
- "mxml",
- "xhvml",
- "xvml",
- "xvm"
- ],
- "application/yang": [
- "yang"
- ],
- "application/yin+xml": [
- "yin"
- ],
- "application/zip": [
- "zip"
- ],
- "audio/1d-interleaved-parityfec": [],
- "audio/32kadpcm": [],
- "audio/3gpp": [],
- "audio/3gpp2": [],
- "audio/ac3": [],
- "audio/adpcm": [
- "adp"
- ],
- "audio/amr": [],
- "audio/amr-wb": [],
- "audio/amr-wb+": [],
- "audio/asc": [],
- "audio/atrac-advanced-lossless": [],
- "audio/atrac-x": [],
- "audio/atrac3": [],
- "audio/basic": [
- "au",
- "snd"
- ],
- "audio/bv16": [],
- "audio/bv32": [],
- "audio/clearmode": [],
- "audio/cn": [],
- "audio/dat12": [],
- "audio/dls": [],
- "audio/dsr-es201108": [],
- "audio/dsr-es202050": [],
- "audio/dsr-es202211": [],
- "audio/dsr-es202212": [],
- "audio/dv": [],
- "audio/dvi4": [],
- "audio/eac3": [],
- "audio/evrc": [],
- "audio/evrc-qcp": [],
- "audio/evrc0": [],
- "audio/evrc1": [],
- "audio/evrcb": [],
- "audio/evrcb0": [],
- "audio/evrcb1": [],
- "audio/evrcwb": [],
- "audio/evrcwb0": [],
- "audio/evrcwb1": [],
- "audio/example": [],
- "audio/fwdred": [],
- "audio/g719": [],
- "audio/g722": [],
- "audio/g7221": [],
- "audio/g723": [],
- "audio/g726-16": [],
- "audio/g726-24": [],
- "audio/g726-32": [],
- "audio/g726-40": [],
- "audio/g728": [],
- "audio/g729": [],
- "audio/g7291": [],
- "audio/g729d": [],
- "audio/g729e": [],
- "audio/gsm": [],
- "audio/gsm-efr": [],
- "audio/gsm-hr-08": [],
- "audio/ilbc": [],
- "audio/ip-mr_v2.5": [],
- "audio/isac": [],
- "audio/l16": [],
- "audio/l20": [],
- "audio/l24": [],
- "audio/l8": [],
- "audio/lpc": [],
- "audio/midi": [
- "mid",
- "midi",
- "kar",
- "rmi"
- ],
- "audio/mobile-xmf": [],
- "audio/mp4": [
- "mp4a"
- ],
- "audio/mp4a-latm": [],
- "audio/mpa": [],
- "audio/mpa-robust": [],
- "audio/mpeg": [
- "mpga",
- "mp2",
- "mp2a",
- "mp3",
- "m2a",
- "m3a"
- ],
- "audio/mpeg4-generic": [],
- "audio/musepack": [],
- "audio/ogg": [
- "oga",
- "ogg",
- "spx"
- ],
- "audio/opus": [],
- "audio/parityfec": [],
- "audio/pcma": [],
- "audio/pcma-wb": [],
- "audio/pcmu-wb": [],
- "audio/pcmu": [],
- "audio/prs.sid": [],
- "audio/qcelp": [],
- "audio/red": [],
- "audio/rtp-enc-aescm128": [],
- "audio/rtp-midi": [],
- "audio/rtx": [],
- "audio/s3m": [
- "s3m"
- ],
- "audio/silk": [
- "sil"
- ],
- "audio/smv": [],
- "audio/smv0": [],
- "audio/smv-qcp": [],
- "audio/sp-midi": [],
- "audio/speex": [],
- "audio/t140c": [],
- "audio/t38": [],
- "audio/telephone-event": [],
- "audio/tone": [],
- "audio/uemclip": [],
- "audio/ulpfec": [],
- "audio/vdvi": [],
- "audio/vmr-wb": [],
- "audio/vnd.3gpp.iufp": [],
- "audio/vnd.4sb": [],
- "audio/vnd.audiokoz": [],
- "audio/vnd.celp": [],
- "audio/vnd.cisco.nse": [],
- "audio/vnd.cmles.radio-events": [],
- "audio/vnd.cns.anp1": [],
- "audio/vnd.cns.inf1": [],
- "audio/vnd.dece.audio": [
- "uva",
- "uvva"
- ],
- "audio/vnd.digital-winds": [
- "eol"
- ],
- "audio/vnd.dlna.adts": [],
- "audio/vnd.dolby.heaac.1": [],
- "audio/vnd.dolby.heaac.2": [],
- "audio/vnd.dolby.mlp": [],
- "audio/vnd.dolby.mps": [],
- "audio/vnd.dolby.pl2": [],
- "audio/vnd.dolby.pl2x": [],
- "audio/vnd.dolby.pl2z": [],
- "audio/vnd.dolby.pulse.1": [],
- "audio/vnd.dra": [
- "dra"
- ],
- "audio/vnd.dts": [
- "dts"
- ],
- "audio/vnd.dts.hd": [
- "dtshd"
- ],
- "audio/vnd.dvb.file": [],
- "audio/vnd.everad.plj": [],
- "audio/vnd.hns.audio": [],
- "audio/vnd.lucent.voice": [
- "lvp"
- ],
- "audio/vnd.ms-playready.media.pya": [
- "pya"
- ],
- "audio/vnd.nokia.mobile-xmf": [],
- "audio/vnd.nortel.vbk": [],
- "audio/vnd.nuera.ecelp4800": [
- "ecelp4800"
- ],
- "audio/vnd.nuera.ecelp7470": [
- "ecelp7470"
- ],
- "audio/vnd.nuera.ecelp9600": [
- "ecelp9600"
- ],
- "audio/vnd.octel.sbc": [],
- "audio/vnd.qcelp": [],
- "audio/vnd.rhetorex.32kadpcm": [],
- "audio/vnd.rip": [
- "rip"
- ],
- "audio/vnd.sealedmedia.softseal.mpeg": [],
- "audio/vnd.vmx.cvsd": [],
- "audio/vorbis": [],
- "audio/vorbis-config": [],
- "audio/webm": [
- "weba"
- ],
- "audio/x-aac": [
- "aac"
- ],
- "audio/x-aiff": [
- "aif",
- "aiff",
- "aifc"
- ],
- "audio/x-caf": [
- "caf"
- ],
- "audio/x-flac": [
- "flac"
- ],
- "audio/x-matroska": [
- "mka"
- ],
- "audio/x-mpegurl": [
- "m3u"
- ],
- "audio/x-ms-wax": [
- "wax"
- ],
- "audio/x-ms-wma": [
- "wma"
- ],
- "audio/x-pn-realaudio": [
- "ram",
- "ra"
- ],
- "audio/x-pn-realaudio-plugin": [
- "rmp"
- ],
- "audio/x-tta": [],
- "audio/x-wav": [
- "wav"
- ],
- "audio/xm": [
- "xm"
- ],
- "chemical/x-cdx": [
- "cdx"
- ],
- "chemical/x-cif": [
- "cif"
- ],
- "chemical/x-cmdf": [
- "cmdf"
- ],
- "chemical/x-cml": [
- "cml"
- ],
- "chemical/x-csml": [
- "csml"
- ],
- "chemical/x-pdb": [],
- "chemical/x-xyz": [
- "xyz"
- ],
- "image/bmp": [
- "bmp"
- ],
- "image/cgm": [
- "cgm"
- ],
- "image/example": [],
- "image/fits": [],
- "image/g3fax": [
- "g3"
- ],
- "image/gif": [
- "gif"
- ],
- "image/ief": [
- "ief"
- ],
- "image/jp2": [],
- "image/jpeg": [
- "jpeg",
- "jpg",
- "jpe"
- ],
- "image/jpm": [],
- "image/jpx": [],
- "image/ktx": [
- "ktx"
- ],
- "image/naplps": [],
- "image/png": [
- "png"
- ],
- "image/prs.btif": [
- "btif"
- ],
- "image/prs.pti": [],
- "image/sgi": [
- "sgi"
- ],
- "image/svg+xml": [
- "svg",
- "svgz"
- ],
- "image/t38": [],
- "image/tiff": [
- "tiff",
- "tif"
- ],
- "image/tiff-fx": [],
- "image/vnd.adobe.photoshop": [
- "psd"
- ],
- "image/vnd.cns.inf2": [],
- "image/vnd.dece.graphic": [
- "uvi",
- "uvvi",
- "uvg",
- "uvvg"
- ],
- "image/vnd.dvb.subtitle": [
- "sub"
- ],
- "image/vnd.djvu": [
- "djvu",
- "djv"
- ],
- "image/vnd.dwg": [
- "dwg"
- ],
- "image/vnd.dxf": [
- "dxf"
- ],
- "image/vnd.fastbidsheet": [
- "fbs"
- ],
- "image/vnd.fpx": [
- "fpx"
- ],
- "image/vnd.fst": [
- "fst"
- ],
- "image/vnd.fujixerox.edmics-mmr": [
- "mmr"
- ],
- "image/vnd.fujixerox.edmics-rlc": [
- "rlc"
- ],
- "image/vnd.globalgraphics.pgb": [],
- "image/vnd.microsoft.icon": [],
- "image/vnd.mix": [],
- "image/vnd.ms-modi": [
- "mdi"
- ],
- "image/vnd.ms-photo": [
- "wdp"
- ],
- "image/vnd.net-fpx": [
- "npx"
- ],
- "image/vnd.radiance": [],
- "image/vnd.sealed.png": [],
- "image/vnd.sealedmedia.softseal.gif": [],
- "image/vnd.sealedmedia.softseal.jpg": [],
- "image/vnd.svf": [],
- "image/vnd.wap.wbmp": [
- "wbmp"
- ],
- "image/vnd.xiff": [
- "xif"
- ],
- "image/webp": [
- "webp"
- ],
- "image/x-3ds": [
- "3ds"
- ],
- "image/x-cmu-raster": [
- "ras"
- ],
- "image/x-cmx": [
- "cmx"
- ],
- "image/x-freehand": [
- "fh",
- "fhc",
- "fh4",
- "fh5",
- "fh7"
- ],
- "image/x-icon": [
- "ico"
- ],
- "image/x-mrsid-image": [
- "sid"
- ],
- "image/x-pcx": [
- "pcx"
- ],
- "image/x-pict": [
- "pic",
- "pct"
- ],
- "image/x-portable-anymap": [
- "pnm"
- ],
- "image/x-portable-bitmap": [
- "pbm"
- ],
- "image/x-portable-graymap": [
- "pgm"
- ],
- "image/x-portable-pixmap": [
- "ppm"
- ],
- "image/x-rgb": [
- "rgb"
- ],
- "image/x-tga": [
- "tga"
- ],
- "image/x-xbitmap": [
- "xbm"
- ],
- "image/x-xpixmap": [
- "xpm"
- ],
- "image/x-xwindowdump": [
- "xwd"
- ],
- "message/cpim": [],
- "message/delivery-status": [],
- "message/disposition-notification": [],
- "message/example": [],
- "message/external-body": [],
- "message/feedback-report": [],
- "message/global": [],
- "message/global-delivery-status": [],
- "message/global-disposition-notification": [],
- "message/global-headers": [],
- "message/http": [],
- "message/imdn+xml": [],
- "message/news": [],
- "message/partial": [],
- "message/rfc822": [
- "eml",
- "mime"
- ],
- "message/s-http": [],
- "message/sip": [],
- "message/sipfrag": [],
- "message/tracking-status": [],
- "message/vnd.si.simp": [],
- "model/example": [],
- "model/iges": [
- "igs",
- "iges"
- ],
- "model/mesh": [
- "msh",
- "mesh",
- "silo"
- ],
- "model/vnd.collada+xml": [
- "dae"
- ],
- "model/vnd.dwf": [
- "dwf"
- ],
- "model/vnd.flatland.3dml": [],
- "model/vnd.gdl": [
- "gdl"
- ],
- "model/vnd.gs-gdl": [],
- "model/vnd.gs.gdl": [],
- "model/vnd.gtw": [
- "gtw"
- ],
- "model/vnd.moml+xml": [],
- "model/vnd.mts": [
- "mts"
- ],
- "model/vnd.parasolid.transmit.binary": [],
- "model/vnd.parasolid.transmit.text": [],
- "model/vnd.vtu": [
- "vtu"
- ],
- "model/vrml": [
- "wrl",
- "vrml"
- ],
- "model/x3d+binary": [
- "x3db",
- "x3dbz"
- ],
- "model/x3d+vrml": [
- "x3dv",
- "x3dvz"
- ],
- "model/x3d+xml": [
- "x3d",
- "x3dz"
- ],
- "multipart/alternative": [],
- "multipart/appledouble": [],
- "multipart/byteranges": [],
- "multipart/digest": [],
- "multipart/encrypted": [],
- "multipart/example": [],
- "multipart/form-data": [],
- "multipart/header-set": [],
- "multipart/mixed": [],
- "multipart/parallel": [],
- "multipart/related": [],
- "multipart/report": [],
- "multipart/signed": [],
- "multipart/voice-message": [],
- "text/1d-interleaved-parityfec": [],
- "text/cache-manifest": [
- "appcache"
- ],
- "text/calendar": [
- "ics",
- "ifb"
- ],
- "text/css": [
- "css"
- ],
- "text/csv": [
- "csv"
- ],
- "text/directory": [],
- "text/dns": [],
- "text/ecmascript": [],
- "text/enriched": [],
- "text/example": [],
- "text/fwdred": [],
- "text/html": [
- "html",
- "htm"
- ],
- "text/javascript": [],
- "text/n3": [
- "n3"
- ],
- "text/parityfec": [],
- "text/plain": [
- "txt",
- "text",
- "conf",
- "def",
- "list",
- "log",
- "in"
- ],
- "text/prs.fallenstein.rst": [],
- "text/prs.lines.tag": [
- "dsc"
- ],
- "text/vnd.radisys.msml-basic-layout": [],
- "text/red": [],
- "text/rfc822-headers": [],
- "text/richtext": [
- "rtx"
- ],
- "text/rtf": [],
- "text/rtp-enc-aescm128": [],
- "text/rtx": [],
- "text/sgml": [
- "sgml",
- "sgm"
- ],
- "text/t140": [],
- "text/tab-separated-values": [
- "tsv"
- ],
- "text/troff": [
- "t",
- "tr",
- "roff",
- "man",
- "me",
- "ms"
- ],
- "text/turtle": [
- "ttl"
- ],
- "text/ulpfec": [],
- "text/uri-list": [
- "uri",
- "uris",
- "urls"
- ],
- "text/vcard": [
- "vcard"
- ],
- "text/vnd.abc": [],
- "text/vnd.curl": [
- "curl"
- ],
- "text/vnd.curl.dcurl": [
- "dcurl"
- ],
- "text/vnd.curl.scurl": [
- "scurl"
- ],
- "text/vnd.curl.mcurl": [
- "mcurl"
- ],
- "text/vnd.dmclientscript": [],
- "text/vnd.dvb.subtitle": [
- "sub"
- ],
- "text/vnd.esmertec.theme-descriptor": [],
- "text/vnd.fly": [
- "fly"
- ],
- "text/vnd.fmi.flexstor": [
- "flx"
- ],
- "text/vnd.graphviz": [
- "gv"
- ],
- "text/vnd.in3d.3dml": [
- "3dml"
- ],
- "text/vnd.in3d.spot": [
- "spot"
- ],
- "text/vnd.iptc.newsml": [],
- "text/vnd.iptc.nitf": [],
- "text/vnd.latex-z": [],
- "text/vnd.motorola.reflex": [],
- "text/vnd.ms-mediapackage": [],
- "text/vnd.net2phone.commcenter.command": [],
- "text/vnd.si.uricatalogue": [],
- "text/vnd.sun.j2me.app-descriptor": [
- "jad"
- ],
- "text/vnd.trolltech.linguist": [],
- "text/vnd.wap.si": [],
- "text/vnd.wap.sl": [],
- "text/vnd.wap.wml": [
- "wml"
- ],
- "text/vnd.wap.wmlscript": [
- "wmls"
- ],
- "text/x-asm": [
- "s",
- "asm"
- ],
- "text/x-c": [
- "c",
- "cc",
- "cxx",
- "cpp",
- "h",
- "hh",
- "dic"
- ],
- "text/x-fortran": [
- "f",
- "for",
- "f77",
- "f90"
- ],
- "text/x-java-source": [
- "java"
- ],
- "text/x-opml": [
- "opml"
- ],
- "text/x-pascal": [
- "p",
- "pas"
- ],
- "text/x-nfo": [
- "nfo"
- ],
- "text/x-setext": [
- "etx"
- ],
- "text/x-sfv": [
- "sfv"
- ],
- "text/x-uuencode": [
- "uu"
- ],
- "text/x-vcalendar": [
- "vcs"
- ],
- "text/x-vcard": [
- "vcf"
- ],
- "text/xml": [],
- "text/xml-external-parsed-entity": [],
- "video/1d-interleaved-parityfec": [],
- "video/3gpp": [
- "3gp"
- ],
- "video/3gpp-tt": [],
- "video/3gpp2": [
- "3g2"
- ],
- "video/bmpeg": [],
- "video/bt656": [],
- "video/celb": [],
- "video/dv": [],
- "video/example": [],
- "video/h261": [
- "h261"
- ],
- "video/h263": [
- "h263"
- ],
- "video/h263-1998": [],
- "video/h263-2000": [],
- "video/h264": [
- "h264"
- ],
- "video/h264-rcdo": [],
- "video/h264-svc": [],
- "video/jpeg": [
- "jpgv"
- ],
- "video/jpeg2000": [],
- "video/jpm": [
- "jpm",
- "jpgm"
- ],
- "video/mj2": [
- "mj2",
- "mjp2"
- ],
- "video/mp1s": [],
- "video/mp2p": [],
- "video/mp2t": [],
- "video/mp4": [
- "mp4",
- "mp4v",
- "mpg4"
- ],
- "video/mp4v-es": [],
- "video/mpeg": [
- "mpeg",
- "mpg",
- "mpe",
- "m1v",
- "m2v"
- ],
- "video/mpeg4-generic": [],
- "video/mpv": [],
- "video/nv": [],
- "video/ogg": [
- "ogv"
- ],
- "video/parityfec": [],
- "video/pointer": [],
- "video/quicktime": [
- "qt",
- "mov"
- ],
- "video/raw": [],
- "video/rtp-enc-aescm128": [],
- "video/rtx": [],
- "video/smpte292m": [],
- "video/ulpfec": [],
- "video/vc1": [],
- "video/vnd.cctv": [],
- "video/vnd.dece.hd": [
- "uvh",
- "uvvh"
- ],
- "video/vnd.dece.mobile": [
- "uvm",
- "uvvm"
- ],
- "video/vnd.dece.mp4": [],
- "video/vnd.dece.pd": [
- "uvp",
- "uvvp"
- ],
- "video/vnd.dece.sd": [
- "uvs",
- "uvvs"
- ],
- "video/vnd.dece.video": [
- "uvv",
- "uvvv"
- ],
- "video/vnd.directv.mpeg": [],
- "video/vnd.directv.mpeg-tts": [],
- "video/vnd.dlna.mpeg-tts": [],
- "video/vnd.dvb.file": [
- "dvb"
- ],
- "video/vnd.fvt": [
- "fvt"
- ],
- "video/vnd.hns.video": [],
- "video/vnd.iptvforum.1dparityfec-1010": [],
- "video/vnd.iptvforum.1dparityfec-2005": [],
- "video/vnd.iptvforum.2dparityfec-1010": [],
- "video/vnd.iptvforum.2dparityfec-2005": [],
- "video/vnd.iptvforum.ttsavc": [],
- "video/vnd.iptvforum.ttsmpeg2": [],
- "video/vnd.motorola.video": [],
- "video/vnd.motorola.videop": [],
- "video/vnd.mpegurl": [
- "mxu",
- "m4u"
- ],
- "video/vnd.ms-playready.media.pyv": [
- "pyv"
- ],
- "video/vnd.nokia.interleaved-multimedia": [],
- "video/vnd.nokia.videovoip": [],
- "video/vnd.objectvideo": [],
- "video/vnd.sealed.mpeg1": [],
- "video/vnd.sealed.mpeg4": [],
- "video/vnd.sealed.swf": [],
- "video/vnd.sealedmedia.softseal.mov": [],
- "video/vnd.uvvu.mp4": [
- "uvu",
- "uvvu"
- ],
- "video/vnd.vivo": [
- "viv"
- ],
- "video/webm": [
- "webm"
- ],
- "video/x-f4v": [
- "f4v"
- ],
- "video/x-fli": [
- "fli"
- ],
- "video/x-flv": [
- "flv"
- ],
- "video/x-m4v": [
- "m4v"
- ],
- "video/x-matroska": [
- "mkv",
- "mk3d",
- "mks"
- ],
- "video/x-mng": [
- "mng"
- ],
- "video/x-ms-asf": [
- "asf",
- "asx"
- ],
- "video/x-ms-vob": [
- "vob"
- ],
- "video/x-ms-wm": [
- "wm"
- ],
- "video/x-ms-wmv": [
- "wmv"
- ],
- "video/x-ms-wmx": [
- "wmx"
- ],
- "video/x-ms-wvx": [
- "wvx"
- ],
- "video/x-msvideo": [
- "avi"
- ],
- "video/x-sgi-movie": [
- "movie"
- ],
- "video/x-smv": [
- "smv"
- ],
- "x-conference/x-cooltalk": [
- "ice"
- ]
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/node.json b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/node.json
deleted file mode 100755
index ad50d61..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/lib/node.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "text/vtt": [
- "vtt"
- ],
- "application/x-chrome-extension": [
- "crx"
- ],
- "text/x-component": [
- "htc"
- ],
- "text/cache-manifest": [
- "manifest"
- ],
- "application/octet-stream": [
- "buffer"
- ],
- "application/mp4": [
- "m4p"
- ],
- "audio/mp4": [
- "m4a"
- ],
- "video/MP2T": [
- "ts"
- ],
- "application/x-web-app-manifest+json": [
- "webapp"
- ],
- "text/x-lua": [
- "lua"
- ],
- "application/x-lua-bytecode": [
- "luac"
- ],
- "text/x-markdown": [
- "markdown",
- "md",
- "mkd"
- ],
- "text/plain": [
- "ini"
- ],
- "application/dash+xml": [
- "mdp"
- ],
- "font/opentype": [
- "otf"
- ],
- "application/json": [
- "map"
- ],
- "application/xml": [
- "xsd"
- ]
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/package.json b/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/package.json
deleted file mode 100755
index 01bb1c1..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/mime-types/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "mime-types",
- "description": "The ultimate javascript content-type utility.",
- "version": "1.0.1",
- "author": {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- },
- "contributors": [
- {
- "name": "Jeremiah Senkpiel",
- "email": "fishrock123@rocketmail.com",
- "url": "https://searchbeam.jit.su"
- }
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/expressjs/mime-types"
- },
- "license": "MIT",
- "main": "lib",
- "devDependencies": {
- "co": "3",
- "cogent": "0",
- "mocha": "1",
- "should": "3"
- },
- "engines": {
- "node": ">= 0.8.0"
- },
- "scripts": {
- "test": "make test"
- },
- "readme": "# mime-types\n[![NPM version](https://badge.fury.io/js/mime-types.svg)](https://badge.fury.io/js/mime-types) [![Build Status](https://travis-ci.org/expressjs/mime-types.svg?branch=master)](https://travis-ci.org/expressjs/mime-types)\n\nThe ultimate javascript content-type utility.\n\n### Install\n\n```sh\n$ npm install mime-types\n```\n\n#### Similar to [node-mime](https://github.com/broofa/node-mime), except:\n\n- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.\n- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.\n- Additional mime types are added such as jade and stylus. Feel free to add more!\n- Browser support via Browserify and Component by converting lists to JSON files.\n\nOtherwise, the API is compatible.\n\n### Adding Types\n\nIf you'd like to add additional types,\nsimply create a PR adding the type to `custom.json` and\na reference link to the [sources](SOURCES.md).\n\nDo __NOT__ edit `mime.json` or `node.json`.\nThose are pulled using `build.js`.\nYou should only touch `custom.json`.\n\n## API\n\n```js\nvar mime = require('mime-types')\n```\n\nAll functions return `false` if input is invalid or not found.\n\n### mime.lookup(path)\n\nLookup the content-type associated with a file.\n\n```js\nmime.lookup('json') // 'application/json'\nmime.lookup('.md') // 'text/x-markdown'\nmime.lookup('file.html') // 'text/html'\nmime.lookup('folder/file.js') // 'application/javascript'\n\nmime.lookup('cats') // false\n```\n\n### mime.contentType(type)\n\nCreate a full content-type header given a content-type or extension.\n\n```js\nmime.contentType('markdown') // 'text/x-markdown; charset=utf-8'\nmime.contentType('file.json') // 'application/json; charset=utf-8'\n```\n\n### mime.extension(type)\n\nGet the default extension for a content-type.\n\n```js\nmime.extension('application/octet-stream') // 'bin'\n```\n\n### mime.charset(type)\n\nLookup the implied default charset of a content-type.\n\n```js\nmime.charset('text/x-markdown') // 'UTF-8'\n```\n\n### mime.types[extension] = type\n\nA map of content-types by extension.\n\n### mime.extensions[type] = [extensions]\n\nA map of extensions by content-type.\n\n### mime.define(types)\n\nGlobally add definitions.\n`types` must be an object of the form:\n\n```js\n{\n \"\": [extensions...],\n \"\": [extensions...]\n}\n```\n\nSee the `.json` files in `lib/` for examples.\n\n## License\n\n[MIT](LICENSE)\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/expressjs/mime-types/issues"
- },
- "_id": "mime-types@1.0.1",
- "_from": "mime-types@~1.0.0"
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/.npmignore b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/.npmignore
deleted file mode 100755
index a6a8d17..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-examples
-test
-.travis.yml
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/LICENSE b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/LICENSE
deleted file mode 100755
index 42ca2e7..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Original "Negotiator" program Copyright Federico Romero
-Port to JavaScript Copyright Isaac Z. Schlueter
-
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/charset.js b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/charset.js
deleted file mode 100755
index d231291..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/charset.js
+++ /dev/null
@@ -1,90 +0,0 @@
-module.exports = preferredCharsets;
-preferredCharsets.preferredCharsets = preferredCharsets;
-
-function parseAcceptCharset(accept) {
- return accept.split(',').map(function(e) {
- return parseCharset(e.trim());
- }).filter(function(e) {
- return e;
- });
-}
-
-function parseCharset(s) {
- var match = s.match(/^\s*(\S+?)\s*(?:;(.*))?$/);
- if (!match) return null;
-
- var charset = match[1];
- var q = 1;
- if (match[2]) {
- var params = match[2].split(';')
- for (var i = 0; i < params.length; i ++) {
- var p = params[i].trim().split('=');
- if (p[0] === 'q') {
- q = parseFloat(p[1]);
- break;
- }
- }
- }
-
- return {
- charset: charset,
- q: q
- };
-}
-
-function getCharsetPriority(charset, accepted) {
- return (accepted.map(function(a) {
- return specify(charset, a);
- }).filter(Boolean).sort(function (a, b) {
- if(a.s == b.s) {
- return a.q > b.q ? -1 : 1;
- } else {
- return a.s > b.s ? -1 : 1;
- }
- })[0] || {s: 0, q:0});
-}
-
-function specify(charset, spec) {
- var s = 0;
- if(spec.charset === charset){
- s |= 1;
- } else if (spec.charset !== '*' ) {
- return null
- }
-
- return {
- s: s,
- q: spec.q,
- }
-}
-
-function preferredCharsets(accept, provided) {
- // RFC 2616 sec 14.2: no header = *
- accept = parseAcceptCharset(accept === undefined ? '*' : accept || '');
- if (provided) {
- return provided.map(function(type) {
- return [type, getCharsetPriority(type, accept)];
- }).filter(function(pair) {
- return pair[1].q > 0;
- }).sort(function(a, b) {
- var pa = a[1];
- var pb = b[1];
- if(pa.q == pb.q) {
- return pa.s < pb.s ? 1 : -1;
- } else {
- return pa.q < pb.q ? 1 : -1;
- }
- }).map(function(pair) {
- return pair[0];
- });
- } else {
- return accept.sort(function (a, b) {
- // revsort
- return a.q < b.q ? 1 : -1;
- }).filter(function(type) {
- return type.q > 0;
- }).map(function(type) {
- return type.charset;
- });
- }
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/encoding.js b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/encoding.js
deleted file mode 100755
index 207291d..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/encoding.js
+++ /dev/null
@@ -1,120 +0,0 @@
-module.exports = preferredEncodings;
-preferredEncodings.preferredEncodings = preferredEncodings;
-
-function parseAcceptEncoding(accept) {
- var acceptableEncodings;
-
- if (accept) {
- acceptableEncodings = accept.split(',').map(function(e) {
- return parseEncoding(e.trim());
- });
- } else {
- acceptableEncodings = [];
- }
-
- if (!acceptableEncodings.some(function(e) {
- return e && specify('identity', e);
- })) {
- /*
- * If identity doesn't explicitly appear in the accept-encoding header,
- * it's added to the list of acceptable encoding with the lowest q
- *
- */
- var lowestQ = 1;
-
- for(var i = 0; i < acceptableEncodings.length; i++){
- var e = acceptableEncodings[i];
- if(e && e.q < lowestQ){
- lowestQ = e.q;
- }
- }
- acceptableEncodings.push({
- encoding: 'identity',
- q: lowestQ / 2,
- });
- }
-
- return acceptableEncodings.filter(function(e) {
- return e;
- });
-}
-
-function parseEncoding(s) {
- var match = s.match(/^\s*(\S+?)\s*(?:;(.*))?$/);
-
- if (!match) return null;
-
- var encoding = match[1];
- var q = 1;
- if (match[2]) {
- var params = match[2].split(';');
- for (var i = 0; i < params.length; i ++) {
- var p = params[i].trim().split('=');
- if (p[0] === 'q') {
- q = parseFloat(p[1]);
- break;
- }
- }
- }
-
- return {
- encoding: encoding,
- q: q
- };
-}
-
-function getEncodingPriority(encoding, accepted) {
- return (accepted.map(function(a) {
- return specify(encoding, a);
- }).filter(Boolean).sort(function (a, b) {
- if(a.s == b.s) {
- return a.q > b.q ? -1 : 1;
- } else {
- return a.s > b.s ? -1 : 1;
- }
- })[0] || {s: 0, q: 0});
-}
-
-function specify(encoding, spec) {
- var s = 0;
- if(spec.encoding === encoding){
- s |= 1;
- } else if (spec.encoding !== '*' ) {
- return null
- }
-
- return {
- s: s,
- q: spec.q,
- }
-};
-
-function preferredEncodings(accept, provided) {
- accept = parseAcceptEncoding(accept || '');
- if (provided) {
- return provided.map(function(type) {
- return [type, getEncodingPriority(type, accept)];
- }).filter(function(pair) {
- return pair[1].q > 0;
- }).sort(function(a, b) {
- var pa = a[1];
- var pb = b[1];
- if(pa.q == pb.q) {
- return pa.s < pb.s ? 1 : -1;
- } else {
- return pa.q < pb.q ? 1 : -1;
- }
- }).map(function(pair) {
- return pair[0];
- });
- } else {
- return accept.sort(function (a, b) {
- // revsort
- return a.q < b.q ? 1 : -1;
- }).filter(function(type){
- return type.q > 0;
- }).map(function(type) {
- return type.encoding;
- });
- }
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/language.js b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/language.js
deleted file mode 100755
index 63036c7..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/language.js
+++ /dev/null
@@ -1,103 +0,0 @@
-module.exports = preferredLanguages;
-preferredLanguages.preferredLanguages = preferredLanguages;
-
-function parseAcceptLanguage(accept) {
- return accept.split(',').map(function(e) {
- return parseLanguage(e.trim());
- }).filter(function(e) {
- return e;
- });
-}
-
-function parseLanguage(s) {
- var match = s.match(/^\s*(\S+?)(?:-(\S+?))?\s*(?:;(.*))?$/);
- if (!match) return null;
-
- var prefix = match[1],
- suffix = match[2],
- full = prefix;
-
- if (suffix) full += "-" + suffix;
-
- var q = 1;
- if (match[3]) {
- var params = match[3].split(';')
- for (var i = 0; i < params.length; i ++) {
- var p = params[i].split('=');
- if (p[0] === 'q') q = parseFloat(p[1]);
- }
- }
-
- return {
- prefix: prefix,
- suffix: suffix,
- q: q,
- full: full
- };
-}
-
-function getLanguagePriority(language, accepted) {
- return (accepted.map(function(a){
- return specify(language, a);
- }).filter(Boolean).sort(function (a, b) {
- if(a.s == b.s) {
- return a.q > b.q ? -1 : 1;
- } else {
- return a.s > b.s ? -1 : 1;
- }
- })[0] || {s: 0, q: 0});
-}
-
-function specify(language, spec) {
- var p = parseLanguage(language)
- if (!p) return null;
- var s = 0;
- if(spec.full === p.full){
- s |= 4;
- } else if (spec.prefix === p.full) {
- s |= 2;
- } else if (spec.full === p.prefix) {
- s |= 1;
- } else if (spec.full !== '*' ) {
- return null
- }
-
- return {
- s: s,
- q: spec.q,
- }
-};
-
-function preferredLanguages(accept, provided) {
- // RFC 2616 sec 14.4: no header = *
- accept = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
- if (provided) {
-
- var ret = provided.map(function(type) {
- return [type, getLanguagePriority(type, accept)];
- }).filter(function(pair) {
- return pair[1].q > 0;
- }).sort(function(a, b) {
- var pa = a[1];
- var pb = b[1];
- if(pa.q == pb.q) {
- return pa.s < pb.s ? 1 : -1;
- } else {
- return pa.q < pb.q ? 1 : -1;
- }
- }).map(function(pair) {
- return pair[0];
- });
- return ret;
-
- } else {
- return accept.sort(function (a, b) {
- // revsort
- return a.q < b.q ? 1 : -1;
- }).filter(function(type) {
- return type.q > 0;
- }).map(function(type) {
- return type.full;
- });
- }
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/mediaType.js b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/mediaType.js
deleted file mode 100755
index f4dc1ca..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/mediaType.js
+++ /dev/null
@@ -1,125 +0,0 @@
-module.exports = preferredMediaTypes;
-preferredMediaTypes.preferredMediaTypes = preferredMediaTypes;
-
-function parseAccept(accept) {
- return accept.split(',').map(function(e) {
- return parseMediaType(e.trim());
- }).filter(function(e) {
- return e;
- });
-};
-
-function parseMediaType(s) {
- var match = s.match(/\s*(\S+?)\/([^;\s]+)\s*(?:;(.*))?/);
- if (!match) return null;
-
- var type = match[1],
- subtype = match[2],
- full = "" + type + "/" + subtype,
- params = {},
- q = 1;
-
- if (match[3]) {
- params = match[3].split(';').map(function(s) {
- return s.trim().split('=');
- }).reduce(function (set, p) {
- set[p[0]] = p[1];
- return set
- }, params);
-
- if (params.q != null) {
- q = parseFloat(params.q);
- delete params.q;
- }
- }
-
- return {
- type: type,
- subtype: subtype,
- params: params,
- q: q,
- full: full
- };
-}
-
-function getMediaTypePriority(type, accepted) {
- return (accepted.map(function(a) {
- return specify(type, a);
- }).filter(Boolean).sort(function (a, b) {
- if(a.s == b.s) {
- return a.q > b.q ? -1 : 1;
- } else {
- return a.s > b.s ? -1 : 1;
- }
- })[0] || {s: 0, q: 0});
-}
-
-function specify(type, spec) {
- var p = parseMediaType(type);
- var s = 0;
-
- if (!p) {
- return null;
- }
-
- if(spec.type == p.type) {
- s |= 4
- } else if(spec.type != '*') {
- return null;
- }
-
- if(spec.subtype == p.subtype) {
- s |= 2
- } else if(spec.subtype != '*') {
- return null;
- }
-
- var keys = Object.keys(spec.params);
- if (keys.length > 0) {
- if (keys.every(function (k) {
- return spec.params[k] == '*' || spec.params[k] == p.params[k];
- })) {
- s |= 1
- } else {
- return null
- }
- }
-
- return {
- q: spec.q,
- s: s,
- }
-
-}
-
-function preferredMediaTypes(accept, provided) {
- // RFC 2616 sec 14.2: no header = */*
- accept = parseAccept(accept === undefined ? '*/*' : accept || '');
- if (provided) {
- return provided.map(function(type) {
- return [type, getMediaTypePriority(type, accept)];
- }).filter(function(pair) {
- return pair[1].q > 0;
- }).sort(function(a, b) {
- var pa = a[1];
- var pb = b[1];
- if(pa.q == pb.q) {
- return pa.s < pb.s ? 1 : -1;
- } else {
- return pa.q < pb.q ? 1 : -1;
- }
- }).map(function(pair) {
- return pair[0];
- });
-
- } else {
- return accept.sort(function (a, b) {
- // revsort
- return a.q < b.q ? 1 : -1;
- }).filter(function(type) {
- return type.q > 0;
- }).map(function(type) {
- return type.full;
- });
- }
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/negotiator.js b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/negotiator.js
deleted file mode 100755
index ba0c48b..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/lib/negotiator.js
+++ /dev/null
@@ -1,37 +0,0 @@
-module.exports = Negotiator;
-Negotiator.Negotiator = Negotiator;
-
-function Negotiator(request) {
- if (!(this instanceof Negotiator)) return new Negotiator(request);
- this.request = request;
-}
-
-var set = { charset: 'accept-charset',
- encoding: 'accept-encoding',
- language: 'accept-language',
- mediaType: 'accept' };
-
-
-function capitalize(string){
- return string.charAt(0).toUpperCase() + string.slice(1);
-}
-
-Object.keys(set).forEach(function (k) {
- var header = set[k],
- method = require('./'+k+'.js'),
- singular = k,
- plural = k + 's';
-
- Negotiator.prototype[plural] = function (available) {
- return method(this.request.headers[header], available);
- };
-
- Negotiator.prototype[singular] = function(available) {
- var set = this[plural](available);
- if (set) return set[0];
- };
-
- // Keep preferred* methods for legacy compatibility
- Negotiator.prototype['preferred'+capitalize(plural)] = Negotiator.prototype[plural];
- Negotiator.prototype['preferred'+capitalize(singular)] = Negotiator.prototype[singular];
-})
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/package.json b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/package.json
deleted file mode 100755
index 8c25b3e..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "negotiator",
- "description": "HTTP content negotiation",
- "version": "0.4.7",
- "author": {
- "name": "Federico Romero",
- "email": "federico.romero@outboxlabs.com"
- },
- "contributors": [
- {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- }
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/federomero/negotiator.git"
- },
- "keywords": [
- "http",
- "content negotiation",
- "accept",
- "accept-language",
- "accept-encoding",
- "accept-charset"
- ],
- "engine": "node >= 0.6",
- "license": "MIT",
- "devDependencies": {
- "nodeunit": "0.8.x"
- },
- "scripts": {
- "test": "nodeunit test"
- },
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "main": "lib/negotiator.js",
- "readme": "# Negotiator [![Build Status](https://travis-ci.org/federomero/negotiator.png)](https://travis-ci.org/federomero/negotiator)\n\nAn HTTP content negotiator for node.js written in javascript.\n\n# Accept Negotiation\n\n Negotiator = require('negotiator')\n\n availableMediaTypes = ['text/html', 'text/plain', 'application/json']\n\n // The negotiator constructor receives a request object\n negotiator = new Negotiator(request)\n\n // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'\n\n negotiator.mediaTypes()\n // -> ['text/html', 'image/jpeg', 'application/*']\n\n negotiator.mediaTypes(availableMediaTypes)\n // -> ['text/html', 'application/json']\n\n negotiator.mediaType(availableMediaTypes)\n // -> 'text/html'\n\nYou can check a working example at `examples/accept.js`.\n\n## Methods\n\n`mediaTypes(availableMediaTypes)`:\n\nReturns an array of preferred media types ordered by priority from a list of available media types.\n\n`mediaType(availableMediaType)`:\n\nReturns the top preferred media type from a list of available media types.\n\n# Accept-Language Negotiation\n\n Negotiator = require('negotiator')\n\n negotiator = new Negotiator(request)\n\n availableLanguages = 'en', 'es', 'fr'\n\n // Let's say Accept-Language header is 'en;q=0.8, es, pt'\n\n negotiator.languages()\n // -> ['es', 'pt', 'en']\n\n negotiator.languages(availableLanguages)\n // -> ['es', 'en']\n\n language = negotiator.language(availableLanguages)\n // -> 'es'\n\nYou can check a working example at `examples/language.js`.\n\n## Methods\n\n`languages(availableLanguages)`:\n\nReturns an array of preferred languages ordered by priority from a list of available languages.\n\n`language(availableLanguages)`:\n\nReturns the top preferred language from a list of available languages.\n\n# Accept-Charset Negotiation\n\n Negotiator = require('negotiator')\n\n availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']\n\n negotiator = new Negotiator(request)\n\n // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'\n\n negotiator.charsets()\n // -> ['utf-8', 'iso-8859-1', 'utf-7']\n\n negotiator.charsets(availableCharsets)\n // -> ['utf-8', 'iso-8859-1']\n\n negotiator.charset(availableCharsets)\n // -> 'utf-8'\n\nYou can check a working example at `examples/charset.js`.\n\n## Methods\n\n`charsets(availableCharsets)`:\n\nReturns an array of preferred charsets ordered by priority from a list of available charsets.\n\n`charset(availableCharsets)`:\n\nReturns the top preferred charset from a list of available charsets.\n\n# Accept-Encoding Negotiation\n\n Negotiator = require('negotiator').Negotiator\n\n availableEncodings = ['identity', 'gzip']\n\n negotiator = new Negotiator(request)\n\n // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'\n\n negotiator.encodings()\n // -> ['gzip', 'identity', 'compress']\n\n negotiator.encodings(availableEncodings)\n // -> ['gzip', 'identity']\n\n negotiator.encoding(availableEncodings)\n // -> 'gzip'\n\nYou can check a working example at `examples/encoding.js`.\n\n## Methods\n\n`encodings(availableEncodings)`:\n\nReturns an array of preferred encodings ordered by priority from a list of available encodings.\n\n`encoding(availableEncodings)`:\n\nReturns the top preferred encoding from a list of available encodings.\n\n# License\n\nMIT\n",
- "readmeFilename": "readme.md",
- "bugs": {
- "url": "https://github.com/federomero/negotiator/issues"
- },
- "dependencies": {},
- "_id": "negotiator@0.4.7",
- "_from": "negotiator@0.4.7"
-}
diff --git a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/readme.md b/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/readme.md
deleted file mode 100755
index d982a9c..0000000
--- a/node_modules/errorhandler/node_modules/accepts/node_modules/negotiator/readme.md
+++ /dev/null
@@ -1,132 +0,0 @@
-# Negotiator [![Build Status](https://travis-ci.org/federomero/negotiator.png)](https://travis-ci.org/federomero/negotiator)
-
-An HTTP content negotiator for node.js written in javascript.
-
-# Accept Negotiation
-
- Negotiator = require('negotiator')
-
- availableMediaTypes = ['text/html', 'text/plain', 'application/json']
-
- // The negotiator constructor receives a request object
- negotiator = new Negotiator(request)
-
- // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'
-
- negotiator.mediaTypes()
- // -> ['text/html', 'image/jpeg', 'application/*']
-
- negotiator.mediaTypes(availableMediaTypes)
- // -> ['text/html', 'application/json']
-
- negotiator.mediaType(availableMediaTypes)
- // -> 'text/html'
-
-You can check a working example at `examples/accept.js`.
-
-## Methods
-
-`mediaTypes(availableMediaTypes)`:
-
-Returns an array of preferred media types ordered by priority from a list of available media types.
-
-`mediaType(availableMediaType)`:
-
-Returns the top preferred media type from a list of available media types.
-
-# Accept-Language Negotiation
-
- Negotiator = require('negotiator')
-
- negotiator = new Negotiator(request)
-
- availableLanguages = 'en', 'es', 'fr'
-
- // Let's say Accept-Language header is 'en;q=0.8, es, pt'
-
- negotiator.languages()
- // -> ['es', 'pt', 'en']
-
- negotiator.languages(availableLanguages)
- // -> ['es', 'en']
-
- language = negotiator.language(availableLanguages)
- // -> 'es'
-
-You can check a working example at `examples/language.js`.
-
-## Methods
-
-`languages(availableLanguages)`:
-
-Returns an array of preferred languages ordered by priority from a list of available languages.
-
-`language(availableLanguages)`:
-
-Returns the top preferred language from a list of available languages.
-
-# Accept-Charset Negotiation
-
- Negotiator = require('negotiator')
-
- availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']
-
- negotiator = new Negotiator(request)
-
- // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'
-
- negotiator.charsets()
- // -> ['utf-8', 'iso-8859-1', 'utf-7']
-
- negotiator.charsets(availableCharsets)
- // -> ['utf-8', 'iso-8859-1']
-
- negotiator.charset(availableCharsets)
- // -> 'utf-8'
-
-You can check a working example at `examples/charset.js`.
-
-## Methods
-
-`charsets(availableCharsets)`:
-
-Returns an array of preferred charsets ordered by priority from a list of available charsets.
-
-`charset(availableCharsets)`:
-
-Returns the top preferred charset from a list of available charsets.
-
-# Accept-Encoding Negotiation
-
- Negotiator = require('negotiator').Negotiator
-
- availableEncodings = ['identity', 'gzip']
-
- negotiator = new Negotiator(request)
-
- // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'
-
- negotiator.encodings()
- // -> ['gzip', 'identity', 'compress']
-
- negotiator.encodings(availableEncodings)
- // -> ['gzip', 'identity']
-
- negotiator.encoding(availableEncodings)
- // -> 'gzip'
-
-You can check a working example at `examples/encoding.js`.
-
-## Methods
-
-`encodings(availableEncodings)`:
-
-Returns an array of preferred encodings ordered by priority from a list of available encodings.
-
-`encoding(availableEncodings)`:
-
-Returns the top preferred encoding from a list of available encodings.
-
-# License
-
-MIT
diff --git a/node_modules/errorhandler/node_modules/accepts/package.json b/node_modules/errorhandler/node_modules/accepts/package.json
deleted file mode 100755
index e874cca..0000000
--- a/node_modules/errorhandler/node_modules/accepts/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "accepts",
- "description": "Higher-level content negotiation",
- "version": "1.0.6",
- "author": {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- },
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git://github.com/expressjs/accepts"
- },
- "dependencies": {
- "mime-types": "~1.0.0",
- "negotiator": "0.4.7"
- },
- "devDependencies": {
- "istanbul": "0.2.11",
- "mocha": "*",
- "should": "*"
- },
- "engines": {
- "node": ">= 0.8.0"
- },
- "scripts": {
- "test": "mocha --require should --reporter dot test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require should --reporter dot test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require should --reporter spec test/"
- },
- "readme": "# Accepts\n\n[![NPM version](https://badge.fury.io/js/accepts.svg)](http://badge.fury.io/js/accepts)\n[![Build Status](https://travis-ci.org/expressjs/accepts.svg?branch=master)](https://travis-ci.org/expressjs/accepts)\n[![Coverage Status](https://img.shields.io/coveralls/expressjs/accepts.svg?branch=master)](https://coveralls.io/r/expressjs/accepts)\n\nHigher level content negotation based on [negotiator](https://github.com/federomero/negotiator). Extracted from [koa](https://github.com/koajs/koa) for general use.\n\nIn addition to negotatior, it allows:\n\n- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.\n- Allows type shorthands such as `json`.\n- Returns `false` when no types match\n- Treats non-existent headers as `*`\n\n## API\n\n### var accept = new Accepts(req)\n\n```js\nvar accepts = require('accepts')\n\nhttp.createServer(function (req, res) {\n var accept = accepts(req)\n})\n```\n\n### accept\\[property\\]\\(\\)\n\nReturns all the explicitly accepted content property as an array in descending priority.\n\n- `accept.types()`\n- `accept.encodings()`\n- `accept.charsets()`\n- `accept.languages()`\n\nThey are also aliased in singular form such as `accept.type()`. `accept.languages()` is also aliased as `accept.langs()`, etc.\n\nNote: you should almost never do this in a real app as it defeats the purpose of content negotiation.\n\nExample:\n\n```js\n// in Google Chrome\nvar encodings = accept.encodings() // -> ['sdch', 'gzip', 'deflate']\n```\n\nSince you probably don't support `sdch`, you should just supply the encodings you support:\n\n```js\nvar encoding = accept.encodings('gzip', 'deflate') // -> 'gzip', probably\n```\n\n### accept\\[property\\]\\(values, ...\\)\n\nYou can either have `values` be an array or have an argument list of values.\n\nIf the client does not accept any `values`, `false` will be returned.\nIf the client accepts any `values`, the preferred `value` will be return.\n\nFor `accept.types()`, shorthand mime types are allowed.\n\nExample:\n\n```js\n// req.headers.accept = 'application/json'\n\naccept.types('json') // -> 'json'\naccept.types('html', 'json') // -> 'json'\naccept.types('html') // -> false\n\n// req.headers.accept = ''\n// which is equivalent to `*`\n\naccept.types() // -> [], no explicit types\naccept.types('text/html', 'text/json') // -> 'text/html', since it was first\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/expressjs/accepts/issues"
- },
- "_id": "accepts@1.0.6",
- "_from": "accepts@~1.0.4"
-}
diff --git a/node_modules/errorhandler/node_modules/escape-html/.npmignore b/node_modules/errorhandler/node_modules/escape-html/.npmignore
deleted file mode 100755
index 48a2e24..0000000
--- a/node_modules/errorhandler/node_modules/escape-html/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-components
-build
diff --git a/node_modules/errorhandler/node_modules/escape-html/Makefile b/node_modules/errorhandler/node_modules/escape-html/Makefile
deleted file mode 100755
index 3f6119d..0000000
--- a/node_modules/errorhandler/node_modules/escape-html/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build: components index.js
- @component build
-
-components:
- @Component install
-
-clean:
- rm -fr build components template.js
-
-.PHONY: clean
diff --git a/node_modules/errorhandler/node_modules/escape-html/Readme.md b/node_modules/errorhandler/node_modules/escape-html/Readme.md
deleted file mode 100755
index 2cfcc99..0000000
--- a/node_modules/errorhandler/node_modules/escape-html/Readme.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-# escape-html
-
- Escape HTML entities
-
-## Example
-
-```js
-var escape = require('escape-html');
-escape(str);
-```
-
-## License
-
- MIT
\ No newline at end of file
diff --git a/node_modules/errorhandler/node_modules/escape-html/component.json b/node_modules/errorhandler/node_modules/escape-html/component.json
deleted file mode 100755
index cb9740f..0000000
--- a/node_modules/errorhandler/node_modules/escape-html/component.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "escape-html",
- "description": "Escape HTML entities",
- "version": "1.0.1",
- "keywords": ["escape", "html", "utility"],
- "dependencies": {},
- "scripts": [
- "index.js"
- ]
-}
diff --git a/node_modules/errorhandler/node_modules/escape-html/index.js b/node_modules/errorhandler/node_modules/escape-html/index.js
deleted file mode 100755
index 2765211..0000000
--- a/node_modules/errorhandler/node_modules/escape-html/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Escape special characters in the given string of html.
- *
- * @param {String} html
- * @return {String}
- * @api private
- */
-
-module.exports = function(html) {
- return String(html)
- .replace(/&/g, '&')
- .replace(/"/g, '"')
- .replace(/'/g, ''')
- .replace(//g, '>');
-}
diff --git a/node_modules/errorhandler/node_modules/escape-html/package.json b/node_modules/errorhandler/node_modules/escape-html/package.json
deleted file mode 100755
index 833c227..0000000
--- a/node_modules/errorhandler/node_modules/escape-html/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "escape-html",
- "description": "Escape HTML entities",
- "version": "1.0.1",
- "keywords": [
- "escape",
- "html",
- "utility"
- ],
- "dependencies": {},
- "main": "index.js",
- "component": {
- "scripts": {
- "escape-html/index.js": "index.js"
- }
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/component/escape-html.git"
- },
- "readme": "\n# escape-html\n\n Escape HTML entities\n\n## Example\n\n```js\nvar escape = require('escape-html');\nescape(str);\n```\n\n## License\n\n MIT",
- "readmeFilename": "Readme.md",
- "bugs": {
- "url": "https://github.com/component/escape-html/issues"
- },
- "_id": "escape-html@1.0.1",
- "_from": "escape-html@1.0.1"
-}
diff --git a/node_modules/errorhandler/package.json b/node_modules/errorhandler/package.json
old mode 100755
new mode 100644
index a6c8b25..81842db
--- a/node_modules/errorhandler/package.json
+++ b/node_modules/errorhandler/package.json
@@ -1,41 +1,43 @@
{
"name": "errorhandler",
- "description": "connect's default error handler page",
- "version": "1.1.1",
- "author": {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com"
- },
+ "description": "Development-only error handler middleware",
+ "version": "1.5.1",
+ "contributors": [
+ "Douglas Christopher Wilson ",
+ "Jonathan Ong (http://jongleberry.com)"
+ ],
"license": "MIT",
- "repository": {
- "type": "git",
- "url": "git://github.com/expressjs/errorhandler"
- },
+ "repository": "expressjs/errorhandler",
"dependencies": {
- "accepts": "~1.0.4",
- "escape-html": "1.0.1"
+ "accepts": "~1.3.7",
+ "escape-html": "~1.0.3"
},
"devDependencies": {
- "connect": "3",
- "istanbul": "0.2.10",
- "mocha": "~1.20.1",
- "should": "~4.0.1",
- "supertest": "~0.13.0"
+ "after": "0.8.2",
+ "eslint": "5.16.0",
+ "eslint-config-standard": "12.0.0",
+ "eslint-plugin-import": "2.17.2",
+ "eslint-plugin-markdown": "1.0.0",
+ "eslint-plugin-node": "8.0.1",
+ "eslint-plugin-promise": "4.1.1",
+ "eslint-plugin-standard": "4.0.0",
+ "istanbul": "0.4.5",
+ "mocha": "6.1.4",
+ "supertest": "4.0.2"
},
+ "files": [
+ "public/",
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
"engines": {
"node": ">= 0.8"
},
"scripts": {
- "test": "mocha --reporter dot test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec test/"
- },
- "readme": "# errorhandler\n\n[![NPM version](https://badge.fury.io/js/errorhandler.svg)](http://badge.fury.io/js/errorhandler)\n[![Build Status](https://travis-ci.org/expressjs/errorhandler.svg?branch=master)](https://travis-ci.org/expressjs/errorhandler)\n[![Coverage Status](https://img.shields.io/coveralls/expressjs/errorhandler.svg?branch=master)](https://coveralls.io/r/expressjs/errorhandler)\n\nPreviously `connect.errorHandler()`.\n\n## Install\n\n```sh\n$ npm install errorhandler\n```\n\n## API\n\n### errorhandler()\n\nCreate new middleware to handle errors and respond with content negotiation.\nThis middleware is only intended to be used in a development environment, as\nthe full error stack traces will be send back to the client when an error\noccurs.\n\n## Example\n\n```js\nvar connect = require('connect')\nvar errorhandler = require('errorhandler')\n\nvar app = connect()\n\nif (process.env.NODE_ENV === 'development') {\n app.use(errorhandler())\n}\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/expressjs/errorhandler/issues"
- },
- "_id": "errorhandler@1.1.1",
- "_from": "errorhandler@"
+ "lint": "eslint --plugin markdown --ext js,md .",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ }
}
diff --git a/node_modules/errorhandler/public/error.html b/node_modules/errorhandler/public/error.html
old mode 100755
new mode 100644
diff --git a/node_modules/errorhandler/public/style.css b/node_modules/errorhandler/public/style.css
old mode 100755
new mode 100644
diff --git a/node_modules/express/.npmignore b/node_modules/express/.npmignore
deleted file mode 100755
index 52fcd60..0000000
--- a/node_modules/express/.npmignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.git*
-benchmarks/
-coverage/
-docs/
-examples/
-support/
-test/
-testing.js
-.DS_Store
-.travis.yml
-Contributing.md
diff --git a/node_modules/express/History.md b/node_modules/express/History.md
old mode 100755
new mode 100644
index 9beb889..178e718
--- a/node_modules/express/History.md
+++ b/node_modules/express/History.md
@@ -1,3 +1,1301 @@
+4.21.0 / 2024-09-11
+==========
+
+ * Deprecate `res.location("back")` and `res.redirect("back")` magic string
+ * deps: serve-static@1.16.2
+ * includes send@0.19.0
+ * deps: finalhandler@1.3.1
+ * deps: qs@6.13.0
+
+4.20.0 / 2024-09-10
+==========
+ * deps: serve-static@0.16.0
+ * Remove link renderization in html while redirecting
+ * deps: send@0.19.0
+ * Remove link renderization in html while redirecting
+ * deps: body-parser@0.6.0
+ * add `depth` option to customize the depth level in the parser
+ * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`)
+ * Remove link renderization in html while using `res.redirect`
+ * deps: path-to-regexp@0.1.10
+ - Adds support for named matching groups in the routes using a regex
+ - Adds backtracking protection to parameters without regexes defined
+ * deps: encodeurl@~2.0.0
+ - Removes encoding of `\`, `|`, and `^` to align better with URL spec
+ * Deprecate passing `options.maxAge` and `options.expires` to `res.clearCookie`
+ - Will be ignored in v5, clearCookie will set a cookie with an expires in the past to instruct clients to delete the cookie
+
+4.19.2 / 2024-03-25
+==========
+
+ * Improved fix for open redirect allow list bypass
+
+4.19.1 / 2024-03-20
+==========
+
+ * Allow passing non-strings to res.location with new encoding handling checks
+
+4.19.0 / 2024-03-20
+==========
+
+ * Prevent open redirect allow list bypass due to encodeurl
+ * deps: cookie@0.6.0
+
+4.18.3 / 2024-02-29
+==========
+
+ * Fix routing requests without method
+ * deps: body-parser@1.20.2
+ - Fix strict json error message on Node.js 19+
+ - deps: content-type@~1.0.5
+ - deps: raw-body@2.5.2
+ * deps: cookie@0.6.0
+ - Add `partitioned` option
+
+4.18.2 / 2022-10-08
+===================
+
+ * Fix regression routing a large stack in a single route
+ * deps: body-parser@1.20.1
+ - deps: qs@6.11.0
+ - perf: remove unnecessary object clone
+ * deps: qs@6.11.0
+
+4.18.1 / 2022-04-29
+===================
+
+ * Fix hanging on large stack of sync routes
+
+4.18.0 / 2022-04-25
+===================
+
+ * Add "root" option to `res.download`
+ * Allow `options` without `filename` in `res.download`
+ * Deprecate string and non-integer arguments to `res.status`
+ * Fix behavior of `null`/`undefined` as `maxAge` in `res.cookie`
+ * Fix handling very large stacks of sync middleware
+ * Ignore `Object.prototype` values in settings through `app.set`/`app.get`
+ * Invoke `default` with same arguments as types in `res.format`
+ * Support proper 205 responses using `res.send`
+ * Use `http-errors` for `res.format` error
+ * deps: body-parser@1.20.0
+ - Fix error message for json parse whitespace in `strict`
+ - Fix internal error when inflated body exceeds limit
+ - Prevent loss of async hooks context
+ - Prevent hanging when request already read
+ - deps: depd@2.0.0
+ - deps: http-errors@2.0.0
+ - deps: on-finished@2.4.1
+ - deps: qs@6.10.3
+ - deps: raw-body@2.5.1
+ * deps: cookie@0.5.0
+ - Add `priority` option
+ - Fix `expires` option to reject invalid dates
+ * deps: depd@2.0.0
+ - Replace internal `eval` usage with `Function` constructor
+ - Use instance methods on `process` to check for listeners
+ * deps: finalhandler@1.2.0
+ - Remove set content headers that break response
+ - deps: on-finished@2.4.1
+ - deps: statuses@2.0.1
+ * deps: on-finished@2.4.1
+ - Prevent loss of async hooks context
+ * deps: qs@6.10.3
+ * deps: send@0.18.0
+ - Fix emitted 416 error missing headers property
+ - Limit the headers removed for 304 response
+ - deps: depd@2.0.0
+ - deps: destroy@1.2.0
+ - deps: http-errors@2.0.0
+ - deps: on-finished@2.4.1
+ - deps: statuses@2.0.1
+ * deps: serve-static@1.15.0
+ - deps: send@0.18.0
+ * deps: statuses@2.0.1
+ - Remove code 306
+ - Rename `425 Unordered Collection` to standard `425 Too Early`
+
+4.17.3 / 2022-02-16
+===================
+
+ * deps: accepts@~1.3.8
+ - deps: mime-types@~2.1.34
+ - deps: negotiator@0.6.3
+ * deps: body-parser@1.19.2
+ - deps: bytes@3.1.2
+ - deps: qs@6.9.7
+ - deps: raw-body@2.4.3
+ * deps: cookie@0.4.2
+ * deps: qs@6.9.7
+ * Fix handling of `__proto__` keys
+ * pref: remove unnecessary regexp for trust proxy
+
+4.17.2 / 2021-12-16
+===================
+
+ * Fix handling of `undefined` in `res.jsonp`
+ * Fix handling of `undefined` when `"json escape"` is enabled
+ * Fix incorrect middleware execution with unanchored `RegExp`s
+ * Fix `res.jsonp(obj, status)` deprecation message
+ * Fix typo in `res.is` JSDoc
+ * deps: body-parser@1.19.1
+ - deps: bytes@3.1.1
+ - deps: http-errors@1.8.1
+ - deps: qs@6.9.6
+ - deps: raw-body@2.4.2
+ - deps: safe-buffer@5.2.1
+ - deps: type-is@~1.6.18
+ * deps: content-disposition@0.5.4
+ - deps: safe-buffer@5.2.1
+ * deps: cookie@0.4.1
+ - Fix `maxAge` option to reject invalid values
+ * deps: proxy-addr@~2.0.7
+ - Use `req.socket` over deprecated `req.connection`
+ - deps: forwarded@0.2.0
+ - deps: ipaddr.js@1.9.1
+ * deps: qs@6.9.6
+ * deps: safe-buffer@5.2.1
+ * deps: send@0.17.2
+ - deps: http-errors@1.8.1
+ - deps: ms@2.1.3
+ - pref: ignore empty http tokens
+ * deps: serve-static@1.14.2
+ - deps: send@0.17.2
+ * deps: setprototypeof@1.2.0
+
+4.17.1 / 2019-05-25
+===================
+
+ * Revert "Improve error message for `null`/`undefined` to `res.status`"
+
+4.17.0 / 2019-05-16
+===================
+
+ * Add `express.raw` to parse bodies into `Buffer`
+ * Add `express.text` to parse bodies into string
+ * Improve error message for non-strings to `res.sendFile`
+ * Improve error message for `null`/`undefined` to `res.status`
+ * Support multiple hosts in `X-Forwarded-Host`
+ * deps: accepts@~1.3.7
+ * deps: body-parser@1.19.0
+ - Add encoding MIK
+ - Add petabyte (`pb`) support
+ - Fix parsing array brackets after index
+ - deps: bytes@3.1.0
+ - deps: http-errors@1.7.2
+ - deps: iconv-lite@0.4.24
+ - deps: qs@6.7.0
+ - deps: raw-body@2.4.0
+ - deps: type-is@~1.6.17
+ * deps: content-disposition@0.5.3
+ * deps: cookie@0.4.0
+ - Add `SameSite=None` support
+ * deps: finalhandler@~1.1.2
+ - Set stricter `Content-Security-Policy` header
+ - deps: parseurl@~1.3.3
+ - deps: statuses@~1.5.0
+ * deps: parseurl@~1.3.3
+ * deps: proxy-addr@~2.0.5
+ - deps: ipaddr.js@1.9.0
+ * deps: qs@6.7.0
+ - Fix parsing array brackets after index
+ * deps: range-parser@~1.2.1
+ * deps: send@0.17.1
+ - Set stricter CSP header in redirect & error responses
+ - deps: http-errors@~1.7.2
+ - deps: mime@1.6.0
+ - deps: ms@2.1.1
+ - deps: range-parser@~1.2.1
+ - deps: statuses@~1.5.0
+ - perf: remove redundant `path.normalize` call
+ * deps: serve-static@1.14.1
+ - Set stricter CSP header in redirect response
+ - deps: parseurl@~1.3.3
+ - deps: send@0.17.1
+ * deps: setprototypeof@1.1.1
+ * deps: statuses@~1.5.0
+ - Add `103 Early Hints`
+ * deps: type-is@~1.6.18
+ - deps: mime-types@~2.1.24
+ - perf: prevent internal `throw` on invalid type
+
+4.16.4 / 2018-10-10
+===================
+
+ * Fix issue where `"Request aborted"` may be logged in `res.sendfile`
+ * Fix JSDoc for `Router` constructor
+ * deps: body-parser@1.18.3
+ - Fix deprecation warnings on Node.js 10+
+ - Fix stack trace for strict json parse error
+ - deps: depd@~1.1.2
+ - deps: http-errors@~1.6.3
+ - deps: iconv-lite@0.4.23
+ - deps: qs@6.5.2
+ - deps: raw-body@2.3.3
+ - deps: type-is@~1.6.16
+ * deps: proxy-addr@~2.0.4
+ - deps: ipaddr.js@1.8.0
+ * deps: qs@6.5.2
+ * deps: safe-buffer@5.1.2
+
+4.16.3 / 2018-03-12
+===================
+
+ * deps: accepts@~1.3.5
+ - deps: mime-types@~2.1.18
+ * deps: depd@~1.1.2
+ - perf: remove argument reassignment
+ * deps: encodeurl@~1.0.2
+ - Fix encoding `%` as last character
+ * deps: finalhandler@1.1.1
+ - Fix 404 output for bad / missing pathnames
+ - deps: encodeurl@~1.0.2
+ - deps: statuses@~1.4.0
+ * deps: proxy-addr@~2.0.3
+ - deps: ipaddr.js@1.6.0
+ * deps: send@0.16.2
+ - Fix incorrect end tag in default error & redirects
+ - deps: depd@~1.1.2
+ - deps: encodeurl@~1.0.2
+ - deps: statuses@~1.4.0
+ * deps: serve-static@1.13.2
+ - Fix incorrect end tag in redirects
+ - deps: encodeurl@~1.0.2
+ - deps: send@0.16.2
+ * deps: statuses@~1.4.0
+ * deps: type-is@~1.6.16
+ - deps: mime-types@~2.1.18
+
+4.16.2 / 2017-10-09
+===================
+
+ * Fix `TypeError` in `res.send` when given `Buffer` and `ETag` header set
+ * perf: skip parsing of entire `X-Forwarded-Proto` header
+
+4.16.1 / 2017-09-29
+===================
+
+ * deps: send@0.16.1
+ * deps: serve-static@1.13.1
+ - Fix regression when `root` is incorrectly set to a file
+ - deps: send@0.16.1
+
+4.16.0 / 2017-09-28
+===================
+
+ * Add `"json escape"` setting for `res.json` and `res.jsonp`
+ * Add `express.json` and `express.urlencoded` to parse bodies
+ * Add `options` argument to `res.download`
+ * Improve error message when autoloading invalid view engine
+ * Improve error messages when non-function provided as middleware
+ * Skip `Buffer` encoding when not generating ETag for small response
+ * Use `safe-buffer` for improved Buffer API
+ * deps: accepts@~1.3.4
+ - deps: mime-types@~2.1.16
+ * deps: content-type@~1.0.4
+ - perf: remove argument reassignment
+ - perf: skip parameter parsing when no parameters
+ * deps: etag@~1.8.1
+ - perf: replace regular expression with substring
+ * deps: finalhandler@1.1.0
+ - Use `res.headersSent` when available
+ * deps: parseurl@~1.3.2
+ - perf: reduce overhead for full URLs
+ - perf: unroll the "fast-path" `RegExp`
+ * deps: proxy-addr@~2.0.2
+ - Fix trimming leading / trailing OWS in `X-Forwarded-For`
+ - deps: forwarded@~0.1.2
+ - deps: ipaddr.js@1.5.2
+ - perf: reduce overhead when no `X-Forwarded-For` header
+ * deps: qs@6.5.1
+ - Fix parsing & compacting very deep objects
+ * deps: send@0.16.0
+ - Add 70 new types for file extensions
+ - Add `immutable` option
+ - Fix missing `