solid-ui 3.0.1-e8256eb → 3.0.1-eac9a32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/solid-ui.js CHANGED
@@ -11,8 +11,8 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 49:
15
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14
+ /***/ 49
15
+ (__unused_webpack_module, exports, __webpack_require__) {
16
16
 
17
17
  "use strict";
18
18
  /*!
@@ -228,28 +228,28 @@ function _preferredTypeLegacy (ext, type0, type1) {
228
228
  }
229
229
 
230
230
 
231
- /***/ }),
231
+ /***/ },
232
232
 
233
- /***/ 172:
234
- /***/ ((module) => {
233
+ /***/ 172
234
+ (module) {
235
235
 
236
236
  function _OverloadYield(e, d) {
237
237
  this.v = e, this.k = d;
238
238
  }
239
239
  module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
240
240
 
241
- /***/ }),
241
+ /***/ },
242
242
 
243
- /***/ 264:
244
- /***/ ((module) => {
243
+ /***/ 264
244
+ (module) {
245
245
 
246
246
  "use strict";
247
247
  module.exports = __WEBPACK_EXTERNAL_MODULE__264__;
248
248
 
249
- /***/ }),
249
+ /***/ },
250
250
 
251
- /***/ 373:
252
- /***/ ((module) => {
251
+ /***/ 373
252
+ (module) {
253
253
 
254
254
  function _regeneratorKeys(e) {
255
255
  var n = Object(e),
@@ -262,10 +262,10 @@ function _regeneratorKeys(e) {
262
262
  }
263
263
  module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports;
264
264
 
265
- /***/ }),
265
+ /***/ },
266
266
 
267
- /***/ 378:
268
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
267
+ /***/ 378
268
+ (module, __webpack_exports__, __webpack_require__) {
269
269
 
270
270
  "use strict";
271
271
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -313,10 +313,10 @@ var icons = module.scriptURI // Firefox extension
313
313
  var iconBase = icons.iconBase;
314
314
  var originalIconBase = icons.originalIconBase;
315
315
 
316
- /***/ }),
316
+ /***/ },
317
317
 
318
- /***/ 386:
319
- /***/ ((module) => {
318
+ /***/ 386
319
+ (module) {
320
320
 
321
321
  /**
322
322
  * Provides a way to access commonly used namespaces
@@ -402,10 +402,10 @@ function vocab (rdf = { namedNode: u => u }) {
402
402
  module.exports = vocab
403
403
 
404
404
 
405
- /***/ }),
405
+ /***/ },
406
406
 
407
- /***/ 423:
408
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
407
+ /***/ 423
408
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
409
409
 
410
410
  "use strict";
411
411
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -431,17 +431,17 @@ function trace() {
431
431
  (_console4 = console).trace.apply(_console4, arguments);
432
432
  }
433
433
 
434
- /***/ }),
434
+ /***/ },
435
435
 
436
- /***/ 466:
437
- /***/ (() => {
436
+ /***/ 466
437
+ () {
438
438
 
439
439
  /* (ignored) */
440
440
 
441
- /***/ }),
441
+ /***/ },
442
442
 
443
- /***/ 546:
444
- /***/ ((module) => {
443
+ /***/ 546
444
+ (module) {
445
445
 
446
446
  function _regeneratorDefine(e, r, n, t) {
447
447
  var i = Object.defineProperty;
@@ -466,10 +466,10 @@ function _regeneratorDefine(e, r, n, t) {
466
466
  }
467
467
  module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports;
468
468
 
469
- /***/ }),
469
+ /***/ },
470
470
 
471
- /***/ 579:
472
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
471
+ /***/ 579
472
+ (module, __unused_webpack_exports, __webpack_require__) {
473
473
 
474
474
  var _typeof = (__webpack_require__(738)["default"]);
475
475
  function _regeneratorValues(e) {
@@ -491,10 +491,10 @@ function _regeneratorValues(e) {
491
491
  }
492
492
  module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports;
493
493
 
494
- /***/ }),
494
+ /***/ },
495
495
 
496
- /***/ 580:
497
- /***/ ((module) => {
496
+ /***/ 580
497
+ (module) {
498
498
 
499
499
  "use strict";
500
500
  /*!
@@ -577,10 +577,10 @@ function escapeHtml(string) {
577
577
  }
578
578
 
579
579
 
580
- /***/ }),
580
+ /***/ },
581
581
 
582
- /***/ 598:
583
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
582
+ /***/ 598
583
+ (module, __unused_webpack_exports, __webpack_require__) {
584
584
 
585
585
  /*!
586
586
  * mime-db
@@ -596,10 +596,10 @@ function escapeHtml(string) {
596
596
  module.exports = __webpack_require__(813)
597
597
 
598
598
 
599
- /***/ }),
599
+ /***/ },
600
600
 
601
- /***/ 633:
602
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
601
+ /***/ 633
602
+ (module, __unused_webpack_exports, __webpack_require__) {
603
603
 
604
604
  var OverloadYield = __webpack_require__(172);
605
605
  var regenerator = __webpack_require__(993);
@@ -679,18 +679,18 @@ function _regeneratorRuntime() {
679
679
  }
680
680
  module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
681
681
 
682
- /***/ }),
682
+ /***/ },
683
683
 
684
- /***/ 663:
685
- /***/ ((module) => {
684
+ /***/ 663
685
+ (module) {
686
686
 
687
687
  "use strict";
688
688
  module.exports = __WEBPACK_EXTERNAL_MODULE__663__;
689
689
 
690
- /***/ }),
690
+ /***/ },
691
691
 
692
- /***/ 738:
693
- /***/ ((module) => {
692
+ /***/ 738
693
+ (module) {
694
694
 
695
695
  function _typeof(o) {
696
696
  "@babel/helpers - typeof";
@@ -703,10 +703,10 @@ function _typeof(o) {
703
703
  }
704
704
  module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
705
705
 
706
- /***/ }),
706
+ /***/ },
707
707
 
708
- /***/ 756:
709
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
708
+ /***/ 756
709
+ (module, __unused_webpack_exports, __webpack_require__) {
710
710
 
711
711
  // TODO(Babel 8): Remove this file.
712
712
 
@@ -725,10 +725,10 @@ try {
725
725
  }
726
726
 
727
727
 
728
- /***/ }),
728
+ /***/ },
729
729
 
730
- /***/ 791:
731
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
730
+ /***/ 791
731
+ (module, __unused_webpack_exports, __webpack_require__) {
732
732
 
733
733
  var OverloadYield = __webpack_require__(172);
734
734
  var regeneratorDefine = __webpack_require__(546);
@@ -764,18 +764,18 @@ function AsyncIterator(t, e) {
764
764
  }
765
765
  module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
766
766
 
767
- /***/ }),
767
+ /***/ },
768
768
 
769
- /***/ 813:
770
- /***/ ((module) => {
769
+ /***/ 813
770
+ (module) {
771
771
 
772
772
  "use strict";
773
773
  module.exports = /*#__PURE__*/JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/ace+json":{"source":"iana","compressible":true},"application/ace-groupcomm+cbor":{"source":"iana"},"application/ace-trl+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/aif+cbor":{"source":"iana"},"application/aif+json":{"source":"iana","compressible":true},"application/alto-cdni+json":{"source":"iana","compressible":true},"application/alto-cdnifilter+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-propmap+json":{"source":"iana","compressible":true},"application/alto-propmapparams+json":{"source":"iana","compressible":true},"application/alto-tips+json":{"source":"iana","compressible":true},"application/alto-tipsparams+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/appinstaller":{"compressible":false,"extensions":["appinstaller"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/appx":{"compressible":false,"extensions":["appx"]},"application/appxbundle":{"compressible":false,"extensions":["appxbundle"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/automationml-aml+xml":{"source":"iana","compressible":true,"extensions":["aml"]},"application/automationml-amlx+zip":{"source":"iana","compressible":false,"extensions":["amlx"]},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/bufr":{"source":"iana"},"application/c2pa":{"source":"iana"},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/ce+cbor":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/cid-edhoc+cbor-seq":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/city+json-seq":{"source":"iana"},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-eap":{"source":"iana"},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/concise-problem-details+cbor":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cose-x509":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwl":{"source":"iana","extensions":["cwl"]},"application/cwl+json":{"source":"iana","compressible":true},"application/cwl+yaml":{"source":"iana"},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana","extensions":["dcm"]},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dpop+jwt":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/eat+cwt":{"source":"iana"},"application/eat+jwt":{"source":"iana"},"application/eat-bun+cbor":{"source":"iana"},"application/eat-bun+json":{"source":"iana","compressible":true},"application/eat-ucs+cbor":{"source":"iana"},"application/eat-ucs+json":{"source":"iana","compressible":true},"application/ecmascript":{"source":"apache","compressible":true,"extensions":["ecma"]},"application/edhoc+cbor-seq":{"source":"iana"},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.legacyesn+json":{"source":"iana","compressible":true},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/entity-statement+jwt":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdf":{"source":"iana","extensions":["fdf"]},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geopose+json":{"source":"iana","compressible":true},"application/geoxacml+json":{"source":"iana","compressible":true},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gnap-binding-jws":{"source":"iana"},"application/gnap-binding-jwsd":{"source":"iana"},"application/gnap-binding-rotation-jws":{"source":"iana"},"application/gnap-binding-rotation-jwsd":{"source":"iana"},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/grib":{"source":"iana"},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"iana","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"apache","charset":"UTF-8","compressible":true,"extensions":["js"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/jscontact+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jsonpath":{"source":"iana"},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwk-set+jwt":{"source":"iana"},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/linkset":{"source":"iana"},"application/linkset+json":{"source":"iana","compressible":true},"application/load-control+xml":{"source":"iana","compressible":true},"application/logout+jwt":{"source":"iana"},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4","mpg4","mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msix":{"compressible":false,"extensions":["msix"]},"application/msixbundle":{"compressible":false,"extensions":["msixbundle"]},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":true,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/ohttp-keys":{"source":"iana"},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg","one","onea"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["sig","asc"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/private-token-issuer-directory":{"source":"iana"},"application/private-token-request":{"source":"iana"},"application/private-token-response":{"source":"iana"},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/provided-claims+jwt":{"source":"iana"},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.implied-document+xml":{"source":"iana","compressible":true},"application/prs.implied-executable":{"source":"iana"},"application/prs.implied-object+json":{"source":"iana","compressible":true},"application/prs.implied-object+json-seq":{"source":"iana"},"application/prs.implied-object+yaml":{"source":"iana"},"application/prs.implied-structure":{"source":"iana"},"application/prs.mayfile":{"source":"iana"},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.vcfbzip2":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true,"extensions":["xsf"]},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"apache"},"application/reputon+json":{"source":"iana","compressible":true},"application/resolve-response+jwt":{"source":"iana"},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-checklist":{"source":"iana"},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-signed-tal":{"source":"iana"},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"apache"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana","extensions":["sql"]},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/sslkeylogfile":{"source":"iana"},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/st2110-41":{"source":"iana"},"application/stix+json":{"source":"iana","compressible":true},"application/stratum":{"source":"iana"},"application/swid+cbor":{"source":"iana"},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tm+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/toc+cbor":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"source":"iana","compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/trust-chain+json":{"source":"iana","compressible":true},"application/trust-mark+jwt":{"source":"iana"},"application/trust-mark-delegation+jwt":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/uccs+cbor":{"source":"iana"},"application/ujcs+json":{"source":"iana","compressible":true},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vc":{"source":"iana"},"application/vc+cose":{"source":"iana"},"application/vc+jwt":{"source":"iana"},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.1ob":{"source":"iana"},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3a+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ach+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc8+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.5gsa2x":{"source":"iana"},"application/vnd.3gpp.5gsa2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gsv2x":{"source":"iana"},"application/vnd.3gpp.5gsv2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.crs+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.current-location-discovery+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-regroup+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-regroup+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-regroup+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.pinapp-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.seal-group-doc+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-network-qos-management-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-ue-config-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-unicast-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.seal-user-profile-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.v2x":{"source":"iana"},"application/vnd.3gpp.vae-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acm.addressxfer+json":{"source":"iana","compressible":true},"application/vnd.acm.chatbot+json":{"source":"iana","compressible":true},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"apache","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"apache"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.parquet":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.apexlang":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"apache"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autodesk.fbx":{"extensions":["fbx"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.belightsoft.lhzd+zip":{"source":"iana","compressible":false},"application/vnd.belightsoft.lhzl+zip":{"source":"iana","compressible":false},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.bzip3":{"source":"iana"},"application/vnd.c3voc.schedule+xml":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.cncf.helm.chart.content.v1.tar+gzip":{"source":"iana"},"application/vnd.cncf.helm.chart.provenance.v1.prov":{"source":"iana"},"application/vnd.cncf.helm.config.v1+json":{"source":"iana","compressible":true},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datalog":{"source":"iana"},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.dcmp+xml":{"source":"iana","compressible":true,"extensions":["dcmp"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.eln+zip":{"source":"iana","compressible":false},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.erofs":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"apache","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.fdsn.stationxml+xml":{"source":"iana","charset":"XML-BASED","compressible":true},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.freelog.comic":{"source":"iana"},"application/vnd.frogans.fnc":{"source":"apache","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"apache","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.ga4gh.passport+jwt":{"source":"iana"},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.genozip":{"source":"iana"},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.gentoo.catmetadata+xml":{"source":"iana","compressible":true},"application/vnd.gentoo.ebuild":{"source":"iana"},"application/vnd.gentoo.eclass":{"source":"iana"},"application/vnd.gentoo.gpkg":{"source":"iana"},"application/vnd.gentoo.manifest":{"source":"iana"},"application/vnd.gentoo.pkgmetadata+xml":{"source":"iana","compressible":true},"application/vnd.gentoo.xpak":{"source":"iana"},"application/vnd.geo+json":{"source":"apache","compressible":true},"application/vnd.geocube+xml":{"source":"apache","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.pinboard":{"source":"iana"},"application/vnd.geogebra.slides":{"source":"iana","extensions":["ggs"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.gnu.taler.exchange+json":{"source":"iana","compressible":true},"application/vnd.gnu.taler.merchant+json":{"source":"iana","compressible":true},"application/vnd.google-apps.audio":{},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.drawing":{"compressible":false,"extensions":["gdraw"]},"application/vnd.google-apps.drive-sdk":{"compressible":false},"application/vnd.google-apps.file":{},"application/vnd.google-apps.folder":{"compressible":false},"application/vnd.google-apps.form":{"compressible":false,"extensions":["gform"]},"application/vnd.google-apps.fusiontable":{},"application/vnd.google-apps.jam":{"compressible":false,"extensions":["gjam"]},"application/vnd.google-apps.mail-layout":{},"application/vnd.google-apps.map":{"compressible":false,"extensions":["gmap"]},"application/vnd.google-apps.photo":{},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.script":{"compressible":false,"extensions":["gscript"]},"application/vnd.google-apps.shortcut":{},"application/vnd.google-apps.site":{"compressible":false,"extensions":["gsite"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-apps.unknown":{},"application/vnd.google-apps.video":{},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"apache","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true,"extensions":["xdcf"]},"application/vnd.gpxsee.map+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.hsl":{"source":"iana"},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"apache"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"apache","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"apache"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.ipfs.ipns-record":{"source":"iana"},"application/vnd.ipld.car":{"source":"iana"},"application/vnd.ipld.dag-cbor":{"source":"iana"},"application/vnd.ipld.dag-json":{"source":"iana"},"application/vnd.ipld.raw":{"source":"iana"},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kdl":{"source":"iana"},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.keyman.kmp+zip":{"source":"iana","compressible":false},"application/vnd.keyman.kmx":{"source":"iana"},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.ldev.productlicensing":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.mdl":{"source":"iana"},"application/vnd.mdl-mbsdf":{"source":"iana"},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.medicalholodeck.recordxr":{"source":"iana"},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mermaid":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.modl":{"source":"iana"},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-visio.viewer":{"extensions":["vdx"]},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msgpack":{"source":"iana"},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.nato.bindingdataobject+cbor":{"source":"iana"},"application/vnd.nato.bindingdataobject+json":{"source":"iana","compressible":true},"application/vnd.nato.bindingdataobject+xml":{"source":"iana","compressible":true,"extensions":["bdo"]},"application/vnd.nato.openxmlformats-package.iepd+zip":{"source":"iana","compressible":false},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"apache","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oai.workflows":{"source":"iana"},"application/vnd.oai.workflows+json":{"source":"iana","compressible":true},"application/vnd.oai.workflows+yaml":{"source":"iana"},"application/vnd.oasis.opendocument.base":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"apache","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-master-template":{"source":"iana"},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"apache","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"apache","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.onvif.metadata":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openvpi.dspx+json":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.procrate.brushset":{"extensions":["brushset"]},"application/vnd.procreate.brush":{"extensions":["brush"]},"application/vnd.procreate.dream":{"extensions":["drm"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.pt.mundusmundi":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true,"extensions":["xhtm"]},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.relpipe":{"source":"iana"},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.sketchometry":{"source":"iana"},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.smintio.portals.archive":{"source":"iana"},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sybyl.mol2":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uic.osdm+json":{"source":"iana","compressible":true},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml","uo"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.veraison.tsm-report+cbor":{"source":"iana"},"application/vnd.veraison.tsm-report+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw","vsdx","vtx"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vocalshaper.vsp4":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.wasmflow.wafl":{"source":"iana"},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordlift":{"source":"iana"},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xarin.cpj":{"source":"iana"},"application/vnd.xecrets-encrypted":{"source":"iana"},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/voucher-jws+json":{"source":"iana","compressible":true},"application/vp":{"source":"iana"},"application/vp+cose":{"source":"iana"},"application/vp+jwt":{"source":"iana"},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blender":{"extensions":["blend"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-compressed":{"extensions":["rar"]},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-ipynb+json":{"compressible":true,"extensions":["ipynb"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zip-compressed":{"extensions":["zip"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xfdf":{"source":"iana","extensions":["xfdf"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yaml":{"source":"iana"},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+cbor":{"source":"iana"},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yang-sid+json":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zip+dotlottie":{"extensions":["lottie"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana","extensions":["adts","aac"]},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flac":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/matroska":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/midi-clip":{"source":"iana"},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a","m4b"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"apache"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"source":"iana","compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp","dib"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/dpx":{"source":"iana","extensions":["dpx"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/j2c":{"source":"iana"},"image/jaii":{"source":"iana","extensions":["jaii"]},"image/jais":{"source":"iana","extensions":["jais"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpg","jpeg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm","jpgm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxl":{"source":"iana","extensions":["jxl"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false,"extensions":["jfif"]},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif","btf"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.clip":{"source":"iana"},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"iana","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-adobe-dng":{"extensions":["dng"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-emf":{"source":"iana"},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-wmf":{"source":"iana"},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/bhttp":{"source":"iana"},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/mls":{"source":"iana"},"message/news":{"source":"apache"},"message/ohttp-req":{"source":"iana"},"message/ohttp-res":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime","mht","mhtml"]},"message/s-http":{"source":"apache"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"apache"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/jt":{"source":"iana","extensions":["jt"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/prc":{"source":"iana","extensions":["prc"]},"model/step":{"source":"iana","extensions":["step","stp","stpnc","p21","210"]},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/u3d":{"source":"iana","extensions":["u3d"]},"model/vnd.bary":{"source":"iana","extensions":["bary"]},"model/vnd.cld":{"source":"iana","extensions":["cld"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana","extensions":["pyo","pyox"]},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usda":{"source":"iana","extensions":["usda"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"apache"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/hl7v2":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["md","markdown"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/prs.texi":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.exchangeable":{"source":"iana"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"apache"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.vcf":{"source":"iana"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vnd.zoo.kcl":{"source":"iana"},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/wgsl":{"source":"iana","extensions":["wgsl"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/evc":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/h266":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/lottie+json":{"source":"iana","compressible":true},"video/matroska":{"source":"iana"},"video/matroska-3d":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts","m2t","m2ts","mts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.planar":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"apache"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}');
774
774
 
775
- /***/ }),
775
+ /***/ },
776
776
 
777
- /***/ 869:
778
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
777
+ /***/ 869
778
+ (module, __unused_webpack_exports, __webpack_require__) {
779
779
 
780
780
  var regeneratorAsyncGen = __webpack_require__(887);
781
781
  function _regeneratorAsync(n, e, r, t, o) {
@@ -786,10 +786,10 @@ function _regeneratorAsync(n, e, r, t, o) {
786
786
  }
787
787
  module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports;
788
788
 
789
- /***/ }),
789
+ /***/ },
790
790
 
791
- /***/ 887:
792
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
791
+ /***/ 887
792
+ (module, __unused_webpack_exports, __webpack_require__) {
793
793
 
794
794
  var regenerator = __webpack_require__(993);
795
795
  var regeneratorAsyncIterator = __webpack_require__(791);
@@ -798,10 +798,10 @@ function _regeneratorAsyncGen(r, e, t, o, n) {
798
798
  }
799
799
  module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports;
800
800
 
801
- /***/ }),
801
+ /***/ },
802
802
 
803
- /***/ 983:
804
- /***/ ((module) => {
803
+ /***/ 983
804
+ (module) {
805
805
 
806
806
  // 'mime-score' back-ported to CommonJS
807
807
 
@@ -862,10 +862,10 @@ module.exports = function mimeScore (mimeType, source = 'default') {
862
862
  }
863
863
 
864
864
 
865
- /***/ }),
865
+ /***/ },
866
866
 
867
- /***/ 993:
868
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
867
+ /***/ 993
868
+ (module, __unused_webpack_exports, __webpack_require__) {
869
869
 
870
870
  var regeneratorDefine = __webpack_require__(546);
871
871
  function _regenerator() {
@@ -957,7 +957,7 @@ function _regenerator() {
957
957
  }
958
958
  module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
959
959
 
960
- /***/ })
960
+ /***/ }
961
961
 
962
962
  /******/ });
963
963
  /************************************************************************/
@@ -12904,11 +12904,11 @@ function _taggedTemplateLiteral(e, t) {
12904
12904
  // EXTERNAL MODULE: ./node_modules/escape-html/index.js
12905
12905
  var escape_html = __webpack_require__(580);
12906
12906
  var escape_html_default = /*#__PURE__*/__webpack_require__.n(escape_html);
12907
- ;// ./node_modules/uuid/dist/esm-browser/native.js
12907
+ ;// ./node_modules/uuid/dist/native.js
12908
12908
  const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
12909
- /* harmony default export */ const esm_browser_native = ({ randomUUID });
12909
+ /* harmony default export */ const dist_native = ({ randomUUID });
12910
12910
 
12911
- ;// ./node_modules/uuid/dist/esm-browser/rng.js
12911
+ ;// ./node_modules/uuid/dist/rng.js
12912
12912
  let getRandomValues;
12913
12913
  const rnds8 = new Uint8Array(16);
12914
12914
  function rng() {
@@ -12921,7 +12921,7 @@ function rng() {
12921
12921
  return getRandomValues(rnds8);
12922
12922
  }
12923
12923
 
12924
- ;// ./node_modules/uuid/dist/esm-browser/stringify.js
12924
+ ;// ./node_modules/uuid/dist/stringify.js
12925
12925
 
12926
12926
  const byteToHex = [];
12927
12927
  for (let i = 0; i < 256; ++i) {
@@ -12956,16 +12956,13 @@ function stringify(arr, offset = 0) {
12956
12956
  }
12957
12957
  return uuid;
12958
12958
  }
12959
- /* harmony default export */ const esm_browser_stringify = ((/* unused pure expression or super */ null && (stringify)));
12959
+ /* harmony default export */ const dist_stringify = ((/* unused pure expression or super */ null && (stringify)));
12960
12960
 
12961
- ;// ./node_modules/uuid/dist/esm-browser/v4.js
12961
+ ;// ./node_modules/uuid/dist/v4.js
12962
12962
 
12963
12963
 
12964
12964
 
12965
- function v4(options, buf, offset) {
12966
- if (esm_browser_native.randomUUID && !buf && !options) {
12967
- return esm_browser_native.randomUUID();
12968
- }
12965
+ function _v4(options, buf, offset) {
12969
12966
  options = options || {};
12970
12967
  const rnds = options.random ?? options.rng?.() ?? rng();
12971
12968
  if (rnds.length < 16) {
@@ -12985,7 +12982,13 @@ function v4(options, buf, offset) {
12985
12982
  }
12986
12983
  return unsafeStringify(rnds);
12987
12984
  }
12988
- /* harmony default export */ const esm_browser_v4 = (v4);
12985
+ function v4(options, buf, offset) {
12986
+ if (dist_native.randomUUID && !buf && !options) {
12987
+ return dist_native.randomUUID();
12988
+ }
12989
+ return _v4(options, buf, offset);
12990
+ }
12991
+ /* harmony default export */ const dist_v4 = (v4);
12989
12992
 
12990
12993
  ;// ./src/widgets/peoplePicker.js
12991
12994
 
@@ -13109,7 +13112,7 @@ var PeoplePicker = /*#__PURE__*/function () {
13109
13112
  var _indexes = indexes(book),
13110
13113
  groupIndex = _indexes.groupIndex,
13111
13114
  groupContainer = _indexes.groupContainer;
13112
- var group = external_$rdf_.sym("".concat(groupContainer.uri).concat(esm_browser_v4().slice(0, 8), ".ttl#this"));
13115
+ var group = external_$rdf_.sym("".concat(groupContainer.uri).concat(dist_v4().slice(0, 8), ".ttl#this"));
13113
13116
  var name = defaultNewGroupName || 'Untitled Group';
13114
13117
 
13115
13118
  // NOTE that order matters here. Unfortunately this type of update is
@@ -14123,44 +14126,42 @@ var DateFolder = /*#__PURE__*/function () {
14123
14126
  }() // firstleafObject
14124
14127
  }]);
14125
14128
  }(); // class
14126
- ;// ./node_modules/@noble/hashes/esm/crypto.js
14127
- const crypto_crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;
14128
- //# sourceMappingURL=crypto.js.map
14129
- ;// ./node_modules/@noble/hashes/esm/utils.js
14129
+ ;// ./node_modules/@noble/hashes/utils.js
14130
14130
  /**
14131
14131
  * Utilities for hex, bytes, CSPRNG.
14132
14132
  * @module
14133
14133
  */
14134
14134
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
14135
- // We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.
14136
- // node.js versions earlier than v19 don't declare it in global scope.
14137
- // For node.js, package.json#exports field mapping rewrites import
14138
- // from `crypto` to `cryptoNode`, which imports native module.
14139
- // Makes the utils un-importable in browsers without a bundler.
14140
- // Once node.js 18 is deprecated (2025-04-30), we can just drop the import.
14141
-
14142
14135
  /** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */
14143
- function isBytes(a) {
14136
+ function utils_isBytes(a) {
14144
14137
  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');
14145
14138
  }
14146
14139
  /** Asserts something is positive integer. */
14147
- function anumber(n) {
14148
- if (!Number.isSafeInteger(n) || n < 0)
14149
- throw new Error('positive integer expected, got ' + n);
14140
+ function utils_anumber(n, title = '') {
14141
+ if (!Number.isSafeInteger(n) || n < 0) {
14142
+ const prefix = title && `"${title}" `;
14143
+ throw new Error(`${prefix}expected integer >= 0, got ${n}`);
14144
+ }
14150
14145
  }
14151
14146
  /** Asserts something is Uint8Array. */
14152
- function abytes(b, ...lengths) {
14153
- if (!isBytes(b))
14154
- throw new Error('Uint8Array expected');
14155
- if (lengths.length > 0 && !lengths.includes(b.length))
14156
- throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);
14147
+ function utils_abytes(value, length, title = '') {
14148
+ const bytes = utils_isBytes(value);
14149
+ const len = value?.length;
14150
+ const needsLen = length !== undefined;
14151
+ if (!bytes || (needsLen && len !== length)) {
14152
+ const prefix = title && `"${title}" `;
14153
+ const ofLen = needsLen ? ` of length ${length}` : '';
14154
+ const got = bytes ? `length=${len}` : `type=${typeof value}`;
14155
+ throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);
14156
+ }
14157
+ return value;
14157
14158
  }
14158
14159
  /** Asserts something is hash */
14159
- function ahash(h) {
14160
+ function utils_ahash(h) {
14160
14161
  if (typeof h !== 'function' || typeof h.create !== 'function')
14161
- throw new Error('Hash should be wrapped by utils.createHasher');
14162
- anumber(h.outputLen);
14163
- anumber(h.blockLen);
14162
+ throw new Error('Hash must wrapped by utils.createHasher');
14163
+ utils_anumber(h.outputLen);
14164
+ utils_anumber(h.blockLen);
14164
14165
  }
14165
14166
  /** Asserts a hash instance has not been destroyed / finished */
14166
14167
  function aexists(instance, checkFinished = true) {
@@ -14171,10 +14172,10 @@ function aexists(instance, checkFinished = true) {
14171
14172
  }
14172
14173
  /** Asserts output is properly-sized byte array */
14173
14174
  function aoutput(out, instance) {
14174
- abytes(out);
14175
+ utils_abytes(out, undefined, 'digestInto() output');
14175
14176
  const min = instance.outputLen;
14176
14177
  if (out.length < min) {
14177
- throw new Error('digestInto() expects output buffer of length at least ' + min);
14178
+ throw new Error('"digestInto() output" expected to be of length >=' + min);
14178
14179
  }
14179
14180
  }
14180
14181
  /** Cast u8 / u16 / u32 to u8. */
@@ -14216,8 +14217,6 @@ function byteSwap(word) {
14216
14217
  const swap8IfBE = (/* unused pure expression or super */ null && (isLE
14217
14218
  ? (n) => n
14218
14219
  : (n) => byteSwap(n)));
14219
- /** @deprecated */
14220
- const byteSwapIfBE = (/* unused pure expression or super */ null && (swap8IfBE));
14221
14220
  /** In place byte swap for Uint32Array */
14222
14221
  function byteSwap32(arr) {
14223
14222
  for (let i = 0; i < arr.length; i++) {
@@ -14238,8 +14237,8 @@ const hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(1
14238
14237
  * Convert byte array to hex string. Uses built-in function, when available.
14239
14238
  * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'
14240
14239
  */
14241
- function bytesToHex(bytes) {
14242
- abytes(bytes);
14240
+ function utils_bytesToHex(bytes) {
14241
+ utils_abytes(bytes);
14243
14242
  // @ts-ignore
14244
14243
  if (hasHexBuiltin)
14245
14244
  return bytes.toHex();
@@ -14265,7 +14264,7 @@ function asciiToBase16(ch) {
14265
14264
  * Convert hex string to byte array. Uses built-in function, when available.
14266
14265
  * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])
14267
14266
  */
14268
- function hexToBytes(hex) {
14267
+ function utils_hexToBytes(hex) {
14269
14268
  if (typeof hex !== 'string')
14270
14269
  throw new Error('hex string expected, got ' + typeof hex);
14271
14270
  // @ts-ignore
@@ -14308,6 +14307,7 @@ async function asyncLoop(iters, tick, cb) {
14308
14307
  }
14309
14308
  /**
14310
14309
  * Converts string to bytes using UTF8 encoding.
14310
+ * Built-in doesn't validate input to be string: we do the check.
14311
14311
  * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])
14312
14312
  */
14313
14313
  function utf8ToBytes(str) {
@@ -14315,40 +14315,21 @@ function utf8ToBytes(str) {
14315
14315
  throw new Error('string expected');
14316
14316
  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809
14317
14317
  }
14318
- /**
14319
- * Converts bytes to string using UTF8 encoding.
14320
- * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'
14321
- */
14322
- function bytesToUtf8(bytes) {
14323
- return new TextDecoder().decode(bytes);
14324
- }
14325
- /**
14326
- * Normalizes (non-hex) string or Uint8Array to Uint8Array.
14327
- * Warning: when Uint8Array is passed, it would NOT get copied.
14328
- * Keep in mind for future mutable operations.
14329
- */
14330
- function toBytes(data) {
14331
- if (typeof data === 'string')
14332
- data = utf8ToBytes(data);
14333
- abytes(data);
14334
- return data;
14335
- }
14336
14318
  /**
14337
14319
  * Helper for KDFs: consumes uint8array or string.
14338
14320
  * When string is passed, does utf8 decoding, using TextDecoder.
14339
14321
  */
14340
- function kdfInputToBytes(data) {
14322
+ function kdfInputToBytes(data, errorTitle = '') {
14341
14323
  if (typeof data === 'string')
14342
- data = utf8ToBytes(data);
14343
- abytes(data);
14344
- return data;
14324
+ return utf8ToBytes(data);
14325
+ return utils_abytes(data, undefined, errorTitle);
14345
14326
  }
14346
14327
  /** Copies several Uint8Arrays into one. */
14347
- function concatBytes(...arrays) {
14328
+ function utils_concatBytes(...arrays) {
14348
14329
  let sum = 0;
14349
14330
  for (let i = 0; i < arrays.length; i++) {
14350
14331
  const a = arrays[i];
14351
- abytes(a);
14332
+ utils_abytes(a);
14352
14333
  sum += a.length;
14353
14334
  }
14354
14335
  const res = new Uint8Array(sum);
@@ -14359,74 +14340,41 @@ function concatBytes(...arrays) {
14359
14340
  }
14360
14341
  return res;
14361
14342
  }
14343
+ /** Merges default options and passed options. */
14362
14344
  function checkOpts(defaults, opts) {
14363
14345
  if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')
14364
- throw new Error('options should be object or undefined');
14346
+ throw new Error('options must be object or undefined');
14365
14347
  const merged = Object.assign(defaults, opts);
14366
14348
  return merged;
14367
14349
  }
14368
- /** For runtime check if class implements interface */
14369
- class Hash {
14370
- }
14371
- /** Wraps hash function, creating an interface on top of it */
14372
- function utils_createHasher(hashCons) {
14373
- const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
14374
- const tmp = hashCons();
14375
- hashC.outputLen = tmp.outputLen;
14376
- hashC.blockLen = tmp.blockLen;
14377
- hashC.create = () => hashCons();
14378
- return hashC;
14379
- }
14380
- function createOptHasher(hashCons) {
14381
- const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
14382
- const tmp = hashCons({});
14383
- hashC.outputLen = tmp.outputLen;
14384
- hashC.blockLen = tmp.blockLen;
14385
- hashC.create = (opts) => hashCons(opts);
14386
- return hashC;
14387
- }
14388
- function createXOFer(hashCons) {
14389
- const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
14390
- const tmp = hashCons({});
14350
+ /** Creates function with outputLen, blockLen, create properties from a class constructor. */
14351
+ function utils_createHasher(hashCons, info = {}) {
14352
+ const hashC = (msg, opts) => hashCons(opts).update(msg).digest();
14353
+ const tmp = hashCons(undefined);
14391
14354
  hashC.outputLen = tmp.outputLen;
14392
14355
  hashC.blockLen = tmp.blockLen;
14393
14356
  hashC.create = (opts) => hashCons(opts);
14394
- return hashC;
14357
+ Object.assign(hashC, info);
14358
+ return Object.freeze(hashC);
14395
14359
  }
14396
- const wrapConstructor = (/* unused pure expression or super */ null && (utils_createHasher));
14397
- const wrapConstructorWithOpts = (/* unused pure expression or super */ null && (createOptHasher));
14398
- const wrapXOFConstructorWithOpts = (/* unused pure expression or super */ null && (createXOFer));
14399
14360
  /** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */
14400
- function utils_randomBytes(bytesLength = 32) {
14401
- if (crypto_crypto && typeof crypto_crypto.getRandomValues === 'function') {
14402
- return crypto_crypto.getRandomValues(new Uint8Array(bytesLength));
14403
- }
14404
- // Legacy Node.js compatibility
14405
- if (crypto_crypto && typeof crypto_crypto.randomBytes === 'function') {
14406
- return Uint8Array.from(crypto_crypto.randomBytes(bytesLength));
14407
- }
14408
- throw new Error('crypto.getRandomValues must be defined');
14409
- }
14361
+ function randomBytes(bytesLength = 32) {
14362
+ const cr = typeof globalThis === 'object' ? globalThis.crypto : null;
14363
+ if (typeof cr?.getRandomValues !== 'function')
14364
+ throw new Error('crypto.getRandomValues must be defined');
14365
+ return cr.getRandomValues(new Uint8Array(bytesLength));
14366
+ }
14367
+ /** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */
14368
+ const utils_oidNist = (suffix) => ({
14369
+ oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),
14370
+ });
14410
14371
  //# sourceMappingURL=utils.js.map
14411
- ;// ./node_modules/@noble/hashes/esm/_md.js
14372
+ ;// ./node_modules/@noble/hashes/_md.js
14412
14373
  /**
14413
14374
  * Internal Merkle-Damgard hash utils.
14414
14375
  * @module
14415
14376
  */
14416
14377
 
14417
- /** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */
14418
- function setBigUint64(view, byteOffset, value, isLE) {
14419
- if (typeof view.setBigUint64 === 'function')
14420
- return view.setBigUint64(byteOffset, value, isLE);
14421
- const _32n = BigInt(32);
14422
- const _u32_max = BigInt(0xffffffff);
14423
- const wh = Number((value >> _32n) & _u32_max);
14424
- const wl = Number(value & _u32_max);
14425
- const h = isLE ? 4 : 0;
14426
- const l = isLE ? 0 : 4;
14427
- view.setUint32(byteOffset + h, wh, isLE);
14428
- view.setUint32(byteOffset + l, wl, isLE);
14429
- }
14430
14378
  /** Choice: a ? b : c */
14431
14379
  function Chi(a, b, c) {
14432
14380
  return (a & b) ^ (~a & c);
@@ -14439,13 +14387,19 @@ function Maj(a, b, c) {
14439
14387
  * Merkle-Damgard hash construction base class.
14440
14388
  * Could be used to create MD5, RIPEMD, SHA1, SHA2.
14441
14389
  */
14442
- class HashMD extends Hash {
14390
+ class HashMD {
14391
+ blockLen;
14392
+ outputLen;
14393
+ padOffset;
14394
+ isLE;
14395
+ // For partial updates less than block size
14396
+ buffer;
14397
+ view;
14398
+ finished = false;
14399
+ length = 0;
14400
+ pos = 0;
14401
+ destroyed = false;
14443
14402
  constructor(blockLen, outputLen, padOffset, isLE) {
14444
- super();
14445
- this.finished = false;
14446
- this.length = 0;
14447
- this.pos = 0;
14448
- this.destroyed = false;
14449
14403
  this.blockLen = blockLen;
14450
14404
  this.outputLen = outputLen;
14451
14405
  this.padOffset = padOffset;
@@ -14455,8 +14409,7 @@ class HashMD extends Hash {
14455
14409
  }
14456
14410
  update(data) {
14457
14411
  aexists(this);
14458
- data = toBytes(data);
14459
- abytes(data);
14412
+ utils_abytes(data);
14460
14413
  const { view, buffer, blockLen } = this;
14461
14414
  const len = data.length;
14462
14415
  for (let pos = 0; pos < len;) {
@@ -14504,13 +14457,13 @@ class HashMD extends Hash {
14504
14457
  // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that
14505
14458
  // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.
14506
14459
  // So we just write lowest 64 bits of that value.
14507
- setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);
14460
+ view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);
14508
14461
  this.process(view, 0);
14509
14462
  const oview = createView(out);
14510
14463
  const len = this.outputLen;
14511
- // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT
14464
+ // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT
14512
14465
  if (len % 4)
14513
- throw new Error('_sha2: outputLen should be aligned to 32bit');
14466
+ throw new Error('_sha2: outputLen must be aligned to 32bit');
14514
14467
  const outLen = len / 4;
14515
14468
  const state = this.get();
14516
14469
  if (outLen > state.length)
@@ -14526,7 +14479,7 @@ class HashMD extends Hash {
14526
14479
  return res;
14527
14480
  }
14528
14481
  _cloneInto(to) {
14529
- to || (to = new this.constructor());
14482
+ to ||= new this.constructor();
14530
14483
  to.set(...this.get());
14531
14484
  const { blockLen, buffer, length, finished, destroyed, pos } = this;
14532
14485
  to.destroyed = destroyed;
@@ -14564,7 +14517,7 @@ const SHA512_IV = /* @__PURE__ */ Uint32Array.from([
14564
14517
  0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,
14565
14518
  ]);
14566
14519
  //# sourceMappingURL=_md.js.map
14567
- ;// ./node_modules/@noble/hashes/esm/_u64.js
14520
+ ;// ./node_modules/@noble/hashes/_u64.js
14568
14521
  /**
14569
14522
  * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.
14570
14523
  * @todo re-check https://issues.chromium.org/issues/42212588
@@ -14632,11 +14585,11 @@ const u64 = {
14632
14585
  };
14633
14586
  /* harmony default export */ const _u64 = ((/* unused pure expression or super */ null && (u64)));
14634
14587
  //# sourceMappingURL=_u64.js.map
14635
- ;// ./node_modules/@noble/hashes/esm/sha2.js
14588
+ ;// ./node_modules/@noble/hashes/sha2.js
14636
14589
  /**
14637
14590
  * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.
14638
14591
  * SHA256 is the fastest hash implementable in JS, even faster than Blake3.
14639
- * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and
14592
+ * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and
14640
14593
  * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).
14641
14594
  * @module
14642
14595
  */
@@ -14660,19 +14613,10 @@ const SHA256_K = /* @__PURE__ */ Uint32Array.from([
14660
14613
  ]);
14661
14614
  /** Reusable temporary buffer. "W" comes straight from spec. */
14662
14615
  const SHA256_W = /* @__PURE__ */ new Uint32Array(64);
14663
- class SHA256 extends HashMD {
14664
- constructor(outputLen = 32) {
14616
+ /** Internal 32-byte base SHA2 hash class. */
14617
+ class SHA2_32B extends HashMD {
14618
+ constructor(outputLen) {
14665
14619
  super(64, outputLen, 8, false);
14666
- // We cannot use array here since array allows indexing by variable
14667
- // which means optimizer/compiler cannot use registers.
14668
- this.A = SHA256_IV[0] | 0;
14669
- this.B = SHA256_IV[1] | 0;
14670
- this.C = SHA256_IV[2] | 0;
14671
- this.D = SHA256_IV[3] | 0;
14672
- this.E = SHA256_IV[4] | 0;
14673
- this.F = SHA256_IV[5] | 0;
14674
- this.G = SHA256_IV[6] | 0;
14675
- this.H = SHA256_IV[7] | 0;
14676
14620
  }
14677
14621
  get() {
14678
14622
  const { A, B, C, D, E, F, G, H } = this;
@@ -14735,17 +14679,34 @@ class SHA256 extends HashMD {
14735
14679
  clean(this.buffer);
14736
14680
  }
14737
14681
  }
14738
- class SHA224 extends SHA256 {
14682
+ /** Internal SHA2-256 hash class. */
14683
+ class _SHA256 extends SHA2_32B {
14684
+ // We cannot use array here since array allows indexing by variable
14685
+ // which means optimizer/compiler cannot use registers.
14686
+ A = SHA256_IV[0] | 0;
14687
+ B = SHA256_IV[1] | 0;
14688
+ C = SHA256_IV[2] | 0;
14689
+ D = SHA256_IV[3] | 0;
14690
+ E = SHA256_IV[4] | 0;
14691
+ F = SHA256_IV[5] | 0;
14692
+ G = SHA256_IV[6] | 0;
14693
+ H = SHA256_IV[7] | 0;
14694
+ constructor() {
14695
+ super(32);
14696
+ }
14697
+ }
14698
+ /** Internal SHA2-224 hash class. */
14699
+ class _SHA224 extends SHA2_32B {
14700
+ A = SHA224_IV[0] | 0;
14701
+ B = SHA224_IV[1] | 0;
14702
+ C = SHA224_IV[2] | 0;
14703
+ D = SHA224_IV[3] | 0;
14704
+ E = SHA224_IV[4] | 0;
14705
+ F = SHA224_IV[5] | 0;
14706
+ G = SHA224_IV[6] | 0;
14707
+ H = SHA224_IV[7] | 0;
14739
14708
  constructor() {
14740
14709
  super(28);
14741
- this.A = SHA224_IV[0] | 0;
14742
- this.B = SHA224_IV[1] | 0;
14743
- this.C = SHA224_IV[2] | 0;
14744
- this.D = SHA224_IV[3] | 0;
14745
- this.E = SHA224_IV[4] | 0;
14746
- this.F = SHA224_IV[5] | 0;
14747
- this.G = SHA224_IV[6] | 0;
14748
- this.H = SHA224_IV[7] | 0;
14749
14710
  }
14750
14711
  }
14751
14712
  // SHA2-512 is slower than sha256 in js because u64 operations are slow.
@@ -14779,28 +14740,10 @@ const SHA512_Kl = /* @__PURE__ */ (() => K512[1])();
14779
14740
  // Reusable temporary buffers
14780
14741
  const SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);
14781
14742
  const SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);
14782
- class SHA512 extends HashMD {
14783
- constructor(outputLen = 64) {
14743
+ /** Internal 64-byte base SHA2 hash class. */
14744
+ class SHA2_64B extends HashMD {
14745
+ constructor(outputLen) {
14784
14746
  super(128, outputLen, 16, false);
14785
- // We cannot use array here since array allows indexing by variable
14786
- // which means optimizer/compiler cannot use registers.
14787
- // h -- high 32 bits, l -- low 32 bits
14788
- this.Ah = SHA512_IV[0] | 0;
14789
- this.Al = SHA512_IV[1] | 0;
14790
- this.Bh = SHA512_IV[2] | 0;
14791
- this.Bl = SHA512_IV[3] | 0;
14792
- this.Ch = SHA512_IV[4] | 0;
14793
- this.Cl = SHA512_IV[5] | 0;
14794
- this.Dh = SHA512_IV[6] | 0;
14795
- this.Dl = SHA512_IV[7] | 0;
14796
- this.Eh = SHA512_IV[8] | 0;
14797
- this.El = SHA512_IV[9] | 0;
14798
- this.Fh = SHA512_IV[10] | 0;
14799
- this.Fl = SHA512_IV[11] | 0;
14800
- this.Gh = SHA512_IV[12] | 0;
14801
- this.Gl = SHA512_IV[13] | 0;
14802
- this.Hh = SHA512_IV[14] | 0;
14803
- this.Hl = SHA512_IV[15] | 0;
14804
14747
  }
14805
14748
  // prettier-ignore
14806
14749
  get() {
@@ -14904,25 +14847,48 @@ class SHA512 extends HashMD {
14904
14847
  this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
14905
14848
  }
14906
14849
  }
14907
- class SHA384 extends SHA512 {
14850
+ /** Internal SHA2-512 hash class. */
14851
+ class _SHA512 extends SHA2_64B {
14852
+ Ah = SHA512_IV[0] | 0;
14853
+ Al = SHA512_IV[1] | 0;
14854
+ Bh = SHA512_IV[2] | 0;
14855
+ Bl = SHA512_IV[3] | 0;
14856
+ Ch = SHA512_IV[4] | 0;
14857
+ Cl = SHA512_IV[5] | 0;
14858
+ Dh = SHA512_IV[6] | 0;
14859
+ Dl = SHA512_IV[7] | 0;
14860
+ Eh = SHA512_IV[8] | 0;
14861
+ El = SHA512_IV[9] | 0;
14862
+ Fh = SHA512_IV[10] | 0;
14863
+ Fl = SHA512_IV[11] | 0;
14864
+ Gh = SHA512_IV[12] | 0;
14865
+ Gl = SHA512_IV[13] | 0;
14866
+ Hh = SHA512_IV[14] | 0;
14867
+ Hl = SHA512_IV[15] | 0;
14868
+ constructor() {
14869
+ super(64);
14870
+ }
14871
+ }
14872
+ /** Internal SHA2-384 hash class. */
14873
+ class _SHA384 extends SHA2_64B {
14874
+ Ah = SHA384_IV[0] | 0;
14875
+ Al = SHA384_IV[1] | 0;
14876
+ Bh = SHA384_IV[2] | 0;
14877
+ Bl = SHA384_IV[3] | 0;
14878
+ Ch = SHA384_IV[4] | 0;
14879
+ Cl = SHA384_IV[5] | 0;
14880
+ Dh = SHA384_IV[6] | 0;
14881
+ Dl = SHA384_IV[7] | 0;
14882
+ Eh = SHA384_IV[8] | 0;
14883
+ El = SHA384_IV[9] | 0;
14884
+ Fh = SHA384_IV[10] | 0;
14885
+ Fl = SHA384_IV[11] | 0;
14886
+ Gh = SHA384_IV[12] | 0;
14887
+ Gl = SHA384_IV[13] | 0;
14888
+ Hh = SHA384_IV[14] | 0;
14889
+ Hl = SHA384_IV[15] | 0;
14908
14890
  constructor() {
14909
14891
  super(48);
14910
- this.Ah = SHA384_IV[0] | 0;
14911
- this.Al = SHA384_IV[1] | 0;
14912
- this.Bh = SHA384_IV[2] | 0;
14913
- this.Bl = SHA384_IV[3] | 0;
14914
- this.Ch = SHA384_IV[4] | 0;
14915
- this.Cl = SHA384_IV[5] | 0;
14916
- this.Dh = SHA384_IV[6] | 0;
14917
- this.Dl = SHA384_IV[7] | 0;
14918
- this.Eh = SHA384_IV[8] | 0;
14919
- this.El = SHA384_IV[9] | 0;
14920
- this.Fh = SHA384_IV[10] | 0;
14921
- this.Fl = SHA384_IV[11] | 0;
14922
- this.Gh = SHA384_IV[12] | 0;
14923
- this.Gl = SHA384_IV[13] | 0;
14924
- this.Hh = SHA384_IV[14] | 0;
14925
- this.Hl = SHA384_IV[15] | 0;
14926
14892
  }
14927
14893
  }
14928
14894
  /**
@@ -14941,161 +14907,83 @@ const T256_IV = /* @__PURE__ */ Uint32Array.from([
14941
14907
  0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,
14942
14908
  0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,
14943
14909
  ]);
14944
- class SHA512_224 extends SHA512 {
14910
+ /** Internal SHA2-512/224 hash class. */
14911
+ class _SHA512_224 extends SHA2_64B {
14912
+ Ah = T224_IV[0] | 0;
14913
+ Al = T224_IV[1] | 0;
14914
+ Bh = T224_IV[2] | 0;
14915
+ Bl = T224_IV[3] | 0;
14916
+ Ch = T224_IV[4] | 0;
14917
+ Cl = T224_IV[5] | 0;
14918
+ Dh = T224_IV[6] | 0;
14919
+ Dl = T224_IV[7] | 0;
14920
+ Eh = T224_IV[8] | 0;
14921
+ El = T224_IV[9] | 0;
14922
+ Fh = T224_IV[10] | 0;
14923
+ Fl = T224_IV[11] | 0;
14924
+ Gh = T224_IV[12] | 0;
14925
+ Gl = T224_IV[13] | 0;
14926
+ Hh = T224_IV[14] | 0;
14927
+ Hl = T224_IV[15] | 0;
14945
14928
  constructor() {
14946
14929
  super(28);
14947
- this.Ah = T224_IV[0] | 0;
14948
- this.Al = T224_IV[1] | 0;
14949
- this.Bh = T224_IV[2] | 0;
14950
- this.Bl = T224_IV[3] | 0;
14951
- this.Ch = T224_IV[4] | 0;
14952
- this.Cl = T224_IV[5] | 0;
14953
- this.Dh = T224_IV[6] | 0;
14954
- this.Dl = T224_IV[7] | 0;
14955
- this.Eh = T224_IV[8] | 0;
14956
- this.El = T224_IV[9] | 0;
14957
- this.Fh = T224_IV[10] | 0;
14958
- this.Fl = T224_IV[11] | 0;
14959
- this.Gh = T224_IV[12] | 0;
14960
- this.Gl = T224_IV[13] | 0;
14961
- this.Hh = T224_IV[14] | 0;
14962
- this.Hl = T224_IV[15] | 0;
14963
- }
14964
- }
14965
- class SHA512_256 extends SHA512 {
14930
+ }
14931
+ }
14932
+ /** Internal SHA2-512/256 hash class. */
14933
+ class _SHA512_256 extends SHA2_64B {
14934
+ Ah = T256_IV[0] | 0;
14935
+ Al = T256_IV[1] | 0;
14936
+ Bh = T256_IV[2] | 0;
14937
+ Bl = T256_IV[3] | 0;
14938
+ Ch = T256_IV[4] | 0;
14939
+ Cl = T256_IV[5] | 0;
14940
+ Dh = T256_IV[6] | 0;
14941
+ Dl = T256_IV[7] | 0;
14942
+ Eh = T256_IV[8] | 0;
14943
+ El = T256_IV[9] | 0;
14944
+ Fh = T256_IV[10] | 0;
14945
+ Fl = T256_IV[11] | 0;
14946
+ Gh = T256_IV[12] | 0;
14947
+ Gl = T256_IV[13] | 0;
14948
+ Hh = T256_IV[14] | 0;
14949
+ Hl = T256_IV[15] | 0;
14966
14950
  constructor() {
14967
14951
  super(32);
14968
- this.Ah = T256_IV[0] | 0;
14969
- this.Al = T256_IV[1] | 0;
14970
- this.Bh = T256_IV[2] | 0;
14971
- this.Bl = T256_IV[3] | 0;
14972
- this.Ch = T256_IV[4] | 0;
14973
- this.Cl = T256_IV[5] | 0;
14974
- this.Dh = T256_IV[6] | 0;
14975
- this.Dl = T256_IV[7] | 0;
14976
- this.Eh = T256_IV[8] | 0;
14977
- this.El = T256_IV[9] | 0;
14978
- this.Fh = T256_IV[10] | 0;
14979
- this.Fl = T256_IV[11] | 0;
14980
- this.Gh = T256_IV[12] | 0;
14981
- this.Gl = T256_IV[13] | 0;
14982
- this.Hh = T256_IV[14] | 0;
14983
- this.Hl = T256_IV[15] | 0;
14984
14952
  }
14985
14953
  }
14986
14954
  /**
14987
- * SHA2-256 hash function from RFC 4634.
14955
+ * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:
14988
14956
  *
14989
- * It is the fastest JS hash, even faster than Blake3.
14990
- * To break sha256 using birthday attack, attackers need to try 2^128 hashes.
14991
- * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.
14957
+ * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.
14958
+ * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.
14959
+ * - Each sha256 hash is executing 2^18 bit operations.
14960
+ * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.
14992
14961
  */
14993
- const sha2_sha256 = /* @__PURE__ */ utils_createHasher(() => new SHA256());
14962
+ const sha2_sha256 = /* @__PURE__ */ utils_createHasher(() => new _SHA256(),
14963
+ /* @__PURE__ */ utils_oidNist(0x01));
14994
14964
  /** SHA2-224 hash function from RFC 4634 */
14995
- const sha224 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new SHA224())));
14965
+ const sha224 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new _SHA224(),
14966
+ /* @__PURE__ */ oidNist(0x04))));
14996
14967
  /** SHA2-512 hash function from RFC 4634. */
14997
- const sha512 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new SHA512())));
14968
+ const sha512 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new _SHA512(),
14969
+ /* @__PURE__ */ oidNist(0x03))));
14998
14970
  /** SHA2-384 hash function from RFC 4634. */
14999
- const sha384 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new SHA384())));
14971
+ const sha384 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new _SHA384(),
14972
+ /* @__PURE__ */ oidNist(0x02))));
15000
14973
  /**
15001
14974
  * SHA2-512/256 "truncated" hash function, with improved resistance to length extension attacks.
15002
14975
  * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).
15003
14976
  */
15004
- const sha512_256 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new SHA512_256())));
14977
+ const sha512_256 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new _SHA512_256(),
14978
+ /* @__PURE__ */ oidNist(0x06))));
15005
14979
  /**
15006
14980
  * SHA2-512/224 "truncated" hash function, with improved resistance to length extension attacks.
15007
14981
  * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).
15008
14982
  */
15009
- const sha512_224 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new SHA512_224())));
14983
+ const sha512_224 = /* @__PURE__ */ (/* unused pure expression or super */ null && (createHasher(() => new _SHA512_224(),
14984
+ /* @__PURE__ */ oidNist(0x05))));
15010
14985
  //# sourceMappingURL=sha2.js.map
15011
- ;// ./node_modules/@noble/hashes/esm/hmac.js
15012
- /**
15013
- * HMAC: RFC2104 message authentication code.
15014
- * @module
15015
- */
15016
-
15017
- class HMAC extends Hash {
15018
- constructor(hash, _key) {
15019
- super();
15020
- this.finished = false;
15021
- this.destroyed = false;
15022
- ahash(hash);
15023
- const key = toBytes(_key);
15024
- this.iHash = hash.create();
15025
- if (typeof this.iHash.update !== 'function')
15026
- throw new Error('Expected instance of class which extends utils.Hash');
15027
- this.blockLen = this.iHash.blockLen;
15028
- this.outputLen = this.iHash.outputLen;
15029
- const blockLen = this.blockLen;
15030
- const pad = new Uint8Array(blockLen);
15031
- // blockLen can be bigger than outputLen
15032
- pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);
15033
- for (let i = 0; i < pad.length; i++)
15034
- pad[i] ^= 0x36;
15035
- this.iHash.update(pad);
15036
- // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone
15037
- this.oHash = hash.create();
15038
- // Undo internal XOR && apply outer XOR
15039
- for (let i = 0; i < pad.length; i++)
15040
- pad[i] ^= 0x36 ^ 0x5c;
15041
- this.oHash.update(pad);
15042
- clean(pad);
15043
- }
15044
- update(buf) {
15045
- aexists(this);
15046
- this.iHash.update(buf);
15047
- return this;
15048
- }
15049
- digestInto(out) {
15050
- aexists(this);
15051
- abytes(out, this.outputLen);
15052
- this.finished = true;
15053
- this.iHash.digestInto(out);
15054
- this.oHash.update(out);
15055
- this.oHash.digestInto(out);
15056
- this.destroy();
15057
- }
15058
- digest() {
15059
- const out = new Uint8Array(this.oHash.outputLen);
15060
- this.digestInto(out);
15061
- return out;
15062
- }
15063
- _cloneInto(to) {
15064
- // Create new instance without calling constructor since key already in state and we don't know it.
15065
- to || (to = Object.create(Object.getPrototypeOf(this), {}));
15066
- const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;
15067
- to = to;
15068
- to.finished = finished;
15069
- to.destroyed = destroyed;
15070
- to.blockLen = blockLen;
15071
- to.outputLen = outputLen;
15072
- to.oHash = oHash._cloneInto(to.oHash);
15073
- to.iHash = iHash._cloneInto(to.iHash);
15074
- return to;
15075
- }
15076
- clone() {
15077
- return this._cloneInto();
15078
- }
15079
- destroy() {
15080
- this.destroyed = true;
15081
- this.oHash.destroy();
15082
- this.iHash.destroy();
15083
- }
15084
- }
15085
- /**
15086
- * HMAC: RFC2104 message authentication code.
15087
- * @param hash - function that would be used e.g. sha256
15088
- * @param key - message key
15089
- * @param message - message data
15090
- * @example
15091
- * import { hmac } from '@noble/hashes/hmac';
15092
- * import { sha256 } from '@noble/hashes/sha2';
15093
- * const mac1 = hmac(sha256, 'key', 'message');
15094
- */
15095
- const hmac_hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();
15096
- hmac_hmac.create = (hash, key) => new HMAC(hash, key);
15097
- //# sourceMappingURL=hmac.js.map
15098
- ;// ./node_modules/@noble/curves/esm/utils.js
14986
+ ;// ./node_modules/@noble/curves/utils.js
15099
14987
  /**
15100
14988
  * Hex, bytes and number utilities.
15101
14989
  * @module
@@ -15105,35 +14993,31 @@ hmac_hmac.create = (hash, key) => new HMAC(hash, key);
15105
14993
 
15106
14994
  const _0n = /* @__PURE__ */ BigInt(0);
15107
14995
  const _1n = /* @__PURE__ */ BigInt(1);
15108
- function abool(title, value) {
15109
- if (typeof value !== 'boolean')
15110
- throw new Error(title + ' boolean expected, got ' + value);
15111
- }
15112
- // tmp name until v2
15113
- function _abool2(value, title = '') {
14996
+ function utils_abool(value, title = '') {
15114
14997
  if (typeof value !== 'boolean') {
15115
- const prefix = title && `"${title}"`;
14998
+ const prefix = title && `"${title}" `;
15116
14999
  throw new Error(prefix + 'expected boolean, got type=' + typeof value);
15117
15000
  }
15118
15001
  return value;
15119
15002
  }
15120
- // tmp name until v2
15121
- /** Asserts something is Uint8Array. */
15122
- function _abytes2(value, length, title = '') {
15123
- const bytes = isBytes(value);
15124
- const len = value?.length;
15125
- const needsLen = length !== undefined;
15126
- if (!bytes || (needsLen && len !== length)) {
15003
+ // Used in weierstrass, der
15004
+ function abignumber(n) {
15005
+ if (typeof n === 'bigint') {
15006
+ if (!isPosBig(n))
15007
+ throw new Error('positive bigint expected, got ' + n);
15008
+ }
15009
+ else
15010
+ utils_anumber(n);
15011
+ return n;
15012
+ }
15013
+ function asafenumber(value, title = '') {
15014
+ if (!Number.isSafeInteger(value)) {
15127
15015
  const prefix = title && `"${title}" `;
15128
- const ofLen = needsLen ? ` of length ${length}` : '';
15129
- const got = bytes ? `length=${len}` : `type=${typeof value}`;
15130
- throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);
15016
+ throw new Error(prefix + 'expected safe integer, got type=' + typeof value);
15131
15017
  }
15132
- return value;
15133
15018
  }
15134
- // Used in weierstrass, der
15135
15019
  function numberToHexUnpadded(num) {
15136
- const hex = num.toString(16);
15020
+ const hex = abignumber(num).toString(16);
15137
15021
  return hex.length & 1 ? '0' + hex : hex;
15138
15022
  }
15139
15023
  function hexToNumber(hex) {
@@ -15143,53 +15027,25 @@ function hexToNumber(hex) {
15143
15027
  }
15144
15028
  // BE: Big Endian, LE: Little Endian
15145
15029
  function utils_bytesToNumberBE(bytes) {
15146
- return hexToNumber(bytesToHex(bytes));
15030
+ return hexToNumber(utils_bytesToHex(bytes));
15147
15031
  }
15148
- function utils_bytesToNumberLE(bytes) {
15149
- abytes(bytes);
15150
- return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));
15032
+ function bytesToNumberLE(bytes) {
15033
+ return hexToNumber(utils_bytesToHex(copyBytes(utils_abytes(bytes)).reverse()));
15151
15034
  }
15152
15035
  function numberToBytesBE(n, len) {
15153
- return hexToBytes(n.toString(16).padStart(len * 2, '0'));
15036
+ utils_anumber(len);
15037
+ n = abignumber(n);
15038
+ const res = utils_hexToBytes(n.toString(16).padStart(len * 2, '0'));
15039
+ if (res.length !== len)
15040
+ throw new Error('number too large');
15041
+ return res;
15154
15042
  }
15155
15043
  function numberToBytesLE(n, len) {
15156
15044
  return numberToBytesBE(n, len).reverse();
15157
15045
  }
15158
15046
  // Unpadded, rarely used
15159
15047
  function numberToVarBytesBE(n) {
15160
- return hexToBytes_(numberToHexUnpadded(n));
15161
- }
15162
- /**
15163
- * Takes hex string or Uint8Array, converts to Uint8Array.
15164
- * Validates output length.
15165
- * Will throw error for other types.
15166
- * @param title descriptive title for an error e.g. 'secret key'
15167
- * @param hex hex string or Uint8Array
15168
- * @param expectedLength optional, will compare to result array's length
15169
- * @returns
15170
- */
15171
- function utils_ensureBytes(title, hex, expectedLength) {
15172
- let res;
15173
- if (typeof hex === 'string') {
15174
- try {
15175
- res = hexToBytes(hex);
15176
- }
15177
- catch (e) {
15178
- throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);
15179
- }
15180
- }
15181
- else if (isBytes(hex)) {
15182
- // Uint8Array.from() instead of hash.slice() because node.js Buffer
15183
- // is instance of Uint8Array, and its slice() creates **mutable** copy
15184
- res = Uint8Array.from(hex);
15185
- }
15186
- else {
15187
- throw new Error(title + ' must be hex string or Uint8Array');
15188
- }
15189
- const len = res.length;
15190
- if (typeof expectedLength === 'number' && len !== expectedLength)
15191
- throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);
15192
- return res;
15048
+ return hexToBytes_(numberToHexUnpadded(abignumber(n)));
15193
15049
  }
15194
15050
  // Compares 2 u8a-s in kinda constant time
15195
15051
  function equalBytes(a, b) {
@@ -15210,7 +15066,7 @@ function copyBytes(bytes) {
15210
15066
  /**
15211
15067
  * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols
15212
15068
  * Should be safe to use for things expected to be ASCII.
15213
- * Returns exact same result as utf8ToBytes for ASCII or throws.
15069
+ * Returns exact same result as `TextEncoder` for ASCII or throws.
15214
15070
  */
15215
15071
  function asciiToBytes(ascii) {
15216
15072
  return Uint8Array.from(ascii, (c, i) => {
@@ -15221,18 +15077,9 @@ function asciiToBytes(ascii) {
15221
15077
  return charCode;
15222
15078
  });
15223
15079
  }
15224
- /**
15225
- * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
15226
- */
15227
- // export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;
15228
- /**
15229
- * Converts bytes to string using UTF8 encoding.
15230
- * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'
15231
- */
15232
- // export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;
15233
15080
  // Is positive bigint
15234
15081
  const isPosBig = (n) => typeof n === 'bigint' && _0n <= n;
15235
- function utils_inRange(n, min, max) {
15082
+ function inRange(n, min, max) {
15236
15083
  return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;
15237
15084
  }
15238
15085
  /**
@@ -15240,13 +15087,13 @@ function utils_inRange(n, min, max) {
15240
15087
  * @example
15241
15088
  * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)
15242
15089
  */
15243
- function aInRange(title, n, min, max) {
15090
+ function utils_aInRange(title, n, min, max) {
15244
15091
  // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?
15245
15092
  // consider P=256n, min=0n, max=P
15246
15093
  // - a for min=0 would require -1: `inRange('x', x, -1n, P)`
15247
15094
  // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`
15248
15095
  // - our way is the cleanest: `inRange('x', x, 0n, P)
15249
- if (!utils_inRange(n, min, max))
15096
+ if (!inRange(n, min, max))
15250
15097
  throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);
15251
15098
  }
15252
15099
  // Bit operations
@@ -15255,7 +15102,7 @@ function aInRange(title, n, min, max) {
15255
15102
  * Same as `n.toString(2).length`
15256
15103
  * TODO: merge with nLength in modular
15257
15104
  */
15258
- function bitLen(n) {
15105
+ function utils_bitLen(n) {
15259
15106
  let len;
15260
15107
  for (len = 0; n > _0n; n >>= _1n, len += 1)
15261
15108
  ;
@@ -15287,16 +15134,17 @@ const utils_bitMask = (n) => (_1n << BigInt(n)) - _1n;
15287
15134
  * const drbg = createHmacDRBG<Key>(32, 32, hmac);
15288
15135
  * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined
15289
15136
  */
15290
- function createHmacDrbg(hashLen, qByteLen, hmacFn) {
15291
- if (typeof hashLen !== 'number' || hashLen < 2)
15292
- throw new Error('hashLen must be a number');
15293
- if (typeof qByteLen !== 'number' || qByteLen < 2)
15294
- throw new Error('qByteLen must be a number');
15137
+ function utils_createHmacDrbg(hashLen, qByteLen, hmacFn) {
15138
+ anumber(hashLen, 'hashLen');
15139
+ anumber(qByteLen, 'qByteLen');
15295
15140
  if (typeof hmacFn !== 'function')
15296
15141
  throw new Error('hmacFn must be a function');
15297
- // Step B, Step C: set hashLen to 8*ceil(hlen/8)
15298
15142
  const u8n = (len) => new Uint8Array(len); // creates Uint8Array
15299
- const u8of = (byte) => Uint8Array.of(byte); // another shortcut
15143
+ const NULL = Uint8Array.of();
15144
+ const byte0 = Uint8Array.of(0x00);
15145
+ const byte1 = Uint8Array.of(0x01);
15146
+ const _maxDrbgIters = 1000;
15147
+ // Step B, Step C: set hashLen to 8*ceil(hlen/8)
15300
15148
  let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.
15301
15149
  let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same
15302
15150
  let i = 0; // Iterations counter, will throw when over 1000
@@ -15305,20 +15153,20 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
15305
15153
  k.fill(0);
15306
15154
  i = 0;
15307
15155
  };
15308
- const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)
15309
- const reseed = (seed = u8n(0)) => {
15156
+ const h = (...msgs) => hmacFn(k, concatBytes_(v, ...msgs)); // hmac(k)(v, ...values)
15157
+ const reseed = (seed = NULL) => {
15310
15158
  // HMAC-DRBG reseed() function. Steps D-G
15311
- k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)
15159
+ k = h(byte0, seed); // k = hmac(k || v || 0x00 || seed)
15312
15160
  v = h(); // v = hmac(k || v)
15313
15161
  if (seed.length === 0)
15314
15162
  return;
15315
- k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)
15163
+ k = h(byte1, seed); // k = hmac(k || v || 0x01 || seed)
15316
15164
  v = h(); // v = hmac(k || v)
15317
15165
  };
15318
15166
  const gen = () => {
15319
15167
  // HMAC-DRBG generate() function
15320
- if (i++ >= 1000)
15321
- throw new Error('drbg: tried 1000 values');
15168
+ if (i++ >= _maxDrbgIters)
15169
+ throw new Error('drbg: tried max amount of iterations');
15322
15170
  let len = 0;
15323
15171
  const out = [];
15324
15172
  while (len < qByteLen) {
@@ -15327,7 +15175,7 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
15327
15175
  out.push(sl);
15328
15176
  len += v.length;
15329
15177
  }
15330
- return concatBytes(...out);
15178
+ return concatBytes_(...out);
15331
15179
  };
15332
15180
  const genUntil = (seed, pred) => {
15333
15181
  reset();
@@ -15340,49 +15188,7 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
15340
15188
  };
15341
15189
  return genUntil;
15342
15190
  }
15343
- // Validating curves and fields
15344
- const validatorFns = {
15345
- bigint: (val) => typeof val === 'bigint',
15346
- function: (val) => typeof val === 'function',
15347
- boolean: (val) => typeof val === 'boolean',
15348
- string: (val) => typeof val === 'string',
15349
- stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),
15350
- isSafeInteger: (val) => Number.isSafeInteger(val),
15351
- array: (val) => Array.isArray(val),
15352
- field: (val, object) => object.Fp.isValid(val),
15353
- hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),
15354
- };
15355
- // type Record<K extends string | number | symbol, T> = { [P in K]: T; }
15356
- function utils_validateObject(object, validators, optValidators = {}) {
15357
- const checkField = (fieldName, type, isOptional) => {
15358
- const checkVal = validatorFns[type];
15359
- if (typeof checkVal !== 'function')
15360
- throw new Error('invalid validator function');
15361
- const val = object[fieldName];
15362
- if (isOptional && val === undefined)
15363
- return;
15364
- if (!checkVal(val, object)) {
15365
- throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);
15366
- }
15367
- };
15368
- for (const [fieldName, type] of Object.entries(validators))
15369
- checkField(fieldName, type, false);
15370
- for (const [fieldName, type] of Object.entries(optValidators))
15371
- checkField(fieldName, type, true);
15372
- return object;
15373
- }
15374
- // validate type tests
15375
- // const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };
15376
- // const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!
15377
- // // Should fail type-check
15378
- // const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });
15379
- // const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });
15380
- // const z3 = validateObject(o, { test: 'boolean', z: 'bug' });
15381
- // const z4 = validateObject(o, { a: 'boolean', z: 'bug' });
15382
- function isHash(val) {
15383
- return typeof val === 'function' && Number.isSafeInteger(val.outputLen);
15384
- }
15385
- function _validateObject(object, fields, optFields = {}) {
15191
+ function utils_validateObject(object, fields = {}, optFields = {}) {
15386
15192
  if (!object || typeof object !== 'object')
15387
15193
  throw new Error('expected valid options object');
15388
15194
  function checkField(fieldName, expectedType, isOpt) {
@@ -15393,8 +15199,9 @@ function _validateObject(object, fields, optFields = {}) {
15393
15199
  if (current !== expectedType || val === null)
15394
15200
  throw new Error(`param "${fieldName}" is invalid: expected ${expectedType}, got ${current}`);
15395
15201
  }
15396
- Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));
15397
- Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));
15202
+ const iter = (f, isOpt) => Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt));
15203
+ iter(fields, false);
15204
+ iter(optFields, true);
15398
15205
  }
15399
15206
  /**
15400
15207
  * throws not implemented error
@@ -15418,7 +15225,7 @@ function memoized(fn) {
15418
15225
  };
15419
15226
  }
15420
15227
  //# sourceMappingURL=utils.js.map
15421
- ;// ./node_modules/@noble/curves/esm/abstract/modular.js
15228
+ ;// ./node_modules/@noble/curves/abstract/modular.js
15422
15229
  /**
15423
15230
  * Utils for modular division and fields.
15424
15231
  * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.
@@ -15427,12 +15234,14 @@ function memoized(fn) {
15427
15234
  */
15428
15235
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
15429
15236
 
15237
+ // Numbers aren't used in x25519 / x448 builds
15430
15238
  // prettier-ignore
15431
- const modular_0n = BigInt(0), modular_1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);
15239
+ const modular_0n = /* @__PURE__ */ BigInt(0), modular_1n = /* @__PURE__ */ BigInt(1), _2n = /* @__PURE__ */ BigInt(2);
15432
15240
  // prettier-ignore
15433
- const _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7);
15241
+ const _3n = /* @__PURE__ */ BigInt(3), _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5);
15434
15242
  // prettier-ignore
15435
- const _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);
15243
+ const _7n = /* @__PURE__ */ BigInt(7), _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9);
15244
+ const _16n = /* @__PURE__ */ BigInt(16);
15436
15245
  // Calculates a modulo b
15437
15246
  function mod(a, b) {
15438
15247
  const result = a % b;
@@ -15639,7 +15448,6 @@ const FIELD_FIELDS = [
15639
15448
  function modular_validateField(field) {
15640
15449
  const initial = {
15641
15450
  ORDER: 'bigint',
15642
- MASK: 'bigint',
15643
15451
  BYTES: 'number',
15644
15452
  BITS: 'number',
15645
15453
  };
@@ -15647,7 +15455,7 @@ function modular_validateField(field) {
15647
15455
  map[val] = 'function';
15648
15456
  return map;
15649
15457
  }, initial);
15650
- _validateObject(field, opts);
15458
+ utils_validateObject(field, opts);
15651
15459
  // const max = 16384;
15652
15460
  // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');
15653
15461
  // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');
@@ -15731,14 +15539,151 @@ function FpIsSquare(Fp, n) {
15731
15539
  return l === 1;
15732
15540
  }
15733
15541
  // CURVE.n lengths
15734
- function modular_nLength(n, nBitLength) {
15542
+ function nLength(n, nBitLength) {
15735
15543
  // Bit size, byte size of CURVE.n
15736
15544
  if (nBitLength !== undefined)
15737
- anumber(nBitLength);
15545
+ utils_anumber(nBitLength);
15738
15546
  const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;
15739
15547
  const nByteLength = Math.ceil(_nBitLength / 8);
15740
15548
  return { nBitLength: _nBitLength, nByteLength };
15741
15549
  }
15550
+ class _Field {
15551
+ ORDER;
15552
+ BITS;
15553
+ BYTES;
15554
+ isLE;
15555
+ ZERO = modular_0n;
15556
+ ONE = modular_1n;
15557
+ _lengths;
15558
+ _sqrt; // cached sqrt
15559
+ _mod;
15560
+ constructor(ORDER, opts = {}) {
15561
+ if (ORDER <= modular_0n)
15562
+ throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);
15563
+ let _nbitLength = undefined;
15564
+ this.isLE = false;
15565
+ if (opts != null && typeof opts === 'object') {
15566
+ if (typeof opts.BITS === 'number')
15567
+ _nbitLength = opts.BITS;
15568
+ if (typeof opts.sqrt === 'function')
15569
+ this.sqrt = opts.sqrt;
15570
+ if (typeof opts.isLE === 'boolean')
15571
+ this.isLE = opts.isLE;
15572
+ if (opts.allowedLengths)
15573
+ this._lengths = opts.allowedLengths?.slice();
15574
+ if (typeof opts.modFromBytes === 'boolean')
15575
+ this._mod = opts.modFromBytes;
15576
+ }
15577
+ const { nBitLength, nByteLength } = nLength(ORDER, _nbitLength);
15578
+ if (nByteLength > 2048)
15579
+ throw new Error('invalid field: expected ORDER of <= 2048 bytes');
15580
+ this.ORDER = ORDER;
15581
+ this.BITS = nBitLength;
15582
+ this.BYTES = nByteLength;
15583
+ this._sqrt = undefined;
15584
+ Object.preventExtensions(this);
15585
+ }
15586
+ create(num) {
15587
+ return mod(num, this.ORDER);
15588
+ }
15589
+ isValid(num) {
15590
+ if (typeof num !== 'bigint')
15591
+ throw new Error('invalid field element: expected bigint, got ' + typeof num);
15592
+ return modular_0n <= num && num < this.ORDER; // 0 is valid element, but it's not invertible
15593
+ }
15594
+ is0(num) {
15595
+ return num === modular_0n;
15596
+ }
15597
+ // is valid and invertible
15598
+ isValidNot0(num) {
15599
+ return !this.is0(num) && this.isValid(num);
15600
+ }
15601
+ isOdd(num) {
15602
+ return (num & modular_1n) === modular_1n;
15603
+ }
15604
+ neg(num) {
15605
+ return mod(-num, this.ORDER);
15606
+ }
15607
+ eql(lhs, rhs) {
15608
+ return lhs === rhs;
15609
+ }
15610
+ sqr(num) {
15611
+ return mod(num * num, this.ORDER);
15612
+ }
15613
+ add(lhs, rhs) {
15614
+ return mod(lhs + rhs, this.ORDER);
15615
+ }
15616
+ sub(lhs, rhs) {
15617
+ return mod(lhs - rhs, this.ORDER);
15618
+ }
15619
+ mul(lhs, rhs) {
15620
+ return mod(lhs * rhs, this.ORDER);
15621
+ }
15622
+ pow(num, power) {
15623
+ return FpPow(this, num, power);
15624
+ }
15625
+ div(lhs, rhs) {
15626
+ return mod(lhs * invert(rhs, this.ORDER), this.ORDER);
15627
+ }
15628
+ // Same as above, but doesn't normalize
15629
+ sqrN(num) {
15630
+ return num * num;
15631
+ }
15632
+ addN(lhs, rhs) {
15633
+ return lhs + rhs;
15634
+ }
15635
+ subN(lhs, rhs) {
15636
+ return lhs - rhs;
15637
+ }
15638
+ mulN(lhs, rhs) {
15639
+ return lhs * rhs;
15640
+ }
15641
+ inv(num) {
15642
+ return invert(num, this.ORDER);
15643
+ }
15644
+ sqrt(num) {
15645
+ // Caching _sqrt speeds up sqrt9mod16 by 5x and tonneli-shanks by 10%
15646
+ if (!this._sqrt)
15647
+ this._sqrt = FpSqrt(this.ORDER);
15648
+ return this._sqrt(this, num);
15649
+ }
15650
+ toBytes(num) {
15651
+ return this.isLE ? numberToBytesLE(num, this.BYTES) : numberToBytesBE(num, this.BYTES);
15652
+ }
15653
+ fromBytes(bytes, skipValidation = false) {
15654
+ utils_abytes(bytes);
15655
+ const { _lengths: allowedLengths, BYTES, isLE, ORDER, _mod: modFromBytes } = this;
15656
+ if (allowedLengths) {
15657
+ if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {
15658
+ throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);
15659
+ }
15660
+ const padded = new Uint8Array(BYTES);
15661
+ // isLE add 0 to right, !isLE to the left.
15662
+ padded.set(bytes, isLE ? 0 : padded.length - bytes.length);
15663
+ bytes = padded;
15664
+ }
15665
+ if (bytes.length !== BYTES)
15666
+ throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);
15667
+ let scalar = isLE ? bytesToNumberLE(bytes) : utils_bytesToNumberBE(bytes);
15668
+ if (modFromBytes)
15669
+ scalar = mod(scalar, ORDER);
15670
+ if (!skipValidation)
15671
+ if (!this.isValid(scalar))
15672
+ throw new Error('invalid field element: outside of range 0..ORDER');
15673
+ // NOTE: we don't validate scalar here, please use isValid. This done such way because some
15674
+ // protocol may allow non-reduced scalar that reduced later or changed some other way.
15675
+ return scalar;
15676
+ }
15677
+ // TODO: we don't need it here, move out to separate fn
15678
+ invertBatch(lst) {
15679
+ return modular_FpInvertBatch(this, lst);
15680
+ }
15681
+ // We can't move this out because Fp6, Fp12 implement it
15682
+ // and it's unclear what to return in there.
15683
+ cmov(a, b, condition) {
15684
+ return condition ? b : a;
15685
+ }
15686
+ }
15742
15687
  /**
15743
15688
  * Creates a finite field. Major performance optimizations:
15744
15689
  * * 1. Denormalized operations like mulN instead of mul.
@@ -15758,107 +15703,8 @@ function modular_nLength(n, nBitLength) {
15758
15703
  * @param isLE (default: false) if encoding / decoding should be in little-endian
15759
15704
  * @param redef optional faster redefinitions of sqrt and other methods
15760
15705
  */
15761
- function Field(ORDER, bitLenOrOpts, // TODO: use opts only in v2?
15762
- isLE = false, opts = {}) {
15763
- if (ORDER <= modular_0n)
15764
- throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);
15765
- let _nbitLength = undefined;
15766
- let _sqrt = undefined;
15767
- let modFromBytes = false;
15768
- let allowedLengths = undefined;
15769
- if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {
15770
- if (opts.sqrt || isLE)
15771
- throw new Error('cannot specify opts in two arguments');
15772
- const _opts = bitLenOrOpts;
15773
- if (_opts.BITS)
15774
- _nbitLength = _opts.BITS;
15775
- if (_opts.sqrt)
15776
- _sqrt = _opts.sqrt;
15777
- if (typeof _opts.isLE === 'boolean')
15778
- isLE = _opts.isLE;
15779
- if (typeof _opts.modFromBytes === 'boolean')
15780
- modFromBytes = _opts.modFromBytes;
15781
- allowedLengths = _opts.allowedLengths;
15782
- }
15783
- else {
15784
- if (typeof bitLenOrOpts === 'number')
15785
- _nbitLength = bitLenOrOpts;
15786
- if (opts.sqrt)
15787
- _sqrt = opts.sqrt;
15788
- }
15789
- const { nBitLength: BITS, nByteLength: BYTES } = modular_nLength(ORDER, _nbitLength);
15790
- if (BYTES > 2048)
15791
- throw new Error('invalid field: expected ORDER of <= 2048 bytes');
15792
- let sqrtP; // cached sqrtP
15793
- const f = Object.freeze({
15794
- ORDER,
15795
- isLE,
15796
- BITS,
15797
- BYTES,
15798
- MASK: utils_bitMask(BITS),
15799
- ZERO: modular_0n,
15800
- ONE: modular_1n,
15801
- allowedLengths: allowedLengths,
15802
- create: (num) => mod(num, ORDER),
15803
- isValid: (num) => {
15804
- if (typeof num !== 'bigint')
15805
- throw new Error('invalid field element: expected bigint, got ' + typeof num);
15806
- return modular_0n <= num && num < ORDER; // 0 is valid element, but it's not invertible
15807
- },
15808
- is0: (num) => num === modular_0n,
15809
- // is valid and invertible
15810
- isValidNot0: (num) => !f.is0(num) && f.isValid(num),
15811
- isOdd: (num) => (num & modular_1n) === modular_1n,
15812
- neg: (num) => mod(-num, ORDER),
15813
- eql: (lhs, rhs) => lhs === rhs,
15814
- sqr: (num) => mod(num * num, ORDER),
15815
- add: (lhs, rhs) => mod(lhs + rhs, ORDER),
15816
- sub: (lhs, rhs) => mod(lhs - rhs, ORDER),
15817
- mul: (lhs, rhs) => mod(lhs * rhs, ORDER),
15818
- pow: (num, power) => FpPow(f, num, power),
15819
- div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),
15820
- // Same as above, but doesn't normalize
15821
- sqrN: (num) => num * num,
15822
- addN: (lhs, rhs) => lhs + rhs,
15823
- subN: (lhs, rhs) => lhs - rhs,
15824
- mulN: (lhs, rhs) => lhs * rhs,
15825
- inv: (num) => invert(num, ORDER),
15826
- sqrt: _sqrt ||
15827
- ((n) => {
15828
- if (!sqrtP)
15829
- sqrtP = FpSqrt(ORDER);
15830
- return sqrtP(f, n);
15831
- }),
15832
- toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),
15833
- fromBytes: (bytes, skipValidation = true) => {
15834
- if (allowedLengths) {
15835
- if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {
15836
- throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);
15837
- }
15838
- const padded = new Uint8Array(BYTES);
15839
- // isLE add 0 to right, !isLE to the left.
15840
- padded.set(bytes, isLE ? 0 : padded.length - bytes.length);
15841
- bytes = padded;
15842
- }
15843
- if (bytes.length !== BYTES)
15844
- throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);
15845
- let scalar = isLE ? utils_bytesToNumberLE(bytes) : utils_bytesToNumberBE(bytes);
15846
- if (modFromBytes)
15847
- scalar = mod(scalar, ORDER);
15848
- if (!skipValidation)
15849
- if (!f.isValid(scalar))
15850
- throw new Error('invalid field element: outside of range 0..ORDER');
15851
- // NOTE: we don't validate scalar here, please use isValid. This done such way because some
15852
- // protocol may allow non-reduced scalar that reduced later or changed some other way.
15853
- return scalar;
15854
- },
15855
- // TODO: we don't need it here, move out to separate fn
15856
- invertBatch: (lst) => modular_FpInvertBatch(f, lst),
15857
- // We can't move this out because Fp6, Fp12 implement it
15858
- // and it's unclear what to return in there.
15859
- cmov: (a, b, c) => (c ? b : a),
15860
- });
15861
- return Object.freeze(f);
15706
+ function Field(ORDER, opts = {}) {
15707
+ return new _Field(ORDER, opts);
15862
15708
  }
15863
15709
  // Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?
15864
15710
  // This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).
@@ -15885,21 +15731,6 @@ function FpSqrtEven(Fp, elm) {
15885
15731
  const root = Fp.sqrt(elm);
15886
15732
  return Fp.isOdd(root) ? Fp.neg(root) : root;
15887
15733
  }
15888
- /**
15889
- * "Constant-time" private key generation utility.
15890
- * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).
15891
- * Which makes it slightly more biased, less secure.
15892
- * @deprecated use `mapKeyToField` instead
15893
- */
15894
- function hashToPrivateScalar(hash, groupOrder, isLE = false) {
15895
- hash = ensureBytes('privateHash', hash);
15896
- const hashLen = hash.length;
15897
- const minLen = modular_nLength(groupOrder).nByteLength + 8;
15898
- if (minLen < 24 || hashLen < minLen || hashLen > 1024)
15899
- throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);
15900
- const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);
15901
- return mod(num, groupOrder - modular_1n) + modular_1n;
15902
- }
15903
15734
  /**
15904
15735
  * Returns total number of bytes consumed by the field element.
15905
15736
  * For example, 32 bytes for usual 256-bit weierstrass curve.
@@ -15919,7 +15750,7 @@ function getFieldBytesLength(fieldOrder) {
15919
15750
  * @param fieldOrder number of field elements, usually CURVE.n
15920
15751
  * @returns byte length of target hash
15921
15752
  */
15922
- function getMinHashLength(fieldOrder) {
15753
+ function modular_getMinHashLength(fieldOrder) {
15923
15754
  const length = getFieldBytesLength(fieldOrder);
15924
15755
  return length + Math.ceil(length / 2);
15925
15756
  }
@@ -15932,24 +15763,25 @@ function getMinHashLength(fieldOrder) {
15932
15763
  * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final
15933
15764
  * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5
15934
15765
  * @param hash hash output from SHA3 or a similar function
15935
- * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)
15766
+ * @param groupOrder size of subgroup - (e.g. secp256k1.Point.Fn.ORDER)
15936
15767
  * @param isLE interpret hash bytes as LE num
15937
15768
  * @returns valid private scalar
15938
15769
  */
15939
- function mapHashToField(key, fieldOrder, isLE = false) {
15770
+ function modular_mapHashToField(key, fieldOrder, isLE = false) {
15771
+ utils_abytes(key);
15940
15772
  const len = key.length;
15941
15773
  const fieldLen = getFieldBytesLength(fieldOrder);
15942
- const minLen = getMinHashLength(fieldOrder);
15774
+ const minLen = modular_getMinHashLength(fieldOrder);
15943
15775
  // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.
15944
15776
  if (len < 16 || len < minLen || len > 1024)
15945
15777
  throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);
15946
- const num = isLE ? utils_bytesToNumberLE(key) : utils_bytesToNumberBE(key);
15778
+ const num = isLE ? bytesToNumberLE(key) : utils_bytesToNumberBE(key);
15947
15779
  // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0
15948
15780
  const reduced = mod(num, fieldOrder - modular_1n) + modular_1n;
15949
15781
  return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);
15950
15782
  }
15951
15783
  //# sourceMappingURL=modular.js.map
15952
- ;// ./node_modules/@noble/curves/esm/abstract/curve.js
15784
+ ;// ./node_modules/@noble/curves/abstract/curve.js
15953
15785
  /**
15954
15786
  * Methods for elliptic curve multiplication by scalars.
15955
15787
  * Contains wNAF, pippenger.
@@ -15958,8 +15790,8 @@ function mapHashToField(key, fieldOrder, isLE = false) {
15958
15790
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
15959
15791
 
15960
15792
 
15961
- const curve_0n = BigInt(0);
15962
- const curve_1n = BigInt(1);
15793
+ const curve_0n = /* @__PURE__ */ BigInt(0);
15794
+ const curve_1n = /* @__PURE__ */ BigInt(1);
15963
15795
  function negateCt(condition, item) {
15964
15796
  const neg = item.negate();
15965
15797
  return condition ? neg : item;
@@ -16058,6 +15890,10 @@ function assert0(n) {
16058
15890
  * This would allow windows to be in different memory locations
16059
15891
  */
16060
15892
  class wNAF {
15893
+ BASE;
15894
+ ZERO;
15895
+ Fn;
15896
+ bits;
16061
15897
  // Parametrized with a given Point class (not individual point)
16062
15898
  constructor(Point, bits) {
16063
15899
  this.BASE = Point.BASE;
@@ -16234,13 +16070,14 @@ function mulEndoUnsafe(Point, point, k1, k2) {
16234
16070
  * @param points array of L curve points
16235
16071
  * @param scalars array of L scalars (aka secret keys / bigints)
16236
16072
  */
16237
- function pippenger(c, fieldN, points, scalars) {
16073
+ function pippenger(c, points, scalars) {
16238
16074
  // If we split scalars by some window (let's say 8 bits), every chunk will only
16239
16075
  // take 256 buckets even if there are 4096 scalars, also re-uses double.
16240
16076
  // TODO:
16241
16077
  // - https://eprint.iacr.org/2024/750.pdf
16242
16078
  // - https://tches.iacr.org/index.php/TCHES/article/view/10287
16243
16079
  // 0 is accepted in scalars
16080
+ const fieldN = c.Fn;
16244
16081
  validateMSMPoints(points, c);
16245
16082
  validateMSMScalars(scalars, fieldN);
16246
16083
  const plength = points.length;
@@ -16257,7 +16094,7 @@ function pippenger(c, fieldN, points, scalars) {
16257
16094
  windowSize = wbits - 2;
16258
16095
  else if (wbits > 0)
16259
16096
  windowSize = 2;
16260
- const MASK = utils_bitMask(windowSize);
16097
+ const MASK = bitMask(windowSize);
16261
16098
  const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array
16262
16099
  const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;
16263
16100
  let sum = zero;
@@ -16288,7 +16125,7 @@ function pippenger(c, fieldN, points, scalars) {
16288
16125
  * @param points array of L curve points
16289
16126
  * @returns function which multiplies points with scaars
16290
16127
  */
16291
- function precomputeMSMUnsafe(c, fieldN, points, windowSize) {
16128
+ function precomputeMSMUnsafe(c, points, windowSize) {
16292
16129
  /**
16293
16130
  * Performance Analysis of Window-based Precomputation
16294
16131
  *
@@ -16324,6 +16161,7 @@ function precomputeMSMUnsafe(c, fieldN, points, windowSize) {
16324
16161
  * - Optimal for ~256 scalars
16325
16162
  * - Less efficient for 4096+ scalars (Pippenger preferred)
16326
16163
  */
16164
+ const fieldN = c.Fn;
16327
16165
  validateW(windowSize, fieldN.BITS);
16328
16166
  validateMSMPoints(points, c);
16329
16167
  const zero = c.ZERO;
@@ -16360,26 +16198,6 @@ function precomputeMSMUnsafe(c, fieldN, points, windowSize) {
16360
16198
  return res;
16361
16199
  };
16362
16200
  }
16363
- // TODO: remove
16364
- /** @deprecated */
16365
- function validateBasic(curve) {
16366
- validateField(curve.Fp);
16367
- validateObject(curve, {
16368
- n: 'bigint',
16369
- h: 'bigint',
16370
- Gx: 'field',
16371
- Gy: 'field',
16372
- }, {
16373
- nBitLength: 'isSafeInteger',
16374
- nByteLength: 'isSafeInteger',
16375
- });
16376
- // Set defaults
16377
- return Object.freeze({
16378
- ...nLength(curve.n, curve.nBitLength),
16379
- ...curve,
16380
- ...{ p: curve.Fp.ORDER },
16381
- });
16382
- }
16383
16201
  function createField(order, field, isLE) {
16384
16202
  if (field) {
16385
16203
  if (field.ORDER !== order)
@@ -16392,7 +16210,7 @@ function createField(order, field, isLE) {
16392
16210
  }
16393
16211
  }
16394
16212
  /** Validates CURVE opts and creates fields */
16395
- function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {
16213
+ function createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {
16396
16214
  if (FpFnLE === undefined)
16397
16215
  FpFnLE = type === 'edwards';
16398
16216
  if (!CURVE || typeof CURVE !== 'object')
@@ -16414,8 +16232,14 @@ function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {
16414
16232
  CURVE = Object.freeze(Object.assign({}, CURVE));
16415
16233
  return { CURVE, Fp, Fn };
16416
16234
  }
16235
+ function curve_createKeygen(randomSecretKey, getPublicKey) {
16236
+ return function keygen(seed) {
16237
+ const secretKey = randomSecretKey(seed);
16238
+ return { secretKey, publicKey: getPublicKey(secretKey) };
16239
+ };
16240
+ }
16417
16241
  //# sourceMappingURL=curve.js.map
16418
- ;// ./node_modules/@noble/curves/esm/abstract/weierstrass.js
16242
+ ;// ./node_modules/@noble/curves/abstract/weierstrass.js
16419
16243
  /**
16420
16244
  * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.
16421
16245
  *
@@ -16472,7 +16296,7 @@ function _splitEndoScalar(k, basis, n) {
16472
16296
  k2 = -k2;
16473
16297
  // Double check that resulting scalar less than half bits of N: otherwise wNAF will fail.
16474
16298
  // This should only happen on wrong basises. Also, math inside is too complex and I don't trust it.
16475
- const MAX_NUM = utils_bitMask(Math.ceil(bitLen(n) / 2)) + weierstrass_1n; // Half bits of N
16299
+ const MAX_NUM = utils_bitMask(Math.ceil(utils_bitLen(n) / 2)) + weierstrass_1n; // Half bits of N
16476
16300
  if (k1 < weierstrass_0n || k1 >= MAX_NUM || k2 < weierstrass_0n || k2 >= MAX_NUM) {
16477
16301
  throw new Error('splitScalar (endomorphism): failed, k=' + k);
16478
16302
  }
@@ -16489,8 +16313,8 @@ function validateSigOpts(opts, def) {
16489
16313
  // @ts-ignore
16490
16314
  optsn[optName] = opts[optName] === undefined ? def[optName] : opts[optName];
16491
16315
  }
16492
- _abool2(optsn.lowS, 'lowS');
16493
- _abool2(optsn.prehash, 'prehash');
16316
+ abool(optsn.lowS, 'lowS');
16317
+ abool(optsn.prehash, 'prehash');
16494
16318
  if (optsn.format !== undefined)
16495
16319
  validateSigFormat(optsn.format);
16496
16320
  return optsn;
@@ -16520,10 +16344,10 @@ const DER = {
16520
16344
  throw new E('tlv.encode: unpadded data');
16521
16345
  const dataLen = data.length / 2;
16522
16346
  const len = numberToHexUnpadded(dataLen);
16523
- if ((len.length / 2) & 128)
16347
+ if ((len.length / 2) & 0b1000_0000)
16524
16348
  throw new E('tlv.encode: long form length too big');
16525
16349
  // length of length with long form flag
16526
- const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 128) : '';
16350
+ const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 0b1000_0000) : '';
16527
16351
  const t = numberToHexUnpadded(tag);
16528
16352
  return t + lenLen + len + data;
16529
16353
  },
@@ -16536,13 +16360,13 @@ const DER = {
16536
16360
  if (data.length < 2 || data[pos++] !== tag)
16537
16361
  throw new E('tlv.decode: wrong tlv');
16538
16362
  const first = data[pos++];
16539
- const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form
16363
+ const isLong = !!(first & 0b1000_0000); // First bit of first length byte is flag for short/long form
16540
16364
  let length = 0;
16541
16365
  if (!isLong)
16542
16366
  length = first;
16543
16367
  else {
16544
16368
  // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]
16545
- const lenLen = first & 127;
16369
+ const lenLen = first & 0b0111_1111;
16546
16370
  if (!lenLen)
16547
16371
  throw new E('tlv.decode(long): indefinite length not supported');
16548
16372
  if (lenLen > 4)
@@ -16583,17 +16407,17 @@ const DER = {
16583
16407
  },
16584
16408
  decode(data) {
16585
16409
  const { Err: E } = DER;
16586
- if (data[0] & 128)
16410
+ if (data[0] & 0b1000_0000)
16587
16411
  throw new E('invalid signature integer: negative');
16588
- if (data[0] === 0x00 && !(data[1] & 128))
16412
+ if (data[0] === 0x00 && !(data[1] & 0b1000_0000))
16589
16413
  throw new E('invalid signature integer: unnecessary leading zero');
16590
16414
  return utils_bytesToNumberBE(data);
16591
16415
  },
16592
16416
  },
16593
- toSig(hex) {
16417
+ toSig(bytes) {
16594
16418
  // parse DER signature
16595
16419
  const { Err: E, _int: int, _tlv: tlv } = DER;
16596
- const data = utils_ensureBytes('signature', hex);
16420
+ const data = utils_abytes(bytes, undefined, 'signature');
16597
16421
  const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);
16598
16422
  if (seqLeftBytes.length)
16599
16423
  throw new E('invalid signature: left bytes after parsing');
@@ -16614,55 +16438,37 @@ const DER = {
16614
16438
  // Be friendly to bad ECMAScript parsers by not using bigint literals
16615
16439
  // prettier-ignore
16616
16440
  const weierstrass_0n = BigInt(0), weierstrass_1n = BigInt(1), weierstrass_2n = BigInt(2), weierstrass_3n = BigInt(3), weierstrass_4n = BigInt(4);
16617
- function _normFnElement(Fn, key) {
16618
- const { BYTES: expected } = Fn;
16619
- let num;
16620
- if (typeof key === 'bigint') {
16621
- num = key;
16622
- }
16623
- else {
16624
- let bytes = utils_ensureBytes('private key', key);
16625
- try {
16626
- num = Fn.fromBytes(bytes);
16627
- }
16628
- catch (error) {
16629
- throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`);
16630
- }
16631
- }
16632
- if (!Fn.isValidNot0(num))
16633
- throw new Error('invalid private key: out of range [1..N-1]');
16634
- return num;
16635
- }
16636
16441
  /**
16637
16442
  * Creates weierstrass Point constructor, based on specified curve options.
16638
16443
  *
16444
+ * See {@link WeierstrassOpts}.
16445
+ *
16639
16446
  * @example
16640
16447
  ```js
16641
16448
  const opts = {
16642
- p: BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'),
16643
- n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
16644
- h: BigInt(1),
16645
- a: BigInt('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc'),
16646
- b: BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'),
16647
- Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
16648
- Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
16449
+ p: 0xfffffffffffffffffffffffffffffffeffffac73n,
16450
+ n: 0x100000000000000000001b8fa16dfab9aca16b6b3n,
16451
+ h: 1n,
16452
+ a: 0n,
16453
+ b: 7n,
16454
+ Gx: 0x3b4c382ce37aa192a4019e763036f4f5dd4d7ebbn,
16455
+ Gy: 0x938cf935318fdced6bc28286531733c3f03c4feen,
16649
16456
  };
16650
- const p256_Point = weierstrass(opts);
16457
+ const secp160k1_Point = weierstrass(opts);
16651
16458
  ```
16652
16459
  */
16653
- function weierstrassN(params, extraOpts = {}) {
16654
- const validated = _createCurveFields('weierstrass', params, extraOpts);
16460
+ function weierstrass(params, extraOpts = {}) {
16461
+ const validated = createCurveFields('weierstrass', params, extraOpts);
16655
16462
  const { Fp, Fn } = validated;
16656
16463
  let CURVE = validated.CURVE;
16657
16464
  const { h: cofactor, n: CURVE_ORDER } = CURVE;
16658
- _validateObject(extraOpts, {}, {
16465
+ utils_validateObject(extraOpts, {}, {
16659
16466
  allowInfinityPoint: 'boolean',
16660
16467
  clearCofactor: 'function',
16661
16468
  isTorsionFree: 'function',
16662
16469
  fromBytes: 'function',
16663
16470
  toBytes: 'function',
16664
16471
  endo: 'object',
16665
- wrapPrivateKey: 'boolean',
16666
16472
  });
16667
16473
  const { endo } = extraOpts;
16668
16474
  if (endo) {
@@ -16680,18 +16486,18 @@ function weierstrassN(params, extraOpts = {}) {
16680
16486
  function pointToBytes(_c, point, isCompressed) {
16681
16487
  const { x, y } = point.toAffine();
16682
16488
  const bx = Fp.toBytes(x);
16683
- _abool2(isCompressed, 'isCompressed');
16489
+ utils_abool(isCompressed, 'isCompressed');
16684
16490
  if (isCompressed) {
16685
16491
  assertCompressionIsSupported();
16686
16492
  const hasEvenY = !Fp.isOdd(y);
16687
- return concatBytes(pprefix(hasEvenY), bx);
16493
+ return utils_concatBytes(pprefix(hasEvenY), bx);
16688
16494
  }
16689
16495
  else {
16690
- return concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));
16496
+ return utils_concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));
16691
16497
  }
16692
16498
  }
16693
16499
  function pointFromBytes(bytes) {
16694
- _abytes2(bytes, undefined, 'Point');
16500
+ utils_abytes(bytes, undefined, 'Point');
16695
16501
  const { publicKey: comp, publicKeyUncompressed: uncomp } = lengths; // e.g. for 32-byte: 33, 65
16696
16502
  const length = bytes.length;
16697
16503
  const head = bytes[0];
@@ -16711,9 +16517,9 @@ function weierstrassN(params, extraOpts = {}) {
16711
16517
  throw new Error('bad point: is not on curve, sqrt error' + err);
16712
16518
  }
16713
16519
  assertCompressionIsSupported();
16714
- const isYOdd = Fp.isOdd(y); // (y & _1n) === _1n;
16715
- const isHeadOdd = (head & 1) === 1; // ECDSA-specific
16716
- if (isHeadOdd !== isYOdd)
16520
+ const evenY = Fp.isOdd(y);
16521
+ const evenH = (head & 1) === 1; // ECDSA-specific
16522
+ if (evenH !== evenY)
16717
16523
  y = Fp.neg(y);
16718
16524
  return { x, y };
16719
16525
  }
@@ -16762,7 +16568,7 @@ function weierstrassN(params, extraOpts = {}) {
16762
16568
  }
16763
16569
  function aprjpoint(other) {
16764
16570
  if (!(other instanceof Point))
16765
- throw new Error('ProjectivePoint expected');
16571
+ throw new Error('Weierstrass Point expected');
16766
16572
  }
16767
16573
  function splitEndoScalarN(k) {
16768
16574
  if (!endo || !endo.basises)
@@ -16825,6 +16631,17 @@ function weierstrassN(params, extraOpts = {}) {
16825
16631
  * We're doing calculations in projective, because its operations don't require costly inversion.
16826
16632
  */
16827
16633
  class Point {
16634
+ // base / generator point
16635
+ static BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);
16636
+ // zero / infinity / identity point
16637
+ static ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0
16638
+ // math field
16639
+ static Fp = Fp;
16640
+ // scalar field
16641
+ static Fn = Fn;
16642
+ X;
16643
+ Y;
16644
+ Z;
16828
16645
  /** Does NOT validate if the point is valid. Use `.assertValidity()`. */
16829
16646
  constructor(X, Y, Z) {
16830
16647
  this.X = acoord('x', X);
@@ -16848,12 +16665,12 @@ function weierstrassN(params, extraOpts = {}) {
16848
16665
  return new Point(x, y, Fp.ONE);
16849
16666
  }
16850
16667
  static fromBytes(bytes) {
16851
- const P = Point.fromAffine(decodePoint(_abytes2(bytes, undefined, 'point')));
16668
+ const P = Point.fromAffine(decodePoint(utils_abytes(bytes, undefined, 'point')));
16852
16669
  P.assertValidity();
16853
16670
  return P;
16854
16671
  }
16855
16672
  static fromHex(hex) {
16856
- return Point.fromBytes(utils_ensureBytes('pointHex', hex));
16673
+ return Point.fromBytes(utils_hexToBytes(hex));
16857
16674
  }
16858
16675
  get x() {
16859
16676
  return this.toAffine().x;
@@ -17040,11 +16857,13 @@ function weierstrassN(params, extraOpts = {}) {
17040
16857
  if (!Fn.isValid(sc))
17041
16858
  throw new Error('invalid scalar: out of range'); // 0 is valid
17042
16859
  if (sc === weierstrass_0n || p.is0())
17043
- return Point.ZERO;
16860
+ return Point.ZERO; // 0
17044
16861
  if (sc === weierstrass_1n)
17045
- return p; // fast-path
16862
+ return p; // 1
17046
16863
  if (wnaf.hasCache(this))
17047
- return this.multiply(sc);
16864
+ return this.multiply(sc); // precomputes
16865
+ // We don't have method for double scalar multiplication (aP + bQ):
16866
+ // Even with using Strauss-Shamir trick, it's 35% slower than naïve mul+add.
17048
16867
  if (endo) {
17049
16868
  const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(sc);
17050
16869
  const { p1, p2 } = mulEndoUnsafe(Point, p, k1, k2); // 30% faster vs wnaf.unsafe
@@ -17054,10 +16873,6 @@ function weierstrassN(params, extraOpts = {}) {
17054
16873
  return wnaf.unsafe(p, sc);
17055
16874
  }
17056
16875
  }
17057
- multiplyAndAddUnsafe(Q, a, b) {
17058
- const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));
17059
- return sum.is0() ? undefined : sum;
17060
- }
17061
16876
  /**
17062
16877
  * Converts Projective point to affine (x, y) coordinates.
17063
16878
  * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch
@@ -17090,50 +16905,17 @@ function weierstrassN(params, extraOpts = {}) {
17090
16905
  return this.multiplyUnsafe(cofactor).is0();
17091
16906
  }
17092
16907
  toBytes(isCompressed = true) {
17093
- _abool2(isCompressed, 'isCompressed');
16908
+ utils_abool(isCompressed, 'isCompressed');
17094
16909
  this.assertValidity();
17095
16910
  return encodePoint(Point, this, isCompressed);
17096
16911
  }
17097
16912
  toHex(isCompressed = true) {
17098
- return bytesToHex(this.toBytes(isCompressed));
16913
+ return utils_bytesToHex(this.toBytes(isCompressed));
17099
16914
  }
17100
16915
  toString() {
17101
16916
  return `<Point ${this.is0() ? 'ZERO' : this.toHex()}>`;
17102
16917
  }
17103
- // TODO: remove
17104
- get px() {
17105
- return this.X;
17106
- }
17107
- get py() {
17108
- return this.X;
17109
- }
17110
- get pz() {
17111
- return this.Z;
17112
- }
17113
- toRawBytes(isCompressed = true) {
17114
- return this.toBytes(isCompressed);
17115
- }
17116
- _setWindowSize(windowSize) {
17117
- this.precompute(windowSize);
17118
- }
17119
- static normalizeZ(points) {
17120
- return normalizeZ(Point, points);
17121
- }
17122
- static msm(points, scalars) {
17123
- return pippenger(Point, Fn, points, scalars);
17124
- }
17125
- static fromPrivateKey(privateKey) {
17126
- return Point.BASE.multiply(_normFnElement(Fn, privateKey));
17127
- }
17128
16918
  }
17129
- // base / generator point
17130
- Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);
17131
- // zero / infinity / identity point
17132
- Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0
17133
- // math field
17134
- Point.Fp = Fp;
17135
- // scalar field
17136
- Point.Fn = Fn;
17137
16919
  const bits = Fn.BITS;
17138
16920
  const wnaf = new wNAF(Point, extraOpts.endo ? Math.ceil(bits / 2) : bits);
17139
16921
  Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.
@@ -17282,11 +17064,12 @@ function getWLengths(Fp, Fn) {
17282
17064
  */
17283
17065
  function ecdh(Point, ecdhOpts = {}) {
17284
17066
  const { Fn } = Point;
17285
- const randomBytes_ = ecdhOpts.randomBytes || utils_randomBytes;
17067
+ const randomBytes_ = ecdhOpts.randomBytes || wcRandomBytes;
17286
17068
  const lengths = Object.assign(getWLengths(Point.Fp, Fn), { seed: getMinHashLength(Fn.ORDER) });
17287
17069
  function isValidSecretKey(secretKey) {
17288
17070
  try {
17289
- return !!_normFnElement(Fn, secretKey);
17071
+ const num = Fn.fromBytes(secretKey);
17072
+ return Fn.isValidNot0(num);
17290
17073
  }
17291
17074
  catch (error) {
17292
17075
  return false;
@@ -17311,7 +17094,7 @@ function ecdh(Point, ecdhOpts = {}) {
17311
17094
  * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.
17312
17095
  */
17313
17096
  function randomSecretKey(seed = randomBytes_(lengths.seed)) {
17314
- return mapHashToField(_abytes2(seed, lengths.seed, 'seed'), Fn.ORDER);
17097
+ return mapHashToField(abytes(seed, lengths.seed, 'seed'), Fn.ORDER);
17315
17098
  }
17316
17099
  /**
17317
17100
  * Computes public key for a secret key. Checks for validity of the secret key.
@@ -17319,24 +17102,18 @@ function ecdh(Point, ecdhOpts = {}) {
17319
17102
  * @returns Public key, full when isCompressed=false; short when isCompressed=true
17320
17103
  */
17321
17104
  function getPublicKey(secretKey, isCompressed = true) {
17322
- return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed);
17323
- }
17324
- function keygen(seed) {
17325
- const secretKey = randomSecretKey(seed);
17326
- return { secretKey, publicKey: getPublicKey(secretKey) };
17105
+ return Point.BASE.multiply(Fn.fromBytes(secretKey)).toBytes(isCompressed);
17327
17106
  }
17328
17107
  /**
17329
17108
  * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.
17330
17109
  */
17331
17110
  function isProbPub(item) {
17332
- if (typeof item === 'bigint')
17333
- return false;
17334
- if (item instanceof Point)
17335
- return true;
17336
17111
  const { secretKey, publicKey, publicKeyUncompressed } = lengths;
17337
- if (Fn.allowedLengths || secretKey === publicKey)
17112
+ if (!isBytes(item))
17338
17113
  return undefined;
17339
- const l = utils_ensureBytes('key', item).length;
17114
+ if (('_lengths' in Fn && Fn._lengths) || secretKey === publicKey)
17115
+ return undefined;
17116
+ const l = abytes(item, undefined, 'key').length;
17340
17117
  return l === publicKey || l === publicKeyUncompressed;
17341
17118
  }
17342
17119
  /**
@@ -17352,31 +17129,24 @@ function ecdh(Point, ecdhOpts = {}) {
17352
17129
  throw new Error('first arg must be private key');
17353
17130
  if (isProbPub(publicKeyB) === false)
17354
17131
  throw new Error('second arg must be public key');
17355
- const s = _normFnElement(Fn, secretKeyA);
17356
- const b = Point.fromHex(publicKeyB); // checks for being on-curve
17132
+ const s = Fn.fromBytes(secretKeyA);
17133
+ const b = Point.fromBytes(publicKeyB); // checks for being on-curve
17357
17134
  return b.multiply(s).toBytes(isCompressed);
17358
17135
  }
17359
17136
  const utils = {
17360
17137
  isValidSecretKey,
17361
17138
  isValidPublicKey,
17362
17139
  randomSecretKey,
17363
- // TODO: remove
17364
- isValidPrivateKey: isValidSecretKey,
17365
- randomPrivateKey: randomSecretKey,
17366
- normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),
17367
- precompute(windowSize = 8, point = Point.BASE) {
17368
- return point.precompute(windowSize, false);
17369
- },
17370
17140
  };
17141
+ const keygen = createKeygen(randomSecretKey, getPublicKey);
17371
17142
  return Object.freeze({ getPublicKey, getSharedSecret, keygen, Point, utils, lengths });
17372
17143
  }
17373
17144
  /**
17374
17145
  * Creates ECDSA signing interface for given elliptic curve `Point` and `hash` function.
17375
- * We need `hash` for 2 features:
17376
- * 1. Message prehash-ing. NOT used if `sign` / `verify` are called with `prehash: false`
17377
- * 2. k generation in `sign`, using HMAC-drbg(hash)
17378
17146
  *
17379
- * ECDSAOpts are only rarely needed.
17147
+ * @param Point created using {@link weierstrass} function
17148
+ * @param hash used for 1) message prehash-ing 2) k generation in `sign`, using hmac_drbg(hash)
17149
+ * @param ecdsaOpts rarely needed, see {@link ECDSAOpts}
17380
17150
  *
17381
17151
  * @example
17382
17152
  * ```js
@@ -17386,28 +17156,28 @@ function ecdh(Point, ecdhOpts = {}) {
17386
17156
  * const p256_sha224_r = ecdsa(p256_Point, sha224, { randomBytes: (length) => { ... } });
17387
17157
  * ```
17388
17158
  */
17389
- function ecdsa(Point, hash, ecdsaOpts = {}) {
17159
+ function weierstrass_ecdsa(Point, hash, ecdsaOpts = {}) {
17390
17160
  ahash(hash);
17391
- _validateObject(ecdsaOpts, {}, {
17161
+ validateObject(ecdsaOpts, {}, {
17392
17162
  hmac: 'function',
17393
17163
  lowS: 'boolean',
17394
17164
  randomBytes: 'function',
17395
17165
  bits2int: 'function',
17396
17166
  bits2int_modN: 'function',
17397
17167
  });
17398
- const randomBytes = ecdsaOpts.randomBytes || utils_randomBytes;
17399
- const hmac = ecdsaOpts.hmac ||
17400
- ((key, ...msgs) => hmac_hmac(hash, key, concatBytes(...msgs)));
17168
+ ecdsaOpts = Object.assign({}, ecdsaOpts);
17169
+ const randomBytes = ecdsaOpts.randomBytes || wcRandomBytes;
17170
+ const hmac = ecdsaOpts.hmac || ((key, msg) => nobleHmac(hash, key, msg));
17401
17171
  const { Fp, Fn } = Point;
17402
17172
  const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn;
17403
17173
  const { keygen, getPublicKey, getSharedSecret, utils, lengths } = ecdh(Point, ecdsaOpts);
17404
17174
  const defaultSigOpts = {
17405
- prehash: false,
17406
- lowS: typeof ecdsaOpts.lowS === 'boolean' ? ecdsaOpts.lowS : false,
17407
- format: undefined, //'compact' as ECDSASigFormat,
17175
+ prehash: true,
17176
+ lowS: typeof ecdsaOpts.lowS === 'boolean' ? ecdsaOpts.lowS : true,
17177
+ format: 'compact',
17408
17178
  extraEntropy: false,
17409
17179
  };
17410
- const defaultSigOpts_format = 'compact';
17180
+ const hasLargeCofactor = CURVE_ORDER * weierstrass_2n < Fp.ORDER; // Won't CURVE().h > 2n be more effective?
17411
17181
  function isBiggerThanHalfOrder(number) {
17412
17182
  const HALF = CURVE_ORDER >> weierstrass_1n;
17413
17183
  return number > HALF;
@@ -17417,28 +17187,47 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17417
17187
  throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`);
17418
17188
  return num;
17419
17189
  }
17190
+ function assertSmallCofactor() {
17191
+ // ECDSA recovery is hard for cofactor > 1 curves.
17192
+ // In sign, `r = q.x mod n`, and here we recover q.x from r.
17193
+ // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.
17194
+ // However, for cofactor>1, r+n may not get q.x:
17195
+ // r+n*i would need to be done instead where i is unknown.
17196
+ // To easily get i, we either need to:
17197
+ // a. increase amount of valid recid values (4, 5...); OR
17198
+ // b. prohibit non-prime-order signatures (recid > 1).
17199
+ if (hasLargeCofactor)
17200
+ throw new Error('"recovered" sig type is not supported for cofactor >2 curves');
17201
+ }
17420
17202
  function validateSigLength(bytes, format) {
17421
17203
  validateSigFormat(format);
17422
17204
  const size = lengths.signature;
17423
17205
  const sizer = format === 'compact' ? size : format === 'recovered' ? size + 1 : undefined;
17424
- return _abytes2(bytes, sizer, `${format} signature`);
17206
+ return abytes(bytes, sizer);
17425
17207
  }
17426
17208
  /**
17427
17209
  * ECDSA signature with its (r, s) properties. Supports compact, recovered & DER representations.
17428
17210
  */
17429
17211
  class Signature {
17212
+ r;
17213
+ s;
17214
+ recovery;
17430
17215
  constructor(r, s, recovery) {
17431
17216
  this.r = validateRS('r', r); // r in [1..N-1];
17432
17217
  this.s = validateRS('s', s); // s in [1..N-1];
17433
- if (recovery != null)
17218
+ if (recovery != null) {
17219
+ assertSmallCofactor();
17220
+ if (![0, 1, 2, 3].includes(recovery))
17221
+ throw new Error('invalid recovery id');
17434
17222
  this.recovery = recovery;
17223
+ }
17435
17224
  Object.freeze(this);
17436
17225
  }
17437
- static fromBytes(bytes, format = defaultSigOpts_format) {
17226
+ static fromBytes(bytes, format = defaultSigOpts.format) {
17438
17227
  validateSigLength(bytes, format);
17439
17228
  let recid;
17440
17229
  if (format === 'der') {
17441
- const { r, s } = DER.toSig(_abytes2(bytes));
17230
+ const { r, s } = DER.toSig(abytes(bytes));
17442
17231
  return new Signature(r, s);
17443
17232
  }
17444
17233
  if (format === 'recovered') {
@@ -17446,7 +17235,7 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17446
17235
  format = 'compact';
17447
17236
  bytes = bytes.subarray(1);
17448
17237
  }
17449
- const L = Fn.BYTES;
17238
+ const L = lengths.signature / 2;
17450
17239
  const r = bytes.subarray(0, L);
17451
17240
  const s = bytes.subarray(L, L * 2);
17452
17241
  return new Signature(Fn.fromBytes(r), Fn.fromBytes(s), recid);
@@ -17454,38 +17243,31 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17454
17243
  static fromHex(hex, format) {
17455
17244
  return this.fromBytes(hexToBytes(hex), format);
17456
17245
  }
17246
+ assertRecovery() {
17247
+ const { recovery } = this;
17248
+ if (recovery == null)
17249
+ throw new Error('invalid recovery id: must be present');
17250
+ return recovery;
17251
+ }
17457
17252
  addRecoveryBit(recovery) {
17458
17253
  return new Signature(this.r, this.s, recovery);
17459
17254
  }
17460
17255
  recoverPublicKey(messageHash) {
17461
- const FIELD_ORDER = Fp.ORDER;
17462
- const { r, s, recovery: rec } = this;
17463
- if (rec == null || ![0, 1, 2, 3].includes(rec))
17464
- throw new Error('recovery id invalid');
17465
- // ECDSA recovery is hard for cofactor > 1 curves.
17466
- // In sign, `r = q.x mod n`, and here we recover q.x from r.
17467
- // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.
17468
- // However, for cofactor>1, r+n may not get q.x:
17469
- // r+n*i would need to be done instead where i is unknown.
17470
- // To easily get i, we either need to:
17471
- // a. increase amount of valid recid values (4, 5...); OR
17472
- // b. prohibit non-prime-order signatures (recid > 1).
17473
- const hasCofactor = CURVE_ORDER * weierstrass_2n < FIELD_ORDER;
17474
- if (hasCofactor && rec > 1)
17475
- throw new Error('recovery id is ambiguous for h>1 curve');
17476
- const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r;
17256
+ const { r, s } = this;
17257
+ const recovery = this.assertRecovery();
17258
+ const radj = recovery === 2 || recovery === 3 ? r + CURVE_ORDER : r;
17477
17259
  if (!Fp.isValid(radj))
17478
- throw new Error('recovery id 2 or 3 invalid');
17260
+ throw new Error('invalid recovery id: sig.r+curve.n != R.x');
17479
17261
  const x = Fp.toBytes(radj);
17480
- const R = Point.fromBytes(concatBytes(pprefix((rec & 1) === 0), x));
17262
+ const R = Point.fromBytes(concatBytes(pprefix((recovery & 1) === 0), x));
17481
17263
  const ir = Fn.inv(radj); // r^-1
17482
- const h = bits2int_modN(utils_ensureBytes('msgHash', messageHash)); // Truncate hash
17264
+ const h = bits2int_modN(abytes(messageHash, undefined, 'msgHash')); // Truncate hash
17483
17265
  const u1 = Fn.create(-h * ir); // -hr^-1
17484
17266
  const u2 = Fn.create(s * ir); // sr^-1
17485
17267
  // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1). unsafe is fine: there is no private data.
17486
17268
  const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));
17487
17269
  if (Q.is0())
17488
- throw new Error('point at infinify');
17270
+ throw new Error('invalid recovery: point at infinify');
17489
17271
  Q.assertValidity();
17490
17272
  return Q;
17491
17273
  }
@@ -17493,45 +17275,22 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17493
17275
  hasHighS() {
17494
17276
  return isBiggerThanHalfOrder(this.s);
17495
17277
  }
17496
- toBytes(format = defaultSigOpts_format) {
17278
+ toBytes(format = defaultSigOpts.format) {
17497
17279
  validateSigFormat(format);
17498
17280
  if (format === 'der')
17499
17281
  return hexToBytes(DER.hexFromSig(this));
17500
- const r = Fn.toBytes(this.r);
17501
- const s = Fn.toBytes(this.s);
17282
+ const { r, s } = this;
17283
+ const rb = Fn.toBytes(r);
17284
+ const sb = Fn.toBytes(s);
17502
17285
  if (format === 'recovered') {
17503
- if (this.recovery == null)
17504
- throw new Error('recovery bit must be present');
17505
- return concatBytes(Uint8Array.of(this.recovery), r, s);
17286
+ assertSmallCofactor();
17287
+ return concatBytes(Uint8Array.of(this.assertRecovery()), rb, sb);
17506
17288
  }
17507
- return concatBytes(r, s);
17289
+ return concatBytes(rb, sb);
17508
17290
  }
17509
17291
  toHex(format) {
17510
17292
  return bytesToHex(this.toBytes(format));
17511
17293
  }
17512
- // TODO: remove
17513
- assertValidity() { }
17514
- static fromCompact(hex) {
17515
- return Signature.fromBytes(utils_ensureBytes('sig', hex), 'compact');
17516
- }
17517
- static fromDER(hex) {
17518
- return Signature.fromBytes(utils_ensureBytes('sig', hex), 'der');
17519
- }
17520
- normalizeS() {
17521
- return this.hasHighS() ? new Signature(this.r, Fn.neg(this.s), this.recovery) : this;
17522
- }
17523
- toDERRawBytes() {
17524
- return this.toBytes('der');
17525
- }
17526
- toDERHex() {
17527
- return bytesToHex(this.toBytes('der'));
17528
- }
17529
- toCompactRawBytes() {
17530
- return this.toBytes('compact');
17531
- }
17532
- toCompactHex() {
17533
- return bytesToHex(this.toBytes('compact'));
17534
- }
17535
17294
  }
17536
17295
  // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.
17537
17296
  // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.
@@ -17544,7 +17303,7 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17544
17303
  throw new Error('input is too large');
17545
17304
  // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)
17546
17305
  // for some cases, since bytes.length * 8 is not actual bitLength.
17547
- const num = utils_bytesToNumberBE(bytes); // check for == u8 done here
17306
+ const num = bytesToNumberBE(bytes); // check for == u8 done here
17548
17307
  const delta = bytes.length * 8 - fnBits; // truncate to nBitLength leftmost bits
17549
17308
  return delta > 0 ? num >> BigInt(delta) : num;
17550
17309
  };
@@ -17553,7 +17312,7 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17553
17312
  return Fn.create(bits2int(bytes)); // can't use bytesToNumberBE here
17554
17313
  };
17555
17314
  // Pads output with zero as per spec
17556
- const ORDER_MASK = utils_bitMask(fnBits);
17315
+ const ORDER_MASK = bitMask(fnBits);
17557
17316
  /** Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`. */
17558
17317
  function int2octets(num) {
17559
17318
  // IMPORTANT: the check ensures working for case `Fn.BYTES != Fn.BITS * 8`
@@ -17561,8 +17320,8 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17561
17320
  return Fn.toBytes(num);
17562
17321
  }
17563
17322
  function validateMsgAndHash(message, prehash) {
17564
- _abytes2(message, undefined, 'message');
17565
- return prehash ? _abytes2(hash(message), undefined, 'prehashed message') : message;
17323
+ abytes(message, undefined, 'message');
17324
+ return prehash ? abytes(hash(message), undefined, 'prehashed message') : message;
17566
17325
  }
17567
17326
  /**
17568
17327
  * Steps A, D of RFC6979 3.2.
@@ -17572,26 +17331,26 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17572
17331
  * Warning: we cannot assume here that message has same amount of bytes as curve order,
17573
17332
  * this will be invalid at least for P521. Also it can be bigger for P224 + SHA256.
17574
17333
  */
17575
- function prepSig(message, privateKey, opts) {
17576
- if (['recovered', 'canonical'].some((k) => k in opts))
17577
- throw new Error('sign() legacy options not supported');
17334
+ function prepSig(message, secretKey, opts) {
17578
17335
  const { lowS, prehash, extraEntropy } = validateSigOpts(opts, defaultSigOpts);
17579
17336
  message = validateMsgAndHash(message, prehash); // RFC6979 3.2 A: h1 = H(m)
17580
17337
  // We can't later call bits2octets, since nested bits2int is broken for curves
17581
17338
  // with fnBits % 8 !== 0. Because of that, we unwrap it here as int2octets call.
17582
17339
  // const bits2octets = (bits) => int2octets(bits2int_modN(bits))
17583
17340
  const h1int = bits2int_modN(message);
17584
- const d = _normFnElement(Fn, privateKey); // validate secret key, convert to bigint
17341
+ const d = Fn.fromBytes(secretKey); // validate secret key, convert to bigint
17342
+ if (!Fn.isValidNot0(d))
17343
+ throw new Error('invalid private key');
17585
17344
  const seedArgs = [int2octets(d), int2octets(h1int)];
17586
17345
  // extraEntropy. RFC6979 3.6: additional k' (optional).
17587
17346
  if (extraEntropy != null && extraEntropy !== false) {
17588
17347
  // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')
17589
17348
  // gen random bytes OR pass as-is
17590
17349
  const e = extraEntropy === true ? randomBytes(lengths.secretKey) : extraEntropy;
17591
- seedArgs.push(utils_ensureBytes('extraEntropy', e)); // check for being bytes
17350
+ seedArgs.push(abytes(e, undefined, 'extraEntropy')); // check for being bytes
17592
17351
  }
17593
17352
  const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2
17594
- const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!
17353
+ const m = h1int; // no need to call bits2int second time here, it is inside truncateHash!
17595
17354
  // Converts signature params into point w r/s, checks result for validity.
17596
17355
  // To transform k => Signature:
17597
17356
  // q = k⋅G
@@ -17603,7 +17362,7 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17603
17362
  function k2sig(kBytes) {
17604
17363
  // RFC 6979 Section 3.2, step 3: k = bits2int(T)
17605
17364
  // Important: all mod() calls here must be done over N
17606
- const k = bits2int(kBytes); // mod n, not mod p
17365
+ const k = bits2int(kBytes); // Cannot use fields methods, since it is group element
17607
17366
  if (!Fn.isValidNot0(k))
17608
17367
  return; // Valid scalars (including k) must be in 1..N-1
17609
17368
  const ik = Fn.inv(k); // k^-1 mod n
@@ -17611,16 +17370,16 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17611
17370
  const r = Fn.create(q.x); // r = q.x mod n
17612
17371
  if (r === weierstrass_0n)
17613
17372
  return;
17614
- const s = Fn.create(ik * Fn.create(m + r * d)); // Not using blinding here, see comment above
17373
+ const s = Fn.create(ik * Fn.create(m + r * d)); // s = k^-1(m + rd) mod n
17615
17374
  if (s === weierstrass_0n)
17616
17375
  return;
17617
- let recovery = (q.x === r ? 0 : 2) | Number(q.y & weierstrass_1n); // recovery bit (2 or 3, when q.x > n)
17376
+ let recovery = (q.x === r ? 0 : 2) | Number(q.y & weierstrass_1n); // recovery bit (2 or 3 when q.x>n)
17618
17377
  let normS = s;
17619
17378
  if (lowS && isBiggerThanHalfOrder(s)) {
17620
- normS = Fn.neg(s); // if lowS was passed, ensure s is always
17621
- recovery ^= 1; // // in the bottom half of N
17379
+ normS = Fn.neg(s); // if lowS was passed, ensure s is always in the bottom half of N
17380
+ recovery ^= 1;
17622
17381
  }
17623
- return new Signature(r, normS, recovery); // use normS, not s
17382
+ return new Signature(r, normS, hasLargeCofactor ? undefined : recovery);
17624
17383
  }
17625
17384
  return { seed, k2sig };
17626
17385
  }
@@ -17636,46 +17395,10 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17636
17395
  * ```
17637
17396
  */
17638
17397
  function sign(message, secretKey, opts = {}) {
17639
- message = utils_ensureBytes('message', message);
17640
17398
  const { seed, k2sig } = prepSig(message, secretKey, opts); // Steps A, D of RFC6979 3.2.
17641
17399
  const drbg = createHmacDrbg(hash.outputLen, Fn.BYTES, hmac);
17642
17400
  const sig = drbg(seed, k2sig); // Steps B, C, D, E, F, G
17643
- return sig;
17644
- }
17645
- function tryParsingSig(sg) {
17646
- // Try to deduce format
17647
- let sig = undefined;
17648
- const isHex = typeof sg === 'string' || isBytes(sg);
17649
- const isObj = !isHex &&
17650
- sg !== null &&
17651
- typeof sg === 'object' &&
17652
- typeof sg.r === 'bigint' &&
17653
- typeof sg.s === 'bigint';
17654
- if (!isHex && !isObj)
17655
- throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');
17656
- if (isObj) {
17657
- sig = new Signature(sg.r, sg.s);
17658
- }
17659
- else if (isHex) {
17660
- try {
17661
- sig = Signature.fromBytes(utils_ensureBytes('sig', sg), 'der');
17662
- }
17663
- catch (derError) {
17664
- if (!(derError instanceof DER.Err))
17665
- throw derError;
17666
- }
17667
- if (!sig) {
17668
- try {
17669
- sig = Signature.fromBytes(utils_ensureBytes('sig', sg), 'compact');
17670
- }
17671
- catch (error) {
17672
- return false;
17673
- }
17674
- }
17675
- }
17676
- if (!sig)
17677
- return false;
17678
- return sig;
17401
+ return sig.toBytes(opts.format);
17679
17402
  }
17680
17403
  /**
17681
17404
  * Verifies a signature against message and public key.
@@ -17692,16 +17415,15 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17692
17415
  */
17693
17416
  function verify(signature, message, publicKey, opts = {}) {
17694
17417
  const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts);
17695
- publicKey = utils_ensureBytes('publicKey', publicKey);
17696
- message = validateMsgAndHash(utils_ensureBytes('message', message), prehash);
17697
- if ('strict' in opts)
17698
- throw new Error('options.strict was renamed to lowS');
17699
- const sig = format === undefined
17700
- ? tryParsingSig(signature)
17701
- : Signature.fromBytes(utils_ensureBytes('sig', signature), format);
17702
- if (sig === false)
17703
- return false;
17418
+ publicKey = abytes(publicKey, undefined, 'publicKey');
17419
+ message = validateMsgAndHash(message, prehash);
17420
+ if (!isBytes(signature)) {
17421
+ const end = signature instanceof Signature ? ', use sig.toBytes()' : '';
17422
+ throw new Error('verify expects Uint8Array signature' + end);
17423
+ }
17424
+ validateSigLength(signature, format); // execute this twice because we want loud error
17704
17425
  try {
17426
+ const sig = Signature.fromBytes(signature, format);
17705
17427
  const P = Point.fromBytes(publicKey);
17706
17428
  if (lowS && sig.hasHighS())
17707
17429
  return false;
@@ -17739,114 +17461,8 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
17739
17461
  hash,
17740
17462
  });
17741
17463
  }
17742
- /** @deprecated use `weierstrass` in newer releases */
17743
- function weierstrassPoints(c) {
17744
- const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);
17745
- const Point = weierstrassN(CURVE, curveOpts);
17746
- return _weierstrass_new_output_to_legacy(c, Point);
17747
- }
17748
- function _weierstrass_legacy_opts_to_new(c) {
17749
- const CURVE = {
17750
- a: c.a,
17751
- b: c.b,
17752
- p: c.Fp.ORDER,
17753
- n: c.n,
17754
- h: c.h,
17755
- Gx: c.Gx,
17756
- Gy: c.Gy,
17757
- };
17758
- const Fp = c.Fp;
17759
- let allowedLengths = c.allowedPrivateKeyLengths
17760
- ? Array.from(new Set(c.allowedPrivateKeyLengths.map((l) => Math.ceil(l / 2))))
17761
- : undefined;
17762
- const Fn = Field(CURVE.n, {
17763
- BITS: c.nBitLength,
17764
- allowedLengths: allowedLengths,
17765
- modFromBytes: c.wrapPrivateKey,
17766
- });
17767
- const curveOpts = {
17768
- Fp,
17769
- Fn,
17770
- allowInfinityPoint: c.allowInfinityPoint,
17771
- endo: c.endo,
17772
- isTorsionFree: c.isTorsionFree,
17773
- clearCofactor: c.clearCofactor,
17774
- fromBytes: c.fromBytes,
17775
- toBytes: c.toBytes,
17776
- };
17777
- return { CURVE, curveOpts };
17778
- }
17779
- function _ecdsa_legacy_opts_to_new(c) {
17780
- const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);
17781
- const ecdsaOpts = {
17782
- hmac: c.hmac,
17783
- randomBytes: c.randomBytes,
17784
- lowS: c.lowS,
17785
- bits2int: c.bits2int,
17786
- bits2int_modN: c.bits2int_modN,
17787
- };
17788
- return { CURVE, curveOpts, hash: c.hash, ecdsaOpts };
17789
- }
17790
- function _legacyHelperEquat(Fp, a, b) {
17791
- /**
17792
- * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².
17793
- * @returns y²
17794
- */
17795
- function weierstrassEquation(x) {
17796
- const x2 = Fp.sqr(x); // x * x
17797
- const x3 = Fp.mul(x2, x); // x² * x
17798
- return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b
17799
- }
17800
- return weierstrassEquation;
17801
- }
17802
- function _weierstrass_new_output_to_legacy(c, Point) {
17803
- const { Fp, Fn } = Point;
17804
- function isWithinCurveOrder(num) {
17805
- return inRange(num, weierstrass_1n, Fn.ORDER);
17806
- }
17807
- const weierstrassEquation = _legacyHelperEquat(Fp, c.a, c.b);
17808
- return Object.assign({}, {
17809
- CURVE: c,
17810
- Point: Point,
17811
- ProjectivePoint: Point,
17812
- normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),
17813
- weierstrassEquation,
17814
- isWithinCurveOrder,
17815
- });
17816
- }
17817
- function _ecdsa_new_output_to_legacy(c, _ecdsa) {
17818
- const Point = _ecdsa.Point;
17819
- return Object.assign({}, _ecdsa, {
17820
- ProjectivePoint: Point,
17821
- CURVE: Object.assign({}, c, modular_nLength(Point.Fn.ORDER, Point.Fn.BITS)),
17822
- });
17823
- }
17824
- // _ecdsa_legacy
17825
- function weierstrass(c) {
17826
- const { CURVE, curveOpts, hash, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c);
17827
- const Point = weierstrassN(CURVE, curveOpts);
17828
- const signs = ecdsa(Point, hash, ecdsaOpts);
17829
- return _ecdsa_new_output_to_legacy(c, signs);
17830
- }
17831
17464
  //# sourceMappingURL=weierstrass.js.map
17832
- ;// ./node_modules/@noble/curves/esm/_shortw_utils.js
17833
- /**
17834
- * Utilities for short weierstrass curves, combined with noble-hashes.
17835
- * @module
17836
- */
17837
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
17838
-
17839
- /** connects noble-curves to noble-hashes */
17840
- function getHash(hash) {
17841
- return { hash };
17842
- }
17843
- /** @deprecated use new `weierstrass()` and `ecdsa()` methods */
17844
- function createCurve(curveDef, defHash) {
17845
- const create = (hash) => weierstrass({ ...curveDef, hash: hash });
17846
- return { ...create(defHash), create };
17847
- }
17848
- //# sourceMappingURL=_shortw_utils.js.map
17849
- ;// ./node_modules/@noble/curves/esm/secp256k1.js
17465
+ ;// ./node_modules/@noble/curves/secp256k1.js
17850
17466
  /**
17851
17467
  * SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).
17852
17468
  *
@@ -17863,7 +17479,7 @@ function createCurve(curveDef, defHash) {
17863
17479
 
17864
17480
 
17865
17481
  // Seems like generator was produced from some seed:
17866
- // `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`
17482
+ // `Pointk1.BASE.multiply(Pointk1.Fn.inv(2n, N)).toAffine().x`
17867
17483
  // // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n
17868
17484
  const secp256k1_CURVE = {
17869
17485
  p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),
@@ -17882,7 +17498,6 @@ const secp256k1_ENDO = {
17882
17498
  ],
17883
17499
  };
17884
17500
  const secp256k1_0n = /* @__PURE__ */ BigInt(0);
17885
- const secp256k1_1n = /* @__PURE__ */ BigInt(1);
17886
17501
  const secp256k1_2n = /* @__PURE__ */ BigInt(2);
17887
17502
  /**
17888
17503
  * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.
@@ -17913,21 +17528,28 @@ function sqrtMod(y) {
17913
17528
  return root;
17914
17529
  }
17915
17530
  const Fpk1 = Field(secp256k1_CURVE.p, { sqrt: sqrtMod });
17531
+ const Pointk1 = /* @__PURE__ */ weierstrass(secp256k1_CURVE, {
17532
+ Fp: Fpk1,
17533
+ endo: secp256k1_ENDO,
17534
+ });
17916
17535
  /**
17917
- * secp256k1 curve, ECDSA and ECDH methods.
17536
+ * secp256k1 curve: ECDSA and ECDH methods.
17918
17537
  *
17919
- * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`
17538
+ * Uses sha256 to hash messages. To use a different hash,
17539
+ * pass `{ prehash: false }` to sign / verify.
17920
17540
  *
17921
17541
  * @example
17922
17542
  * ```js
17923
- * import { secp256k1 } from '@noble/curves/secp256k1';
17543
+ * import { secp256k1 } from '@noble/curves/secp256k1.js';
17924
17544
  * const { secretKey, publicKey } = secp256k1.keygen();
17925
- * const msg = new TextEncoder().encode('hello');
17545
+ * // const publicKey = secp256k1.getPublicKey(secretKey);
17546
+ * const msg = new TextEncoder().encode('hello noble');
17926
17547
  * const sig = secp256k1.sign(msg, secretKey);
17927
- * const isValid = secp256k1.verify(sig, msg, publicKey) === true;
17548
+ * const isValid = secp256k1.verify(sig, msg, publicKey);
17549
+ * // const sigKeccak = secp256k1.sign(keccak256(msg), secretKey, { prehash: false });
17928
17550
  * ```
17929
17551
  */
17930
- const secp256k1 = createCurve({ ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO }, sha2_sha256);
17552
+ const secp256k1 = /* @__PURE__ */ (/* unused pure expression or super */ null && (ecdsa(Pointk1, sha256)));
17931
17553
  // Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.
17932
17554
  // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
17933
17555
  /** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */
@@ -17935,20 +17557,19 @@ const TAGGED_HASH_PREFIXES = {};
17935
17557
  function taggedHash(tag, ...messages) {
17936
17558
  let tagP = TAGGED_HASH_PREFIXES[tag];
17937
17559
  if (tagP === undefined) {
17938
- const tagH = sha2_sha256(utf8ToBytes(tag));
17939
- tagP = concatBytes(tagH, tagH);
17560
+ const tagH = sha2_sha256(asciiToBytes(tag));
17561
+ tagP = utils_concatBytes(tagH, tagH);
17940
17562
  TAGGED_HASH_PREFIXES[tag] = tagP;
17941
17563
  }
17942
- return sha2_sha256(concatBytes(tagP, ...messages));
17564
+ return sha2_sha256(utils_concatBytes(tagP, ...messages));
17943
17565
  }
17944
17566
  // ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03
17945
17567
  const pointToBytes = (point) => point.toBytes(true).slice(1);
17946
- const Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();
17947
17568
  const hasEven = (y) => y % secp256k1_2n === secp256k1_0n;
17948
17569
  // Calculate point, scalar and bytes
17949
17570
  function schnorrGetExtPubKey(priv) {
17950
17571
  const { Fn, BASE } = Pointk1;
17951
- const d_ = _normFnElement(Fn, priv);
17572
+ const d_ = Fn.fromBytes(priv);
17952
17573
  const p = BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside
17953
17574
  const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);
17954
17575
  return { scalar, bytes: pointToBytes(p) };
@@ -17989,11 +17610,11 @@ function schnorrGetPublicKey(secretKey) {
17989
17610
  * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.
17990
17611
  * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
17991
17612
  */
17992
- function schnorrSign(message, secretKey, auxRand = utils_randomBytes(32)) {
17613
+ function schnorrSign(message, secretKey, auxRand = randomBytes(32)) {
17993
17614
  const { Fn } = Pointk1;
17994
- const m = utils_ensureBytes('message', message);
17615
+ const m = utils_abytes(message, undefined, 'message');
17995
17616
  const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder
17996
- const a = utils_ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
17617
+ const a = utils_abytes(auxRand, 32, 'auxRand'); // Auxiliary random data a: a 32-byte array
17997
17618
  const t = Fn.toBytes(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
17998
17619
  const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)
17999
17620
  // Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'⋅G
@@ -18012,20 +17633,19 @@ function schnorrSign(message, secretKey, auxRand = utils_randomBytes(32)) {
18012
17633
  * Will swallow errors & return false except for initial type validation of arguments.
18013
17634
  */
18014
17635
  function schnorrVerify(signature, message, publicKey) {
18015
- const { Fn, BASE } = Pointk1;
18016
- const sig = utils_ensureBytes('signature', signature, 64);
18017
- const m = utils_ensureBytes('message', message);
18018
- const pub = utils_ensureBytes('publicKey', publicKey, 32);
17636
+ const { Fp, Fn, BASE } = Pointk1;
17637
+ const sig = utils_abytes(signature, 64, 'signature');
17638
+ const m = utils_abytes(message, undefined, 'message');
17639
+ const pub = utils_abytes(publicKey, 32, 'publicKey');
18019
17640
  try {
18020
17641
  const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails
18021
17642
  const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.
18022
- if (!utils_inRange(r, secp256k1_1n, secp256k1_CURVE.p))
17643
+ if (!Fp.isValidNot0(r))
18023
17644
  return false;
18024
17645
  const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.
18025
- if (!utils_inRange(s, secp256k1_1n, secp256k1_CURVE.n))
17646
+ if (!Fn.isValidNot0(s))
18026
17647
  return false;
18027
- // int(challenge(bytes(r)||bytes(P)||m))%n
18028
- const e = challenge(Fn.toBytes(r), pointToBytes(P), m);
17648
+ const e = challenge(Fn.toBytes(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n
18029
17649
  // R = s⋅G - e⋅P, where -eP == (n-e)P
18030
17650
  const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));
18031
17651
  const { x, y } = R.toAffine();
@@ -18043,7 +17663,7 @@ function schnorrVerify(signature, message, publicKey) {
18043
17663
  * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
18044
17664
  * @example
18045
17665
  * ```js
18046
- * import { schnorr } from '@noble/curves/secp256k1';
17666
+ * import { schnorr } from '@noble/curves/secp256k1.js';
18047
17667
  * const { secretKey, publicKey } = schnorr.keygen();
18048
17668
  * // const publicKey = schnorr.getPublicKey(secretKey);
18049
17669
  * const msg = new TextEncoder().encode('hello');
@@ -18054,31 +17674,20 @@ function schnorrVerify(signature, message, publicKey) {
18054
17674
  const schnorr = /* @__PURE__ */ (() => {
18055
17675
  const size = 32;
18056
17676
  const seedLength = 48;
18057
- const randomSecretKey = (seed = utils_randomBytes(seedLength)) => {
18058
- return mapHashToField(seed, secp256k1_CURVE.n);
17677
+ const randomSecretKey = (seed = randomBytes(seedLength)) => {
17678
+ return modular_mapHashToField(seed, secp256k1_CURVE.n);
18059
17679
  };
18060
- // TODO: remove
18061
- secp256k1.utils.randomSecretKey;
18062
- function keygen(seed) {
18063
- const secretKey = randomSecretKey(seed);
18064
- return { secretKey, publicKey: schnorrGetPublicKey(secretKey) };
18065
- }
18066
17680
  return {
18067
- keygen,
17681
+ keygen: curve_createKeygen(randomSecretKey, schnorrGetPublicKey),
18068
17682
  getPublicKey: schnorrGetPublicKey,
18069
17683
  sign: schnorrSign,
18070
17684
  verify: schnorrVerify,
18071
17685
  Point: Pointk1,
18072
17686
  utils: {
18073
- randomSecretKey: randomSecretKey,
18074
- randomPrivateKey: randomSecretKey,
17687
+ randomSecretKey,
18075
17688
  taggedHash,
18076
- // TODO: remove
18077
17689
  lift_x,
18078
17690
  pointToBytes,
18079
- numberToBytesBE: numberToBytesBE,
18080
- bytesToNumberBE: utils_bytesToNumberBE,
18081
- mod: mod,
18082
17691
  },
18083
17692
  lengths: {
18084
17693
  secretKey: size,
@@ -18124,7 +17733,7 @@ const mapSWU = /* @__PURE__ */ (/* unused pure expression or super */ null && ((
18124
17733
  Z: Fpk1.create(BigInt('-11')),
18125
17734
  }))()));
18126
17735
  /** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */
18127
- const secp256k1_hasher = /* @__PURE__ */ (/* unused pure expression or super */ null && ((() => createHasher(secp256k1.Point, (scalars) => {
17736
+ const secp256k1_hasher = /* @__PURE__ */ (/* unused pure expression or super */ null && ((() => createHasher(Pointk1, (scalars) => {
18128
17737
  const { x, y } = mapSWU(Fpk1.create(scalars[0]));
18129
17738
  return isoMap(x, y);
18130
17739
  }, {
@@ -18136,32 +17745,7 @@ const secp256k1_hasher = /* @__PURE__ */ (/* unused pure expression or super */
18136
17745
  expand: 'xmd',
18137
17746
  hash: sha256,
18138
17747
  }))()));
18139
- /** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */
18140
- const hashToCurve = /* @__PURE__ */ (/* unused pure expression or super */ null && ((() => secp256k1_hasher.hashToCurve)()));
18141
- /** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */
18142
- const encodeToCurve = /* @__PURE__ */ (/* unused pure expression or super */ null && ((() => secp256k1_hasher.encodeToCurve)()));
18143
17748
  //# sourceMappingURL=secp256k1.js.map
18144
- ;// ./node_modules/@noble/hashes/esm/sha256.js
18145
- /**
18146
- * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.
18147
- *
18148
- * To break sha256 using birthday attack, attackers need to try 2^128 hashes.
18149
- * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.
18150
- *
18151
- * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).
18152
- * @module
18153
- * @deprecated
18154
- */
18155
-
18156
- /** @deprecated Use import from `noble/hashes/sha2` module */
18157
- const sha256_SHA256 = (/* unused pure expression or super */ null && (SHA256n));
18158
- /** @deprecated Use import from `noble/hashes/sha2` module */
18159
- const sha256_sha256 = sha2_sha256;
18160
- /** @deprecated Use import from `noble/hashes/sha2` module */
18161
- const sha256_SHA224 = (/* unused pure expression or super */ null && (SHA224n));
18162
- /** @deprecated Use import from `noble/hashes/sha2` module */
18163
- const sha256_sha224 = (/* unused pure expression or super */ null && (sha224n));
18164
- //# sourceMappingURL=sha256.js.map
18165
17749
  ;// ./src/chat/signature.ts
18166
17750
 
18167
17751
 
@@ -18228,8 +17812,8 @@ function serializeMsg(msg) {
18228
17812
  return JSON.stringify(msg);
18229
17813
  }
18230
17814
  function getMsgHash(message) {
18231
- var msgHash = sha256_sha256(utf8Encoder.encode(serializeMsg(message)));
18232
- return bytesToHex(msgHash);
17815
+ var msgHash = sha2_sha256(utf8Encoder.encode(serializeMsg(message)));
17816
+ return utils_bytesToHex(msgHash);
18233
17817
  }
18234
17818
 
18235
17819
  // const isRecord = (obj: unknown): obj is Record<string, unknown> => obj instanceof Object
@@ -18255,10 +17839,10 @@ function getMsgHash(message) {
18255
17839
  } */
18256
17840
 
18257
17841
  function verifySignature(sig, message, pubKey) {
18258
- return schnorr.verify(sig, getMsgHash(message), pubKey);
17842
+ return schnorr.verify(utils_hexToBytes(sig), utils_hexToBytes(getMsgHash(message)), utils_hexToBytes(pubKey));
18259
17843
  }
18260
17844
  function signMsg(message, key) {
18261
- return bytesToHex(schnorr.sign(getMsgHash(message), key));
17845
+ return utils_bytesToHex(schnorr.sign(utils_hexToBytes(getMsgHash(message)), utils_hexToBytes(key)));
18262
17846
  }
18263
17847
  ;// ./src/utils/keyHelpers/otherHelpers.ts
18264
17848
 
@@ -18486,10 +18070,10 @@ var keyAclBody = function keyAclBody(keyDoc, me) {
18486
18070
 
18487
18071
 
18488
18072
  function generatePrivateKey() {
18489
- return bytesToHex(schnorr.utils.randomPrivateKey());
18073
+ return utils_bytesToHex(schnorr.utils.randomSecretKey());
18490
18074
  }
18491
18075
  function generatePublicKey(privateKey) {
18492
- return bytesToHex(schnorr.getPublicKey(privateKey));
18076
+ return utils_bytesToHex(schnorr.getPublicKey(utils_hexToBytes(privateKey)));
18493
18077
  }
18494
18078
 
18495
18079
  /**