[epiphany/mcatanzaro/pdfjs-2.7] Update to PDF.js v2.7.570




commit a654a92578726f6512acb4149bbd3a92ee89697a
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Mon Apr 5 15:23:42 2021 -0500

    Update to PDF.js v2.7.570
    
    This does not actually work because all icons are blocked by CORS.

 third-party/pdfjs/README.epiphany.md               |    10 +-
 third-party/pdfjs/build/pdf.js                     |  3137 +-
 third-party/pdfjs/build/pdf.sandbox.js             |   312 +
 third-party/pdfjs/build/pdf.worker.js              | 28655 ++++++++++++-------
 third-party/pdfjs/epiphany-pdfjs-changes.patch     |    53 +-
 third-party/pdfjs/pdfjs.gresource.xml              |   574 +-
 third-party/pdfjs/web/debugger.js                  |     3 +-
 .../pdfjs/web/images/findbarButton-next-dark.svg   |     6 -
 .../web/images/findbarButton-previous-dark.svg     |     5 -
 ...ondaryToolbarButton-documentProperties-dark.svg |    16 -
 .../secondaryToolbarButton-firstPage-dark.svg      |     2 -
 .../secondaryToolbarButton-handTool-dark.svg       |     2 -
 .../secondaryToolbarButton-lastPage-dark.svg       |     2 -
 .../secondaryToolbarButton-rotateCcw-dark.svg      |     2 -
 .../secondaryToolbarButton-rotateCw-dark.svg       |     5 -
 ...econdaryToolbarButton-scrollHorizontal-dark.svg |     2 -
 .../secondaryToolbarButton-scrollVertical-dark.svg |     2 -
 .../secondaryToolbarButton-scrollWrapped-dark.svg  |     2 -
 .../secondaryToolbarButton-selectTool-dark.svg     |     5 -
 .../secondaryToolbarButton-spreadEven-dark.svg     |     2 -
 .../secondaryToolbarButton-spreadNone-dark.svg     |     2 -
 .../secondaryToolbarButton-spreadOdd-dark.svg      |     2 -
 .../web/images/toolbarButton-bookmark-dark.svg     |     2 -
 .../images/toolbarButton-currentOutlineItem.svg    |     1 +
 .../web/images/toolbarButton-download-dark.svg     |     5 -
 .../web/images/toolbarButton-menuArrow-dark.svg    |     1 -
 .../web/images/toolbarButton-openFile-dark.svg     |     5 -
 .../web/images/toolbarButton-pageDown-dark.svg     |     8 -
 .../pdfjs/web/images/toolbarButton-pageUp-dark.svg |    13 -
 .../images/toolbarButton-presentationMode-dark.svg |     2 -
 .../pdfjs/web/images/toolbarButton-print-dark.svg  |     5 -
 .../pdfjs/web/images/toolbarButton-search-dark.svg |     5 -
 .../toolbarButton-secondaryToolbarToggle-dark.svg  |     5 -
 .../images/toolbarButton-sidebarToggle-dark.svg    |     5 -
 .../images/toolbarButton-viewAttachments-dark.svg  |     2 -
 .../web/images/toolbarButton-viewLayers-dark.svg   |     1 -
 .../web/images/toolbarButton-viewOutline-dark.svg  |     2 -
 .../images/toolbarButton-viewThumbnail-dark.svg    |     5 -
 .../pdfjs/web/images/toolbarButton-zoomIn-dark.svg |     5 -
 .../web/images/toolbarButton-zoomOut-dark.svg      |     5 -
 .../pdfjs/web/images/treeitem-collapsed-dark.svg   |     2 -
 .../pdfjs/web/images/treeitem-expanded-dark.svg    |     2 -
 third-party/pdfjs/web/locale/an/viewer.properties  |    70 +-
 third-party/pdfjs/web/locale/ar/viewer.properties  |    18 +-
 third-party/pdfjs/web/locale/az/viewer.properties  |     8 +-
 third-party/pdfjs/web/locale/be/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/br/viewer.properties  |    42 +-
 third-party/pdfjs/web/locale/ca/viewer.properties  |     2 +-
 third-party/pdfjs/web/locale/cak/viewer.properties |     4 +
 third-party/pdfjs/web/locale/ckb/viewer.properties |   130 +-
 third-party/pdfjs/web/locale/cs/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/cy/viewer.properties  |     6 +
 third-party/pdfjs/web/locale/da/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/de/viewer.properties  |     6 +
 third-party/pdfjs/web/locale/dsb/viewer.properties |     6 +
 third-party/pdfjs/web/locale/el/viewer.properties  |    12 +-
 .../pdfjs/web/locale/en-CA/viewer.properties       |     4 +
 .../pdfjs/web/locale/en-GB/viewer.properties       |     6 +
 .../pdfjs/web/locale/en-US/viewer.properties       |     2 +
 third-party/pdfjs/web/locale/eo/viewer.properties  |     4 +
 .../pdfjs/web/locale/es-AR/viewer.properties       |     5 +
 .../pdfjs/web/locale/es-CL/viewer.properties       |     4 +
 .../pdfjs/web/locale/es-ES/viewer.properties       |     4 +
 .../pdfjs/web/locale/es-MX/viewer.properties       |     4 +
 third-party/pdfjs/web/locale/eu/viewer.properties  |     2 +
 third-party/pdfjs/web/locale/fi/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/fr/viewer.properties  |     4 +
 .../pdfjs/web/locale/fy-NL/viewer.properties       |     6 +-
 third-party/pdfjs/web/locale/gd/viewer.properties  |     6 +-
 third-party/pdfjs/web/locale/gl/viewer.properties  |     6 +
 third-party/pdfjs/web/locale/gn/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/he/viewer.properties  |    12 +-
 third-party/pdfjs/web/locale/hr/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/hsb/viewer.properties |     6 +
 third-party/pdfjs/web/locale/hu/viewer.properties  |     6 +
 third-party/pdfjs/web/locale/hye/viewer.properties |    11 +-
 third-party/pdfjs/web/locale/ia/viewer.properties  |     6 +-
 third-party/pdfjs/web/locale/id/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/it/viewer.properties  |     6 +
 third-party/pdfjs/web/locale/ja/viewer.properties  |     5 +-
 third-party/pdfjs/web/locale/ka/viewer.properties  |    18 +-
 third-party/pdfjs/web/locale/kab/viewer.properties |     8 +-
 third-party/pdfjs/web/locale/kk/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/km/viewer.properties  |    33 +
 third-party/pdfjs/web/locale/ko/viewer.properties  |    26 +-
 third-party/pdfjs/web/locale/lt/viewer.properties  |    16 +-
 .../pdfjs/web/locale/nb-NO/viewer.properties       |     6 +
 third-party/pdfjs/web/locale/nl/viewer.properties  |     6 +
 .../pdfjs/web/locale/nn-NO/viewer.properties       |     4 +
 third-party/pdfjs/web/locale/oc/viewer.properties  |    10 +-
 .../pdfjs/web/locale/pa-IN/viewer.properties       |     8 +-
 third-party/pdfjs/web/locale/pl/viewer.properties  |     4 +
 .../pdfjs/web/locale/pt-BR/viewer.properties       |    20 +-
 .../pdfjs/web/locale/pt-PT/viewer.properties       |     4 +
 third-party/pdfjs/web/locale/rm/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/ru/viewer.properties  |     6 +-
 third-party/pdfjs/web/locale/sk/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/sl/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/sq/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/sr/viewer.properties  |     4 +
 .../pdfjs/web/locale/sv-SE/viewer.properties       |     7 +-
 third-party/pdfjs/web/locale/szl/viewer.properties |     4 +
 third-party/pdfjs/web/locale/te/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/th/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/tl/viewer.properties  |   142 +-
 third-party/pdfjs/web/locale/tr/viewer.properties  |     4 +
 third-party/pdfjs/web/locale/uk/viewer.properties  |     8 +-
 third-party/pdfjs/web/locale/vi/viewer.properties  |     4 +
 .../pdfjs/web/locale/zh-CN/viewer.properties       |     6 +
 .../pdfjs/web/locale/zh-TW/viewer.properties       |     8 +-
 third-party/pdfjs/web/viewer.css                   |  1177 +-
 third-party/pdfjs/web/viewer.html                  |    42 +-
 third-party/pdfjs/web/viewer.js                    |  8709 +++---
 113 files changed, 26918 insertions(+), 16717 deletions(-)
---
diff --git a/third-party/pdfjs/README.epiphany.md b/third-party/pdfjs/README.epiphany.md
index 81070302a..5040b54b8 100644
--- a/third-party/pdfjs/README.epiphany.md
+++ b/third-party/pdfjs/README.epiphany.md
@@ -3,10 +3,12 @@
 This directory contains an official pdf.js release version, distributed at: https://github.com/mozilla/pdf.js
 
 ## Update process
-Grab a new official release (*-dist.zip) distributed at github and extract everything except 
viewer.[html/js/css] and map files into this directory.
-Then recreate the resource xml file with `python ./pdfjs_generate_resource.py`
-
-The additional files within this directory are modified for Epiphany and shouldn't be changed automatically.
+1. Delete existing files except epiphany-pdfjs-changes.patch, pdfjs_generate_resource.py, and 
README.epiphany.md.
+2. Grab a new official release (*-dist.zip) distributed at github and extract everything into this directory.
+3. Delete precompiled .map files (viewer.js.map, pdf.js.map, pdf.worker.js.map, pdf.sandbox.js.map).
+4. Manually merge changes from epiphany-pdfjs-changes.patch into web/viewer.[html/js/css].
+5. Recreate epiphany-pdfjs-changes.patch.
+6. Recreate the resource xml file with `python ./pdfjs_generate_resource.py`
 
 ## Modifications to viewer.html
 1. In order to circumvent CORS the pdf is downloaded and then embedded into the viewer.html file. Therefore 
the head has an
diff --git a/third-party/pdfjs/build/pdf.js b/third-party/pdfjs/build/pdf.js
index 8d59e6dd9..e2c2e2be1 100644
--- a/third-party/pdfjs/build/pdf.js
+++ b/third-party/pdfjs/build/pdf.js
@@ -30,294 +30,209 @@
        else
                root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
 })(this, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/       // The module cache
-/******/       var installedModules = {};
-/******/
-/******/       // The require function
-/******/       function __w_pdfjs_require__(moduleId) {
-/******/
-/******/               // Check if module is in cache
-/******/               if(installedModules[moduleId]) {
-/******/                       return installedModules[moduleId].exports;
-/******/               }
-/******/               // Create a new module (and put it into the cache)
-/******/               var module = installedModules[moduleId] = {
-/******/                       i: moduleId,
-/******/                       l: false,
-/******/                       exports: {}
-/******/               };
-/******/
-/******/               // Execute the module function
-/******/               modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
-/******/
-/******/               // Flag the module as loaded
-/******/               module.l = true;
-/******/
-/******/               // Return the exports of the module
-/******/               return module.exports;
-/******/       }
-/******/
-/******/
-/******/       // expose the modules object (__webpack_modules__)
-/******/       __w_pdfjs_require__.m = modules;
-/******/
-/******/       // expose the module cache
-/******/       __w_pdfjs_require__.c = installedModules;
-/******/
-/******/       // define getter function for harmony exports
-/******/       __w_pdfjs_require__.d = function(exports, name, getter) {
-/******/               if(!__w_pdfjs_require__.o(exports, name)) {
-/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/               }
-/******/       };
-/******/
-/******/       // define __esModule on exports
-/******/       __w_pdfjs_require__.r = function(exports) {
-/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/               }
-/******/               Object.defineProperty(exports, '__esModule', { value: true });
-/******/       };
-/******/
-/******/       // create a fake namespace object
-/******/       // mode & 1: value is a module id, require it
-/******/       // mode & 2: merge all properties of value into the ns
-/******/       // mode & 4: return value when already ns object
-/******/       // mode & 8|1: behave like require
-/******/       __w_pdfjs_require__.t = function(value, mode) {
-/******/               if(mode & 1) value = __w_pdfjs_require__(value);
-/******/               if(mode & 8) return value;
-/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/               var ns = Object.create(null);
-/******/               __w_pdfjs_require__.r(ns);
-/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/               if(mode & 2 && typeof value != 'string') for(var key in value) 
__w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/               return ns;
-/******/       };
-/******/
-/******/       // getDefaultExport function for compatibility with non-harmony modules
-/******/       __w_pdfjs_require__.n = function(module) {
-/******/               var getter = module && module.__esModule ?
-/******/                       function getDefault() { return module['default']; } :
-/******/                       function getModuleExports() { return module; };
-/******/               __w_pdfjs_require__.d(getter, 'a', getter);
-/******/               return getter;
-/******/       };
-/******/
-/******/       // Object.prototype.hasOwnProperty.call
-/******/       __w_pdfjs_require__.o = function(object, property) { return 
Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/       // __webpack_public_path__
-/******/       __w_pdfjs_require__.p = "";
-/******/
-/******/
-/******/       // Load entry module and return exports
-/******/       return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
+return /******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ([
 /* 0 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-Object.defineProperty(exports, "addLinkAttributes", {
+}));
+Object.defineProperty(exports, "addLinkAttributes", ({
   enumerable: true,
   get: function () {
     return _display_utils.addLinkAttributes;
   }
-});
-Object.defineProperty(exports, "getFilenameFromUrl", {
+}));
+Object.defineProperty(exports, "getFilenameFromUrl", ({
   enumerable: true,
   get: function () {
     return _display_utils.getFilenameFromUrl;
   }
-});
-Object.defineProperty(exports, "LinkTarget", {
+}));
+Object.defineProperty(exports, "LinkTarget", ({
   enumerable: true,
   get: function () {
     return _display_utils.LinkTarget;
   }
-});
-Object.defineProperty(exports, "loadScript", {
+}));
+Object.defineProperty(exports, "loadScript", ({
   enumerable: true,
   get: function () {
     return _display_utils.loadScript;
   }
-});
-Object.defineProperty(exports, "PDFDateString", {
+}));
+Object.defineProperty(exports, "PDFDateString", ({
   enumerable: true,
   get: function () {
     return _display_utils.PDFDateString;
   }
-});
-Object.defineProperty(exports, "RenderingCancelledException", {
+}));
+Object.defineProperty(exports, "RenderingCancelledException", ({
   enumerable: true,
   get: function () {
     return _display_utils.RenderingCancelledException;
   }
-});
-Object.defineProperty(exports, "build", {
+}));
+Object.defineProperty(exports, "build", ({
   enumerable: true,
   get: function () {
     return _api.build;
   }
-});
-Object.defineProperty(exports, "getDocument", {
+}));
+Object.defineProperty(exports, "getDocument", ({
   enumerable: true,
   get: function () {
     return _api.getDocument;
   }
-});
-Object.defineProperty(exports, "LoopbackPort", {
+}));
+Object.defineProperty(exports, "LoopbackPort", ({
   enumerable: true,
   get: function () {
     return _api.LoopbackPort;
   }
-});
-Object.defineProperty(exports, "PDFDataRangeTransport", {
+}));
+Object.defineProperty(exports, "PDFDataRangeTransport", ({
   enumerable: true,
   get: function () {
     return _api.PDFDataRangeTransport;
   }
-});
-Object.defineProperty(exports, "PDFWorker", {
+}));
+Object.defineProperty(exports, "PDFWorker", ({
   enumerable: true,
   get: function () {
     return _api.PDFWorker;
   }
-});
-Object.defineProperty(exports, "version", {
+}));
+Object.defineProperty(exports, "version", ({
   enumerable: true,
   get: function () {
     return _api.version;
   }
-});
-Object.defineProperty(exports, "CMapCompressionType", {
+}));
+Object.defineProperty(exports, "CMapCompressionType", ({
   enumerable: true,
   get: function () {
     return _util.CMapCompressionType;
   }
-});
-Object.defineProperty(exports, "createObjectURL", {
+}));
+Object.defineProperty(exports, "createObjectURL", ({
   enumerable: true,
   get: function () {
     return _util.createObjectURL;
   }
-});
-Object.defineProperty(exports, "createPromiseCapability", {
+}));
+Object.defineProperty(exports, "createPromiseCapability", ({
   enumerable: true,
   get: function () {
     return _util.createPromiseCapability;
   }
-});
-Object.defineProperty(exports, "createValidAbsoluteUrl", {
+}));
+Object.defineProperty(exports, "createValidAbsoluteUrl", ({
   enumerable: true,
   get: function () {
     return _util.createValidAbsoluteUrl;
   }
-});
-Object.defineProperty(exports, "InvalidPDFException", {
+}));
+Object.defineProperty(exports, "InvalidPDFException", ({
   enumerable: true,
   get: function () {
     return _util.InvalidPDFException;
   }
-});
-Object.defineProperty(exports, "MissingPDFException", {
+}));
+Object.defineProperty(exports, "MissingPDFException", ({
   enumerable: true,
   get: function () {
     return _util.MissingPDFException;
   }
-});
-Object.defineProperty(exports, "OPS", {
+}));
+Object.defineProperty(exports, "OPS", ({
   enumerable: true,
   get: function () {
     return _util.OPS;
   }
-});
-Object.defineProperty(exports, "PasswordResponses", {
+}));
+Object.defineProperty(exports, "PasswordResponses", ({
   enumerable: true,
   get: function () {
     return _util.PasswordResponses;
   }
-});
-Object.defineProperty(exports, "PermissionFlag", {
+}));
+Object.defineProperty(exports, "PermissionFlag", ({
   enumerable: true,
   get: function () {
     return _util.PermissionFlag;
   }
-});
-Object.defineProperty(exports, "removeNullCharacters", {
+}));
+Object.defineProperty(exports, "removeNullCharacters", ({
   enumerable: true,
   get: function () {
     return _util.removeNullCharacters;
   }
-});
-Object.defineProperty(exports, "shadow", {
+}));
+Object.defineProperty(exports, "shadow", ({
   enumerable: true,
   get: function () {
     return _util.shadow;
   }
-});
-Object.defineProperty(exports, "UnexpectedResponseException", {
+}));
+Object.defineProperty(exports, "UnexpectedResponseException", ({
   enumerable: true,
   get: function () {
     return _util.UnexpectedResponseException;
   }
-});
-Object.defineProperty(exports, "UNSUPPORTED_FEATURES", {
+}));
+Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({
   enumerable: true,
   get: function () {
     return _util.UNSUPPORTED_FEATURES;
   }
-});
-Object.defineProperty(exports, "Util", {
+}));
+Object.defineProperty(exports, "Util", ({
   enumerable: true,
   get: function () {
     return _util.Util;
   }
-});
-Object.defineProperty(exports, "VerbosityLevel", {
+}));
+Object.defineProperty(exports, "VerbosityLevel", ({
   enumerable: true,
   get: function () {
     return _util.VerbosityLevel;
   }
-});
-Object.defineProperty(exports, "AnnotationLayer", {
+}));
+Object.defineProperty(exports, "AnnotationLayer", ({
   enumerable: true,
   get: function () {
     return _annotation_layer.AnnotationLayer;
   }
-});
-Object.defineProperty(exports, "apiCompatibilityParams", {
+}));
+Object.defineProperty(exports, "apiCompatibilityParams", ({
   enumerable: true,
   get: function () {
     return _api_compatibility.apiCompatibilityParams;
   }
-});
-Object.defineProperty(exports, "GlobalWorkerOptions", {
+}));
+Object.defineProperty(exports, "GlobalWorkerOptions", ({
   enumerable: true,
   get: function () {
     return _worker_options.GlobalWorkerOptions;
   }
-});
-Object.defineProperty(exports, "renderTextLayer", {
+}));
+Object.defineProperty(exports, "renderTextLayer", ({
   enumerable: true,
   get: function () {
     return _text_layer.renderTextLayer;
   }
-});
-Object.defineProperty(exports, "SVGGraphics", {
+}));
+Object.defineProperty(exports, "SVGGraphics", ({
   enumerable: true,
   get: function () {
     return _svg.SVGGraphics;
   }
-});
+}));
 
 var _display_utils = __w_pdfjs_require__(1);
 
@@ -331,30 +246,30 @@ var _api_compatibility = __w_pdfjs_require__(9);
 
 var _worker_options = __w_pdfjs_require__(12);
 
-var _text_layer = __w_pdfjs_require__(20);
+var _text_layer = __w_pdfjs_require__(21);
 
-var _svg = __w_pdfjs_require__(21);
+var _svg = __w_pdfjs_require__(22);
 
-const pdfjsVersion = '2.6.347';
-const pdfjsBuild = '3be9c65f';
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
 {
   const {
     isNodeJS
   } = __w_pdfjs_require__(4);
 
   if (isNodeJS) {
-    const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream;
+    const PDFNodeStream = __w_pdfjs_require__(23).PDFNodeStream;
 
     (0, _api.setPDFNetworkStreamFactory)(params => {
       return new PDFNodeStream(params);
     });
   } else {
-    const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream;
+    const PDFNetworkStream = __w_pdfjs_require__(26).PDFNetworkStream;
 
     let PDFFetchStream;
 
     if ((0, _display_utils.isFetchSupported)()) {
-      PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream;
+      PDFFetchStream = __w_pdfjs_require__(27).PDFFetchStream;
     }
 
     (0, _api.setPDFNetworkStreamFactory)(params => {
@@ -369,21 +284,20 @@ const pdfjsBuild = '3be9c65f';
 
 /***/ }),
 /* 1 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.addLinkAttributes = addLinkAttributes;
+exports.deprecated = deprecated;
 exports.getFilenameFromUrl = getFilenameFromUrl;
 exports.isFetchSupported = isFetchSupported;
 exports.isValidFetchUrl = isValidFetchUrl;
 exports.loadScript = loadScript;
-exports.deprecated = deprecated;
-exports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = 
exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = 
exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = 
void 0;
+exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = 
exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = 
exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -836,11 +750,18 @@ function isValidFetchUrl(url, baseUrl) {
   }
 }
 
-function loadScript(src) {
+function loadScript(src, removeScriptElement = false) {
   return new Promise((resolve, reject) => {
     const script = document.createElement("script");
     script.src = src;
-    script.onload = resolve;
+
+    script.onload = function (evt) {
+      if (removeScriptElement) {
+        script.remove();
+      }
+
+      resolve(evt);
+    };
 
     script.onerror = function () {
       reject(new Error(`Cannot load script at: ${script.src}`));
@@ -906,41 +827,45 @@ exports.PDFDateString = PDFDateString;
 
 /***/ }),
 /* 2 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.arrayByteLength = arrayByteLength;
 exports.arraysToBytes = arraysToBytes;
 exports.assert = assert;
 exports.bytesToString = bytesToString;
 exports.createPromiseCapability = createPromiseCapability;
+exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.encodeToXmlString = encodeToXmlString;
 exports.escapeString = escapeString;
 exports.getModificationDate = getModificationDate;
 exports.getVerbosityLevel = getVerbosityLevel;
 exports.info = info;
 exports.isArrayBuffer = isArrayBuffer;
 exports.isArrayEqual = isArrayEqual;
+exports.isAscii = isAscii;
 exports.isBool = isBool;
 exports.isNum = isNum;
-exports.isString = isString;
 exports.isSameOrigin = isSameOrigin;
-exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.isString = isString;
+exports.objectFromEntries = objectFromEntries;
+exports.objectSize = objectSize;
 exports.removeNullCharacters = removeNullCharacters;
 exports.setVerbosityLevel = setVerbosityLevel;
 exports.shadow = shadow;
 exports.string32 = string32;
 exports.stringToBytes = stringToBytes;
 exports.stringToPDFString = stringToPDFString;
+exports.stringToUTF16BEString = stringToUTF16BEString;
 exports.stringToUTF8String = stringToUTF8String;
+exports.unreachable = unreachable;
 exports.utf8StringToString = utf8StringToString;
 exports.warn = warn;
-exports.unreachable = unreachable;
-exports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError 
= exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = 
exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = 
exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = 
exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = 
exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = 
exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = 
exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = 
exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = 
exports.BaseException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag 
= exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = 
exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = 
exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = 
exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.createObjectURL = 
exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = 
exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = 
exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
 
 __w_pdfjs_require__(3);
 
@@ -1073,6 +998,36 @@ const AnnotationBorderStyleType = {
   UNDERLINE: 5
 };
 exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
+const AnnotationActionEventType = {
+  E: "Mouse Enter",
+  X: "Mouse Exit",
+  D: "Mouse Down",
+  U: "Mouse Up",
+  Fo: "Focus",
+  Bl: "Blur",
+  PO: "PageOpen",
+  PC: "PageClose",
+  PV: "PageVisible",
+  PI: "PageInvisible",
+  K: "Keystroke",
+  F: "Format",
+  V: "Validate",
+  C: "Calculate"
+};
+exports.AnnotationActionEventType = AnnotationActionEventType;
+const DocumentActionEventType = {
+  WC: "WillClose",
+  WS: "WillSave",
+  DS: "DidSave",
+  WP: "WillPrint",
+  DP: "DidPrint"
+};
+exports.DocumentActionEventType = DocumentActionEventType;
+const PageActionEventType = {
+  O: "PageOpen",
+  C: "PageClose"
+};
+exports.PageActionEventType = PageActionEventType;
 const StreamType = {
   UNKNOWN: "UNKNOWN",
   FLATE: "FLATE",
@@ -1481,6 +1436,14 @@ function string32(value) {
   return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
 }
 
+function objectSize(obj) {
+  return Object.keys(obj).length;
+}
+
+function objectFromEntries(iterable) {
+  return Object.assign(Object.create(null), Object.fromEntries(iterable));
+}
+
 function isLittleEndian() {
   const buffer8 = new Uint8Array(4);
   buffer8[0] = 1;
@@ -1512,14 +1475,11 @@ const IsEvalSupportedCached = {
 
 };
 exports.IsEvalSupportedCached = IsEvalSupportedCached;
-const rgbBuf = ["rgb(", 0, ",", 0, ",", 0, ")"];
+const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
 
 class Util {
-  static makeCssRgb(r, g, b) {
-    rgbBuf[1] = r;
-    rgbBuf[3] = g;
-    rgbBuf[5] = b;
-    return rgbBuf.join("");
+  static makeHexColor(r, g, b) {
+    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
   }
 
   static transform(m1, m2) {
@@ -1641,7 +1601,31 @@ function stringToPDFString(str) {
 }
 
 function escapeString(str) {
-  return str.replace(/([\(\)\\])/g, "\\$1");
+  return str.replace(/([()\\\n\r])/g, match => {
+    if (match === "\n") {
+      return "\\n";
+    } else if (match === "\r") {
+      return "\\r";
+    }
+
+    return `\\${match}`;
+  });
+}
+
+function isAscii(str) {
+  return /^[\x00-\x7F]*$/.test(str);
+}
+
+function stringToUTF16BEString(str) {
+  const buf = ["\xFE\xFF"];
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.charCodeAt(i);
+    buf.push(String.fromCharCode(char >> 8 & 0xff));
+    buf.push(String.fromCharCode(char & 0xff));
+  }
+
+  return buf.join("");
 }
 
 function stringToUTF8String(str) {
@@ -1678,8 +1662,8 @@ function isArrayEqual(arr1, arr2) {
   });
 }
 
-function getModificationDate(date = new Date(Date.now())) {
-  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), 
(date.getUTCDate() + 1).toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), 
date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
+function getModificationDate(date = new Date()) {
+  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), 
date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), 
date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
   return buffer.join("");
 }
 
@@ -1734,12 +1718,62 @@ const createObjectURL = function createObjectURLClosure() {
 }();
 
 exports.createObjectURL = createObjectURL;
+const XMLEntities = {
+  0x3c: "&lt;",
+  0x3e: "&gt;",
+  0x26: "&amp;",
+  0x22: "&quot;",
+  0x27: "&apos;"
+};
+
+function encodeToXmlString(str) {
+  const buffer = [];
+  let start = 0;
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.codePointAt(i);
+
+    if (0x20 <= char && char <= 0x7e) {
+      const entity = XMLEntities[char];
+
+      if (entity) {
+        if (start < i) {
+          buffer.push(str.substring(start, i));
+        }
+
+        buffer.push(entity);
+        start = i + 1;
+      }
+    } else {
+      if (start < i) {
+        buffer.push(str.substring(start, i));
+      }
+
+      buffer.push(`&#x${char.toString(16).toUpperCase()};`);
+
+      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
+        i++;
+      }
+
+      start = i + 1;
+    }
+  }
+
+  if (buffer.length === 0) {
+    return str;
+  }
+
+  if (start < str.length) {
+    buffer.push(str.substring(start, str.length));
+  }
+
+  return buffer.join("");
+}
 
 /***/ }),
 /* 3 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
 var _is_node = __w_pdfjs_require__(4);
@@ -1748,31 +1782,29 @@ var _is_node = __w_pdfjs_require__(4);
 
 /***/ }),
 /* 4 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.isNodeJS = void 0;
 const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw 
&& !(process.versions.electron && process.type && process.type !== "browser");
 exports.isNodeJS = isNodeJS;
 
 /***/ }),
 /* 5 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getDocument = getDocument;
 exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
-exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = 
exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
+exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = 
exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultCMapReaderFactory = 
exports.DefaultCanvasFactory = exports.build = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -1805,7 +1837,9 @@ var _webgl = __w_pdfjs_require__(18);
 const DEFAULT_RANGE_CHUNK_SIZE = 65536;
 const RENDERING_CANCELLED_TIMEOUT = 100;
 const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : 
_display_utils.DOMCanvasFactory;
+exports.DefaultCanvasFactory = DefaultCanvasFactory;
 const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : 
_display_utils.DOMCMapReaderFactory;
+exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
 let createPDFNetworkStream;
 
 function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
@@ -1979,7 +2013,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
 
   return worker.messageHandler.sendWithPromise("GetDocRequest", {
     docId,
-    apiVersion: '2.6.347',
+    apiVersion: '2.7.570',
     source: {
       data: source.data,
       url: source.url,
@@ -2176,6 +2210,10 @@ class PDFDocumentProxy {
     return this._transport.getJavaScript();
   }
 
+  getJSActions() {
+    return this._transport.getDocJSActions();
+  }
+
   getOutline() {
     return this._transport.getOutline();
   }
@@ -2192,6 +2230,10 @@ class PDFDocumentProxy {
     return this._transport.getMetadata();
   }
 
+  getMarkInfo() {
+    return this._transport.getMarkInfo();
+  }
+
   getData() {
     return this._transport.getData();
   }
@@ -2224,6 +2266,18 @@ class PDFDocumentProxy {
     return this._transport.saveDocument(annotationStorage);
   }
 
+  getFieldObjects() {
+    return this._transport.getFieldObjects();
+  }
+
+  hasJSActions() {
+    return this._transport.hasJSActions();
+  }
+
+  getCalculationOrderIds() {
+    return this._transport.getCalculationOrderIds();
+  }
+
 }
 
 exports.PDFDocumentProxy = PDFDocumentProxy;
@@ -2292,6 +2346,10 @@ class PDFPageProxy {
     return this.annotationsPromise;
   }
 
+  getJSActions() {
+    return this._jsActionsPromise || (this._jsActionsPromise = 
this._transport.getPageJSActions(this._pageIndex));
+  }
+
   render({
     canvasContext,
     viewport,
@@ -2352,7 +2410,7 @@ class PDFPageProxy {
         pageIndex: this._pageIndex,
         intent: renderingIntent,
         renderInteractiveForms: renderInteractiveForms === true,
-        annotationStorage: annotationStorage && annotationStorage.getAll() || null
+        annotationStorage: annotationStorage?.getAll() || null
       });
     }
 
@@ -2551,6 +2609,7 @@ class PDFPageProxy {
 
     this.objs.clear();
     this.annotationsPromise = null;
+    this._jsActionsPromise = null;
     this.pendingCleanup = false;
     return Promise.all(waitOn);
   }
@@ -2578,6 +2637,7 @@ class PDFPageProxy {
 
     this.objs.clear();
     this.annotationsPromise = null;
+    this._jsActionsPromise = null;
 
     if (resetStats && this._stats) {
       this._stats = new _display_utils.StatTimer();
@@ -2708,7 +2768,7 @@ class PDFPageProxy {
       }
     }
 
-    intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));
+    intentState.streamReader.cancel(new _util.AbortException(reason?.message));
     intentState.streamReader = null;
 
     if (this._transport.destroyed) {
@@ -2754,9 +2814,7 @@ class LoopbackPort {
       let buffer, result;
 
       if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
-        const transferable = transfers && transfers.includes(buffer);
-
-        if (transferable) {
+        if (transfers?.includes(buffer)) {
           result = new value.constructor(buffer, value.byteOffset, value.byteLength);
         } else {
           result = new value.constructor(value);
@@ -2846,7 +2904,7 @@ const PDFWorker = function PDFWorkerClosure() {
     isWorkerDisabled = true;
     fallbackWorkerSrc = "./pdf.worker.js";
   } else if (typeof document === "object" && "currentScript" in document) {
-    const pdfjsFilePath = document.currentScript && document.currentScript.src;
+    const pdfjsFilePath = document.currentScript?.src;
 
     if (pdfjsFilePath) {
       fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
@@ -2873,7 +2931,7 @@ const PDFWorker = function PDFWorkerClosure() {
     let mainWorkerMessageHandler;
 
     try {
-      mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;
+      mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler;
     } catch (ex) {}
 
     return mainWorkerMessageHandler || null;
@@ -3159,6 +3217,10 @@ class WorkerTransport {
     this.setupMessageHandler();
   }
 
+  get loadingTaskSettled() {
+    return this.loadingTask._capability.settled;
+  }
+
   destroy() {
     if (this.destroyCapability) {
       return this.destroyCapability.promise;
@@ -3181,8 +3243,20 @@ class WorkerTransport {
     this.pagePromises.length = 0;
     const terminated = this.messageHandler.sendWithPromise("Terminate", null);
     waitOn.push(terminated);
+
+    if (this.loadingTaskSettled) {
+      const annotationStorageResetModified = this.loadingTask.promise.then(pdfDocument => {
+        if (pdfDocument.hasOwnProperty("annotationStorage")) {
+          pdfDocument.annotationStorage.resetModified();
+        }
+      }).catch(() => {});
+      waitOn.push(annotationStorageResetModified);
+    }
+
     Promise.all(waitOn).then(() => {
+      this.commonObjs.clear();
       this.fontLoader.clear();
+      this._hasJSActionsPromise = null;
 
       if (this._networkStream) {
         this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
@@ -3411,7 +3485,7 @@ class WorkerTransport {
 
           let fontRegistry = null;
 
-          if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {
+          if (params.pdfBug && globalThis.FontInspector?.enabled) {
             fontRegistry = {
               registerFont(font, url) {
                 globalThis.FontInspector.fontAdded(font, url);
@@ -3466,7 +3540,7 @@ class WorkerTransport {
           pageProxy.objs.resolve(id, imageData);
           const MAX_IMAGE_SIZE_TO_STORE = 8000000;
 
-          if (imageData && "data" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
+          if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {
             pageProxy.cleanupAfterRender = true;
           }
 
@@ -3575,8 +3649,8 @@ class WorkerTransport {
   saveDocument(annotationStorage) {
     return this.messageHandler.sendWithPromise("SaveDocument", {
       numPages: this._numPages,
-      annotationStorage: annotationStorage && annotationStorage.getAll() || null,
-      filename: this._fullReader ? this._fullReader.filename : null
+      annotationStorage: annotationStorage?.getAll() || null,
+      filename: this._fullReader?.filename ?? null
     }).finally(() => {
       if (annotationStorage) {
         annotationStorage.resetModified();
@@ -3584,6 +3658,18 @@ class WorkerTransport {
     });
   }
 
+  getFieldObjects() {
+    return this.messageHandler.sendWithPromise("GetFieldObjects", null);
+  }
+
+  hasJSActions() {
+    return this._hasJSActionsPromise || (this._hasJSActionsPromise = 
this.messageHandler.sendWithPromise("HasJSActions", null));
+  }
+
+  getCalculationOrderIds() {
+    return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
+  }
+
   getDestinations() {
     return this.messageHandler.sendWithPromise("GetDestinations", null);
   }
@@ -3626,6 +3712,16 @@ class WorkerTransport {
     return this.messageHandler.sendWithPromise("GetJavaScript", null);
   }
 
+  getDocJSActions() {
+    return this.messageHandler.sendWithPromise("GetDocJSActions", null);
+  }
+
+  getPageJSActions(pageIndex) {
+    return this.messageHandler.sendWithPromise("GetPageJSActions", {
+      pageIndex
+    });
+  }
+
   getOutline() {
     return this.messageHandler.sendWithPromise("GetOutline", null);
   }
@@ -3645,11 +3741,16 @@ class WorkerTransport {
       return {
         info: results[0],
         metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
-        contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
+        contentDispositionFilename: this._fullReader?.filename ?? null,
+        contentLength: this._fullReader?.contentLength ?? null
       };
     });
   }
 
+  getMarkInfo() {
+    return this.messageHandler.sendWithPromise("GetMarkInfo", null);
+  }
+
   getStats() {
     return this.messageHandler.sendWithPromise("GetStats", null);
   }
@@ -3670,6 +3771,7 @@ class WorkerTransport {
 
       this.commonObjs.clear();
       this.fontLoader.clear();
+      this._hasJSActionsPromise = null;
     });
   }
 
@@ -3718,7 +3820,7 @@ class PDFObjects {
 
   has(objId) {
     const obj = this._objs[objId];
-    return obj ? obj.resolved : false;
+    return obj?.resolved || false;
   }
 
   resolve(objId, data) {
@@ -3810,7 +3912,7 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
         canvasInRendering.add(this._canvas);
       }
 
-      if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {
+      if (this._pdfBug && globalThis.StepperManager?.enabled) {
         this.stepper = globalThis.StepperManager.create(this._pageIndex);
         this.stepper.init(this.operatorList);
         this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
@@ -3924,21 +4026,20 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
   return InternalRenderTask;
 }();
 
-const version = '2.6.347';
+const version = '2.7.570';
 exports.version = version;
-const build = '3be9c65f';
+const build = 'f2c7338b0';
 exports.build = build;
 
 /***/ }),
 /* 6 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.FontLoader = exports.FontFaceObject = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -4043,8 +4144,7 @@ class BaseFontLoader {
   }
 
   get isFontLoadingAPISupported() {
-    const supported = typeof this._document !== "undefined" && !!this._document.fonts;
-    return (0, _util.shadow)(this, "isFontLoadingAPISupported", supported);
+    return (0, _util.shadow)(this, "isFontLoadingAPISupported", !!this._document?.fonts);
   }
 
   get isSyncFontLoadingSupported() {
@@ -4082,7 +4182,7 @@ exports.FontLoader = FontLoader;
       } else {
         const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
 
-        if (m && m[1] >= 14) {
+        if (m?.[1] >= 14) {
           supported = true;
         }
       }
@@ -4329,14 +4429,13 @@ exports.FontFaceObject = FontFaceObject;
 
 /***/ }),
 /* 7 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;
 
 var _display_utils = __w_pdfjs_require__(1);
@@ -4401,16 +4500,17 @@ if (_is_node.isNodeJS) {
 
 /***/ }),
 /* 8 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.AnnotationStorage = void 0;
 
+var _util = __w_pdfjs_require__(2);
+
 class AnnotationStorage {
   constructor() {
     this._storage = new Map();
@@ -4430,11 +4530,26 @@ class AnnotationStorage {
   }
 
   setValue(key, value) {
-    if (this._storage.get(key) !== value) {
-      this._setModified();
+    const obj = this._storage.get(key);
+
+    let modified = false;
+
+    if (obj !== undefined) {
+      for (const [entry, val] of Object.entries(value)) {
+        if (obj[entry] !== val) {
+          modified = true;
+          obj[entry] = val;
+        }
+      }
+    } else {
+      this._storage.set(key, value);
+
+      modified = true;
     }
 
-    this._storage.set(key, value);
+    if (modified) {
+      this._setModified();
+    }
   }
 
   getAll() {
@@ -4442,7 +4557,7 @@ class AnnotationStorage {
       return null;
     }
 
-    return Object.fromEntries(this._storage);
+    return (0, _util.objectFromEntries)(this._storage);
   }
 
   get size() {
@@ -4475,14 +4590,13 @@ exports.AnnotationStorage = AnnotationStorage;
 
 /***/ }),
 /* 9 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.apiCompatibilityParams = void 0;
 
 var _is_node = __w_pdfjs_require__(4);
@@ -4500,27 +4614,25 @@ exports.apiCompatibilityParams = apiCompatibilityParams;
 
 /***/ }),
 /* 10 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.CanvasGraphics = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _pattern_helper = __w_pdfjs_require__(11);
 
-var MIN_FONT_SIZE = 16;
-var MAX_FONT_SIZE = 100;
-var MAX_GROUP_SIZE = 4096;
-var MIN_WIDTH_FACTOR = 0.65;
-var COMPILE_TYPE3_GLYPHS = true;
-var MAX_SIZE_TO_COMPILE = 1000;
-var FULL_CHUNK_HEIGHT = 16;
+const MIN_FONT_SIZE = 16;
+const MAX_FONT_SIZE = 100;
+const MAX_GROUP_SIZE = 4096;
+const COMPILE_TYPE3_GLYPHS = true;
+const MAX_SIZE_TO_COMPILE = 1000;
+const FULL_CHUNK_HEIGHT = 16;
 
 function addContextCurrentTransform(ctx) {
   if (!ctx.mozCurrentTransform) {
@@ -4540,21 +4652,21 @@ function addContextCurrentTransform(ctx) {
     });
     Object.defineProperty(ctx, "mozCurrentTransformInverse", {
       get: function getCurrentTransformInverse() {
-        var m = this._transformMatrix;
-        var a = m[0],
-            b = m[1],
-            c = m[2],
-            d = m[3],
-            e = m[4],
-            f = m[5];
-        var ad_bc = a * d - b * c;
-        var bc_ad = b * c - a * d;
+        const m = this._transformMatrix;
+        const a = m[0],
+              b = m[1],
+              c = m[2],
+              d = m[3],
+              e = m[4],
+              f = m[5];
+        const ad_bc = a * d - b * c;
+        const bc_ad = b * c - a * d;
         return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / 
ad_bc];
       }
     });
 
     ctx.save = function ctxSave() {
-      var old = this._transformMatrix;
+      const old = this._transformMatrix;
 
       this._transformStack.push(old);
 
@@ -4564,7 +4676,7 @@ function addContextCurrentTransform(ctx) {
     };
 
     ctx.restore = function ctxRestore() {
-      var prev = this._transformStack.pop();
+      const prev = this._transformStack.pop();
 
       if (prev) {
         this._transformMatrix = prev;
@@ -4574,7 +4686,7 @@ function addContextCurrentTransform(ctx) {
     };
 
     ctx.translate = function ctxTranslate(x, y) {
-      var m = this._transformMatrix;
+      const m = this._transformMatrix;
       m[4] = m[0] * x + m[2] * y + m[4];
       m[5] = m[1] * x + m[3] * y + m[5];
 
@@ -4582,7 +4694,7 @@ function addContextCurrentTransform(ctx) {
     };
 
     ctx.scale = function ctxScale(x, y) {
-      var m = this._transformMatrix;
+      const m = this._transformMatrix;
       m[0] = m[0] * x;
       m[1] = m[1] * x;
       m[2] = m[2] * y;
@@ -4592,7 +4704,7 @@ function addContextCurrentTransform(ctx) {
     };
 
     ctx.transform = function ctxTransform(a, b, c, d, e, f) {
-      var m = this._transformMatrix;
+      const m = this._transformMatrix;
       this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + 
m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
 
       ctx._originalTransform(a, b, c, d, e, f);
@@ -4605,9 +4717,9 @@ function addContextCurrentTransform(ctx) {
     };
 
     ctx.rotate = function ctxRotate(angle) {
-      var cosValue = Math.cos(angle);
-      var sinValue = Math.sin(angle);
-      var m = this._transformMatrix;
+      const cosValue = Math.cos(angle);
+      const sinValue = Math.sin(angle);
+      const m = this._transformMatrix;
       this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * 
-sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
 
       this._originalRotate(angle);
@@ -4615,7 +4727,7 @@ function addContextCurrentTransform(ctx) {
   }
 }
 
-var CachedCanvases = function CachedCanvasesClosure() {
+const CachedCanvases = function CachedCanvasesClosure() {
   function CachedCanvases(canvasFactory) {
     this.canvasFactory = canvasFactory;
     this.cache = Object.create(null);
@@ -4623,7 +4735,7 @@ var CachedCanvases = function CachedCanvasesClosure() {
 
   CachedCanvases.prototype = {
     getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
-      var canvasEntry;
+      let canvasEntry;
 
       if (this.cache[id] !== undefined) {
         canvasEntry = this.cache[id];
@@ -4642,8 +4754,8 @@ var CachedCanvases = function CachedCanvasesClosure() {
     },
 
     clear() {
-      for (var id in this.cache) {
-        var canvasEntry = this.cache[id];
+      for (const id in this.cache) {
+        const canvasEntry = this.cache[id];
         this.canvasFactory.destroy(canvasEntry);
         delete this.cache[id];
       }
@@ -4654,24 +4766,21 @@ var CachedCanvases = function CachedCanvasesClosure() {
 }();
 
 function compileType3Glyph(imgData) {
-  var POINT_TO_PROCESS_LIMIT = 1000;
-  var width = imgData.width,
-      height = imgData.height;
-  var i,
-      j,
-      j0,
-      width1 = width + 1;
-  var points = new Uint8Array(width1 * (height + 1));
-  var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
-  var lineSize = width + 7 & ~7,
-      data0 = imgData.data;
-  var data = new Uint8Array(lineSize * height),
-      pos = 0,
-      ii;
+  const POINT_TO_PROCESS_LIMIT = 1000;
+  const width = imgData.width,
+        height = imgData.height,
+        width1 = width + 1;
+  let i, ii, j, j0;
+  const points = new Uint8Array(width1 * (height + 1));
+  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
+  const lineSize = width + 7 & ~7,
+        data0 = imgData.data;
+  const data = new Uint8Array(lineSize * height);
+  let pos = 0;
 
   for (i = 0, ii = data0.length; i < ii; i++) {
-    var mask = 128,
-        elem = data0[i];
+    const elem = data0[i];
+    let mask = 128;
 
     while (mask > 0) {
       data[pos++] = elem & mask ? 0 : 255;
@@ -4679,7 +4788,7 @@ function compileType3Glyph(imgData) {
     }
   }
 
-  var count = 0;
+  let count = 0;
   pos = 0;
 
   if (data[pos] !== 0) {
@@ -4710,7 +4819,7 @@ function compileType3Glyph(imgData) {
       ++count;
     }
 
-    var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
 
     for (j = 1; j < width; j++) {
       sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
@@ -4759,12 +4868,12 @@ function compileType3Glyph(imgData) {
     return null;
   }
 
-  var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
-  var outlines = [];
+  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
+  const outlines = [];
 
   for (i = 0; count && i <= height; i++) {
-    var p = i * width1;
-    var end = p + width;
+    let p = i * width1;
+    const end = p + width;
 
     while (p < end && !points[p]) {
       p++;
@@ -4774,19 +4883,18 @@ function compileType3Glyph(imgData) {
       continue;
     }
 
-    var coords = [p % width1, i];
-    var type = points[p],
-        p0 = p,
-        pp;
+    const coords = [p % width1, i];
+    const p0 = p;
+    let type = points[p];
 
     do {
-      var step = steps[type];
+      const step = steps[type];
 
       do {
         p += step;
       } while (!points[p]);
 
-      pp = points[p];
+      const pp = points[p];
 
       if (pp !== 5 && pp !== 10) {
         type = pp;
@@ -4808,14 +4916,14 @@ function compileType3Glyph(imgData) {
     --i;
   }
 
-  var drawOutline = function (c) {
+  const drawOutline = function (c) {
     c.save();
     c.scale(1 / width, -1 / height);
     c.translate(0, -height);
     c.beginPath();
 
     for (let k = 0, kk = outlines.length; k < kk; k++) {
-      var o = outlines[k];
+      const o = outlines[k];
       c.moveTo(o[0], o[1]);
 
       for (let l = 2, ll = o.length; l < ll; l += 2) {
@@ -4831,7 +4939,7 @@ function compileType3Glyph(imgData) {
   return drawOutline;
 }
 
-var CanvasExtraState = function CanvasExtraStateClosure() {
+const CanvasExtraState = function CanvasExtraStateClosure() {
   function CanvasExtraState() {
     this.alphaIsShape = false;
     this.fontSize = 0;
@@ -4872,9 +4980,9 @@ var CanvasExtraState = function CanvasExtraStateClosure() {
   return CanvasExtraState;
 }();
 
-var CanvasGraphics = function CanvasGraphicsClosure() {
-  var EXECUTION_TIME = 15;
-  var EXECUTION_STEPS = 10;
+const CanvasGraphics = function CanvasGraphicsClosure() {
+  const EXECUTION_TIME = 15;
+  const EXECUTION_STEPS = 10;
 
   function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer, 
optionalContentConfig) {
     this.ctx = canvasCtx;
@@ -4915,17 +5023,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       return;
     }
 
-    var height = imgData.height,
-        width = imgData.width;
-    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
-    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
-    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
-    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
-    var srcPos = 0,
+    const height = imgData.height,
+          width = imgData.width;
+    const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+    const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+    const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+    const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+    let srcPos = 0,
         destPos;
-    var src = imgData.data;
-    var dest = chunkImgData.data;
-    var i, j, thisChunkHeight, elemsInThisChunk;
+    const src = imgData.data;
+    const dest = chunkImgData.data;
+    let i, j, thisChunkHeight, elemsInThisChunk;
     let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
 
     if (transferMaps) {
@@ -4947,12 +5055,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     }
 
     if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
-      var srcLength = src.byteLength;
-      var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
-      var dest32DataLength = dest32.length;
-      var fullSrcDiff = width + 7 >> 3;
-      var white = 0xffffffff;
-      var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
+      const srcLength = src.byteLength;
+      const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
+      const dest32DataLength = dest32.length;
+      const fullSrcDiff = width + 7 >> 3;
+      let white = 0xffffffff;
+      let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
 
       if (transferMapGray) {
         if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
@@ -4965,12 +5073,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         destPos = 0;
 
         for (j = 0; j < thisChunkHeight; j++) {
-          var srcDiff = srcLength - srcPos;
+          const srcDiff = srcLength - srcPos;
           let k = 0;
-          var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
-          var kEndUnrolled = kEnd & ~7;
-          var mask = 0;
-          var srcByte = 0;
+          const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+          const kEndUnrolled = kEnd & ~7;
+          let mask = 0;
+          let srcByte = 0;
 
           for (; k < kEndUnrolled; k += 8) {
             srcByte = src[srcPos++];
@@ -5096,26 +5204,27 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
   }
 
   function putBinaryImageMask(ctx, imgData) {
-    var height = imgData.height,
-        width = imgData.width;
-    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
-    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
-    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
-    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
-    var srcPos = 0;
-    var src = imgData.data;
-    var dest = chunkImgData.data;
-
-    for (var i = 0; i < totalChunks; i++) {
-      var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
-      var destPos = 3;
-
-      for (var j = 0; j < thisChunkHeight; j++) {
-        var mask = 0;
-
-        for (var k = 0; k < width; k++) {
+    const height = imgData.height,
+          width = imgData.width;
+    const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+    const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+    const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+    const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+    let srcPos = 0;
+    const src = imgData.data;
+    const dest = chunkImgData.data;
+
+    for (let i = 0; i < totalChunks; i++) {
+      const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+      let destPos = 3;
+
+      for (let j = 0; j < thisChunkHeight; j++) {
+        let elem,
+            mask = 0;
+
+        for (let k = 0; k < width; k++) {
           if (!mask) {
-            var elem = src[srcPos++];
+            elem = src[srcPos++];
             mask = 128;
           }
 
@@ -5130,10 +5239,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
   }
 
   function copyCtxState(sourceCtx, destCtx) {
-    var properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", 
"lineJoin", "miterLimit", "globalCompositeOperation", "font"];
+    const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", 
"lineJoin", "miterLimit", "globalCompositeOperation", "font"];
 
-    for (var i = 0, ii = properties.length; i < ii; i++) {
-      var property = properties[i];
+    for (let i = 0, ii = properties.length; i < ii; i++) {
+      const property = properties[i];
 
       if (sourceCtx[property] !== undefined) {
         destCtx[property] = sourceCtx[property];
@@ -5165,17 +5274,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
   }
 
   function composeSMaskBackdrop(bytes, r0, g0, b0) {
-    var length = bytes.length;
+    const length = bytes.length;
 
-    for (var i = 3; i < length; i += 4) {
-      var alpha = bytes[i];
+    for (let i = 3; i < length; i += 4) {
+      const alpha = bytes[i];
 
       if (alpha === 0) {
         bytes[i - 3] = r0;
         bytes[i - 2] = g0;
         bytes[i - 1] = b0;
       } else if (alpha < 255) {
-        var alpha_ = 255 - alpha;
+        const alpha_ = 255 - alpha;
         bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
         bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
         bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
@@ -5184,30 +5293,30 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
   }
 
   function composeSMaskAlpha(maskData, layerData, transferMap) {
-    var length = maskData.length;
-    var scale = 1 / 255;
+    const length = maskData.length;
+    const scale = 1 / 255;
 
-    for (var i = 3; i < length; i += 4) {
-      var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+    for (let i = 3; i < length; i += 4) {
+      const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
       layerData[i] = layerData[i] * alpha * scale | 0;
     }
   }
 
   function composeSMaskLuminosity(maskData, layerData, transferMap) {
-    var length = maskData.length;
+    const length = maskData.length;
 
-    for (var i = 3; i < length; i += 4) {
-      var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+    for (let i = 3; i < length; i += 4) {
+      const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
       layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
     }
   }
 
   function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
-    var hasBackdrop = !!backdrop;
-    var r0 = hasBackdrop ? backdrop[0] : 0;
-    var g0 = hasBackdrop ? backdrop[1] : 0;
-    var b0 = hasBackdrop ? backdrop[2] : 0;
-    var composeFn;
+    const hasBackdrop = !!backdrop;
+    const r0 = hasBackdrop ? backdrop[0] : 0;
+    const g0 = hasBackdrop ? backdrop[1] : 0;
+    const b0 = hasBackdrop ? backdrop[2] : 0;
+    let composeFn;
 
     if (subtype === "Luminosity") {
       composeFn = composeSMaskLuminosity;
@@ -5215,13 +5324,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       composeFn = composeSMaskAlpha;
     }
 
-    var PIXELS_TO_PROCESS = 1048576;
-    var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+    const PIXELS_TO_PROCESS = 1048576;
+    const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
 
-    for (var row = 0; row < height; row += chunkSize) {
-      var chunkHeight = Math.min(chunkSize, height - row);
-      var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
-      var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
+    for (let row = 0; row < height; row += chunkSize) {
+      const chunkHeight = Math.min(chunkSize, height - row);
+      const maskData = maskCtx.getImageData(0, row, width, chunkHeight);
+      const layerData = layerCtx.getImageData(0, row, width, chunkHeight);
 
       if (hasBackdrop) {
         composeSMaskBackdrop(maskData.data, r0, g0, b0);
@@ -5233,10 +5342,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
   }
 
   function composeSMask(ctx, smask, layerCtx, webGLContext) {
-    var mask = smask.canvas;
-    var maskCtx = smask.context;
+    const mask = smask.canvas;
+    const maskCtx = smask.context;
     ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
-    var backdrop = smask.backdrop || null;
+    const backdrop = smask.backdrop || null;
 
     if (!smask.transferMap && webGLContext.isEnabled) {
       const composed = webGLContext.composeSMask({
@@ -5256,10 +5365,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     ctx.drawImage(mask, 0, 0);
   }
 
-  var LINE_CAP_STYLES = ["butt", "round", "square"];
-  var LINE_JOIN_STYLES = ["miter", "round", "bevel"];
-  var NORMAL_CLIP = {};
-  var EO_CLIP = {};
+  const LINE_CAP_STYLES = ["butt", "round", "square"];
+  const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+  const NORMAL_CLIP = {};
+  const EO_CLIP = {};
   CanvasGraphics.prototype = {
     beginDrawing({
       transform,
@@ -5267,15 +5376,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       transparency = false,
       background = null
     }) {
-      var width = this.ctx.canvas.width;
-      var height = this.ctx.canvas.height;
+      const width = this.ctx.canvas.width;
+      const height = this.ctx.canvas.height;
       this.ctx.save();
       this.ctx.fillStyle = background || "rgb(255, 255, 255)";
       this.ctx.fillRect(0, 0, width, height);
       this.ctx.restore();
 
       if (transparency) {
-        var transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
+        const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
         this.compositeCtx = this.ctx;
         this.transparentCanvas = transparentCanvas.canvas;
         this.ctx = transparentCanvas.context;
@@ -5292,6 +5401,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
 
       this.ctx.transform.apply(this.ctx, viewport.transform);
       this.baseTransform = this.ctx.mozCurrentTransform.slice();
+      this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
 
       if (this.imageLayer) {
         this.imageLayer.beginLayout();
@@ -5299,21 +5409,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     },
 
     executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, 
continueCallback, stepper) {
-      var argsArray = operatorList.argsArray;
-      var fnArray = operatorList.fnArray;
-      var i = executionStartIdx || 0;
-      var argsArrayLen = argsArray.length;
+      const argsArray = operatorList.argsArray;
+      const fnArray = operatorList.fnArray;
+      let i = executionStartIdx || 0;
+      const argsArrayLen = argsArray.length;
 
       if (argsArrayLen === i) {
         return i;
       }
 
-      var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
-      var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
-      var steps = 0;
-      var commonObjs = this.commonObjs;
-      var objs = this.objs;
-      var fnId;
+      const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
+      const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+      let steps = 0;
+      const commonObjs = this.commonObjs;
+      const objs = this.objs;
+      let fnId;
 
       while (true) {
         if (stepper !== undefined && i === stepper.nextBreakPoint) {
@@ -5353,8 +5463,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       }
     },
     endDrawing: function CanvasGraphics_endDrawing() {
-      if (this.current.activeSMask !== null) {
-        this.endSMaskGroup();
+      while (this.stateStack.length || this.current.activeSMask !== null) {
+        this.restore();
       }
 
       this.ctx.restore();
@@ -5389,7 +5499,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.ctx.miterLimit = limit;
     },
     setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
-      var ctx = this.ctx;
+      const ctx = this.ctx;
 
       if (ctx.setLineDash !== undefined) {
         ctx.setLineDash(dashArray);
@@ -5402,10 +5512,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     setFlatness(flatness) {},
 
     setGState: function CanvasGraphics_setGState(states) {
-      for (var i = 0, ii = states.length; i < ii; i++) {
-        var state = states[i];
-        var key = state[0];
-        var value = state[1];
+      for (let i = 0, ii = states.length; i < ii; i++) {
+        const state = states[i];
+        const key = state[0];
+        const value = state[1];
 
         switch (key) {
           case "LW":
@@ -5477,15 +5587,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       }
     },
     beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
-      var activeSMask = this.current.activeSMask;
-      var drawnWidth = activeSMask.canvas.width;
-      var drawnHeight = activeSMask.canvas.height;
-      var cacheId = "smaskGroupAt" + this.groupLevel;
-      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
-      var currentCtx = this.ctx;
-      var currentTransform = currentCtx.mozCurrentTransform;
+      const activeSMask = this.current.activeSMask;
+      const drawnWidth = activeSMask.canvas.width;
+      const drawnHeight = activeSMask.canvas.height;
+      const cacheId = "smaskGroupAt" + this.groupLevel;
+      const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+      const currentCtx = this.ctx;
+      const currentTransform = currentCtx.mozCurrentTransform;
       this.ctx.save();
-      var groupCtx = scratchCanvas.context;
+      const groupCtx = scratchCanvas.context;
       groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
       groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
       groupCtx.transform.apply(groupCtx, currentTransform);
@@ -5497,7 +5607,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.groupLevel++;
     },
     suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
-      var groupCtx = this.ctx;
+      const groupCtx = this.ctx;
       this.groupLevel--;
       this.ctx = this.groupStack.pop();
       composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
@@ -5506,7 +5616,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       copyCtxState(groupCtx, this.ctx);
       this.current.resumeSMaskCtx = groupCtx;
 
-      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
+      const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
 
       this.ctx.transform.apply(this.ctx, deltaTransform);
       groupCtx.save();
@@ -5514,28 +5624,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
       groupCtx.restore();
     },
-    resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
-      var groupCtx = this.current.resumeSMaskCtx;
-      var currentCtx = this.ctx;
+    resumeSMaskGroup: function CanvasGraphics_resumeSMaskGroup() {
+      const groupCtx = this.current.resumeSMaskCtx;
+      const currentCtx = this.ctx;
       this.ctx = groupCtx;
       this.groupStack.push(currentCtx);
       this.groupLevel++;
     },
     endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
-      var groupCtx = this.ctx;
+      const groupCtx = this.ctx;
       this.groupLevel--;
       this.ctx = this.groupStack.pop();
       composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
       this.ctx.restore();
       copyCtxState(groupCtx, this.ctx);
 
-      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
+      const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
 
       this.ctx.transform.apply(this.ctx, deltaTransform);
     },
     save: function CanvasGraphics_save() {
       this.ctx.save();
-      var old = this.current;
+      const old = this.current;
       this.stateStack.push(old);
       this.current = old.clone();
       this.current.resumeSMaskCtx = null;
@@ -5554,6 +5664,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         this.ctx.restore();
         this.pendingClip = null;
         this._cachedGetSinglePixelWidth = null;
+      } else {
+        this.current.activeSMask = null;
       }
     },
     transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
@@ -5561,34 +5673,30 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this._cachedGetSinglePixelWidth = null;
     },
     constructPath: function CanvasGraphics_constructPath(ops, args) {
-      var ctx = this.ctx;
-      var current = this.current;
-      var x = current.x,
+      const ctx = this.ctx;
+      const current = this.current;
+      let x = current.x,
           y = current.y;
 
-      for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
+      for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
         switch (ops[i] | 0) {
           case _util.OPS.rectangle:
             x = args[j++];
             y = args[j++];
-            var width = args[j++];
-            var height = args[j++];
-
-            if (width === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {
-              width = this.getSinglePixelWidth();
-            }
+            const width = args[j++];
+            const height = args[j++];
+            const xw = x + width;
+            const yh = y + height;
+            ctx.moveTo(x, y);
 
-            if (height === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {
-              height = this.getSinglePixelWidth();
+            if (width === 0 || height === 0) {
+              ctx.lineTo(xw, yh);
+            } else {
+              ctx.lineTo(xw, y);
+              ctx.lineTo(xw, yh);
+              ctx.lineTo(x, yh);
             }
 
-            var xw = x + width;
-            var yh = y + height;
-            ctx.moveTo(x, y);
-            ctx.lineTo(xw, y);
-            ctx.lineTo(xw, yh);
-            ctx.lineTo(x, yh);
-            ctx.lineTo(x, y);
             ctx.closePath();
             break;
 
@@ -5638,24 +5746,43 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     },
     stroke: function CanvasGraphics_stroke(consumePath) {
       consumePath = typeof consumePath !== "undefined" ? consumePath : true;
-      var ctx = this.ctx;
-      var strokeColor = this.current.strokeColor;
+      const ctx = this.ctx;
+      const strokeColor = this.current.strokeColor;
       ctx.globalAlpha = this.current.strokeAlpha;
 
       if (this.contentVisible) {
-        if (strokeColor && strokeColor.hasOwnProperty("type") && strokeColor.type === "Pattern") {
+        if (typeof strokeColor === "object" && strokeColor?.getPattern) {
           ctx.save();
           const transform = ctx.mozCurrentTransform;
 
           const scale = _util.Util.singularValueDecompose2dScale(transform)[0];
 
           ctx.strokeStyle = strokeColor.getPattern(ctx, this);
-          ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth * 
scale);
+          const lineWidth = this.getSinglePixelWidth();
+          const scaledLineWidth = this.current.lineWidth * scale;
+
+          if (lineWidth < 0 && -lineWidth >= scaledLineWidth) {
+            ctx.resetTransform();
+            ctx.lineWidth = Math.round(this._combinedScaleFactor);
+          } else {
+            ctx.lineWidth = Math.max(lineWidth, scaledLineWidth);
+          }
+
           ctx.stroke();
           ctx.restore();
         } else {
-          ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
-          ctx.stroke();
+          const lineWidth = this.getSinglePixelWidth();
+
+          if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
+            ctx.save();
+            ctx.resetTransform();
+            ctx.lineWidth = Math.round(this._combinedScaleFactor);
+            ctx.stroke();
+            ctx.restore();
+          } else {
+            ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+            ctx.stroke();
+          }
         }
       }
 
@@ -5671,10 +5798,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     },
     fill: function CanvasGraphics_fill(consumePath) {
       consumePath = typeof consumePath !== "undefined" ? consumePath : true;
-      var ctx = this.ctx;
-      var fillColor = this.current.fillColor;
-      var isPatternFill = this.current.patternFill;
-      var needRestore = false;
+      const ctx = this.ctx;
+      const fillColor = this.current.fillColor;
+      const isPatternFill = this.current.patternFill;
+      let needRestore = false;
 
       if (isPatternFill) {
         ctx.save();
@@ -5742,8 +5869,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.current.y = this.current.lineY = 0;
     },
     endText: function CanvasGraphics_endText() {
-      var paths = this.pendingTextPaths;
-      var ctx = this.ctx;
+      const paths = this.pendingTextPaths;
+      const ctx = this.ctx;
 
       if (paths === undefined) {
         ctx.beginPath();
@@ -5753,8 +5880,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       ctx.save();
       ctx.beginPath();
 
-      for (var i = 0; i < paths.length; i++) {
-        var path = paths[i];
+      for (let i = 0; i < paths.length; i++) {
+        const path = paths[i];
         ctx.setTransform.apply(ctx, path.transform);
         ctx.translate(path.x, path.y);
         path.addToPath(ctx, path.fontSize);
@@ -5778,14 +5905,14 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.current.leading = -leading;
     },
     setFont: function CanvasGraphics_setFont(fontRefName, size) {
-      var fontObj = this.commonObjs.get(fontRefName);
-      var current = this.current;
+      const fontObj = this.commonObjs.get(fontRefName);
+      const current = this.current;
 
       if (!fontObj) {
         throw new Error(`Can't find font for ${fontRefName}`);
       }
 
-      current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
+      current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
 
       if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
         (0, _util.warn)("Invalid font matrix for font " + fontRefName);
@@ -5805,7 +5932,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var name = fontObj.loadedName || "sans-serif";
+      const name = fontObj.loadedName || "sans-serif";
       let bold = "normal";
 
       if (fontObj.black) {
@@ -5814,8 +5941,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         bold = "bold";
       }
 
-      var italic = fontObj.italic ? "italic" : "normal";
-      var typeface = `"${name}", ${fontObj.fallbackName}`;
+      const italic = fontObj.italic ? "italic" : "normal";
+      const typeface = `"${name}", ${fontObj.fallbackName}`;
       let browserFontSize = size;
 
       if (size < MIN_FONT_SIZE) {
@@ -5851,16 +5978,16 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.moveText(0, this.current.leading);
     },
 
-    paintChar(character, x, y, patternTransform) {
-      var ctx = this.ctx;
-      var current = this.current;
-      var font = current.font;
-      var textRenderingMode = current.textRenderingMode;
-      var fontSize = current.fontSize / current.fontSizeScale;
-      var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
-      var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+    paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
+      const ctx = this.ctx;
+      const current = this.current;
+      const font = current.font;
+      const textRenderingMode = current.textRenderingMode;
+      const fontSize = current.fontSize / current.fontSizeScale;
+      const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+      const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
       const patternFill = current.patternFill && !font.missingFile;
-      var addToPath;
+      let addToPath;
 
       if (font.disableFontFace || isAddToPathSet || patternFill) {
         addToPath = font.getPathGenerator(this.commonObjs, character);
@@ -5881,6 +6008,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         }
 
         if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
+          if (resetLineWidthToOne) {
+            ctx.resetTransform();
+            ctx.lineWidth = Math.round(this._combinedScaleFactor);
+          }
+
           ctx.stroke();
         }
 
@@ -5891,12 +6023,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         }
 
         if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
-          ctx.strokeText(character, x, y);
+          if (resetLineWidthToOne) {
+            ctx.save();
+            ctx.moveTo(x, y);
+            ctx.resetTransform();
+            ctx.lineWidth = Math.round(this._combinedScaleFactor);
+            ctx.strokeText(character, 0, 0);
+            ctx.restore();
+          } else {
+            ctx.strokeText(character, x, y);
+          }
         }
       }
 
       if (isAddToPathSet) {
-        var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+        const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
         paths.push({
           transform: ctx.mozCurrentTransform,
           x,
@@ -5913,10 +6054,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
       ctx.scale(1.5, 1);
       ctx.fillText("I", 0, 10);
-      var data = ctx.getImageData(0, 0, 10, 10).data;
-      var enabled = false;
+      const data = ctx.getImageData(0, 0, 10, 10).data;
+      let enabled = false;
 
-      for (var i = 3; i < data.length; i += 4) {
+      for (let i = 3; i < data.length; i += 4) {
         if (data[i] > 0 && data[i] < 255) {
           enabled = true;
           break;
@@ -5927,31 +6068,31 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     },
 
     showText: function CanvasGraphics_showText(glyphs) {
-      var current = this.current;
-      var font = current.font;
+      const current = this.current;
+      const font = current.font;
 
       if (font.isType3Font) {
         return this.showType3Text(glyphs);
       }
 
-      var fontSize = current.fontSize;
+      const fontSize = current.fontSize;
 
       if (fontSize === 0) {
         return undefined;
       }
 
-      var ctx = this.ctx;
-      var fontSizeScale = current.fontSizeScale;
-      var charSpacing = current.charSpacing;
-      var wordSpacing = current.wordSpacing;
-      var fontDirection = current.fontDirection;
-      var textHScale = current.textHScale * fontDirection;
-      var glyphsLength = glyphs.length;
-      var vertical = font.vertical;
-      var spacingDir = vertical ? 1 : -1;
-      var defaultVMetrics = font.defaultVMetrics;
-      var widthAdvanceScale = fontSize * current.fontMatrix[0];
-      var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && 
!font.disableFontFace && !current.patternFill;
+      const ctx = this.ctx;
+      const fontSizeScale = current.fontSizeScale;
+      const charSpacing = current.charSpacing;
+      const wordSpacing = current.wordSpacing;
+      const fontDirection = current.fontDirection;
+      const textHScale = current.textHScale * fontDirection;
+      const glyphsLength = glyphs.length;
+      const vertical = font.vertical;
+      const spacingDir = vertical ? 1 : -1;
+      const defaultVMetrics = font.defaultVMetrics;
+      const widthAdvanceScale = fontSize * current.fontMatrix[0];
+      const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && 
!font.disableFontFace && !current.patternFill;
       ctx.save();
       let patternTransform;
 
@@ -5972,15 +6113,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         ctx.scale(textHScale, 1);
       }
 
-      var lineWidth = current.lineWidth;
-      var scale = current.textMatrixScale;
+      let lineWidth = current.lineWidth;
+      let resetLineWidthToOne = false;
+      const scale = current.textMatrixScale;
 
       if (scale === 0 || lineWidth === 0) {
-        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+        const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
 
         if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
           this._cachedGetSinglePixelWidth = null;
-          lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
+          lineWidth = this.getSinglePixelWidth();
+          resetLineWidthToOne = lineWidth < 0;
         }
       } else {
         lineWidth /= scale;
@@ -5992,30 +6135,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       }
 
       ctx.lineWidth = lineWidth;
-      var x = 0,
+      let x = 0,
           i;
 
       for (i = 0; i < glyphsLength; ++i) {
-        var glyph = glyphs[i];
+        const glyph = glyphs[i];
 
         if ((0, _util.isNum)(glyph)) {
           x += spacingDir * glyph * fontSize / 1000;
           continue;
         }
 
-        var restoreNeeded = false;
-        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
-        var character = glyph.fontChar;
-        var accent = glyph.accent;
-        var scaledX, scaledY, scaledAccentX, scaledAccentY;
-        var width = glyph.width;
+        let restoreNeeded = false;
+        const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+        const character = glyph.fontChar;
+        const accent = glyph.accent;
+        let scaledX, scaledY;
+        let width = glyph.width;
 
         if (vertical) {
-          var vmetric, vx, vy;
-          vmetric = glyph.vmetric || defaultVMetrics;
-          vx = glyph.vmetric ? vmetric[1] : width * 0.5;
-          vx = -vx * widthAdvanceScale;
-          vy = vmetric[2] * widthAdvanceScale;
+          const vmetric = glyph.vmetric || defaultVMetrics;
+          const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
+          const vy = vmetric[2] * widthAdvanceScale;
           width = vmetric ? -vmetric[0] : width;
           scaledX = vx / fontSizeScale;
           scaledY = (x + vy) / fontSizeScale;
@@ -6025,10 +6166,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         }
 
         if (font.remeasure && width > 0) {
-          var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
+          const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
 
           if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
-            var characterScaleX = width / measuredWidth;
+            const characterScaleX = width / measuredWidth;
             restoreNeeded = true;
             ctx.save();
             ctx.scale(characterScaleX, 1);
@@ -6042,17 +6183,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
           if (simpleFillText && !accent) {
             ctx.fillText(character, scaledX, scaledY);
           } else {
-            this.paintChar(character, scaledX, scaledY, patternTransform);
+            this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
 
             if (accent) {
-              scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
-              scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
-              this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
+              const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
+              const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
+              this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, 
resetLineWidthToOne);
             }
           }
         }
 
-        var charWidth;
+        let charWidth;
 
         if (vertical) {
           charWidth = width * widthAdvanceScale - spacing * fontDirection;
@@ -6076,19 +6217,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       ctx.restore();
     },
     showType3Text: function CanvasGraphics_showType3Text(glyphs) {
-      var ctx = this.ctx;
-      var current = this.current;
-      var font = current.font;
-      var fontSize = current.fontSize;
-      var fontDirection = current.fontDirection;
-      var spacingDir = font.vertical ? 1 : -1;
-      var charSpacing = current.charSpacing;
-      var wordSpacing = current.wordSpacing;
-      var textHScale = current.textHScale * fontDirection;
-      var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
-      var glyphsLength = glyphs.length;
-      var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
-      var i, glyph, width, spacingLength;
+      const ctx = this.ctx;
+      const current = this.current;
+      const font = current.font;
+      const fontSize = current.fontSize;
+      const fontDirection = current.fontDirection;
+      const spacingDir = font.vertical ? 1 : -1;
+      const charSpacing = current.charSpacing;
+      const wordSpacing = current.wordSpacing;
+      const textHScale = current.textHScale * fontDirection;
+      const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+      const glyphsLength = glyphs.length;
+      const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
+      let i, glyph, width, spacingLength;
 
       if (isTextInvisible || fontSize === 0) {
         return;
@@ -6110,8 +6251,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
           continue;
         }
 
-        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
-        var operatorList = font.charProcOperatorList[glyph.operatorListId];
+        const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+        const operatorList = font.charProcOperatorList[glyph.operatorListId];
 
         if (!operatorList) {
           (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
@@ -6127,7 +6268,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
           this.restore();
         }
 
-        var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
+        const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
 
         width = transformed[0] * fontSize + spacing;
         ctx.translate(width, 0);
@@ -6144,12 +6285,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.endPath();
     },
     getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
-      var pattern;
+      let pattern;
 
       if (IR[0] === "TilingPattern") {
-        var color = IR[1];
-        var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
-        var canvasGraphicsFactory = {
+        const color = IR[1];
+        const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
+        const canvasGraphicsFactory = {
           createCanvasGraphics: ctx => {
             return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, 
this.webGLContext);
           }
@@ -6169,13 +6310,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.current.patternFill = true;
     },
     setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
-      var color = _util.Util.makeCssRgb(r, g, b);
+      const color = _util.Util.makeHexColor(r, g, b);
 
       this.ctx.strokeStyle = color;
       this.current.strokeColor = color;
     },
     setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
-      var color = _util.Util.makeCssRgb(r, g, b);
+      const color = _util.Util.makeHexColor(r, g, b);
 
       this.ctx.fillStyle = color;
       this.current.fillColor = color;
@@ -6186,29 +6327,29 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var ctx = this.ctx;
+      const ctx = this.ctx;
       this.save();
-      var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
+      const pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
       ctx.fillStyle = pattern.getPattern(ctx, this, true);
-      var inv = ctx.mozCurrentTransformInverse;
+      const inv = ctx.mozCurrentTransformInverse;
 
       if (inv) {
-        var canvas = ctx.canvas;
-        var width = canvas.width;
-        var height = canvas.height;
+        const canvas = ctx.canvas;
+        const width = canvas.width;
+        const height = canvas.height;
 
-        var bl = _util.Util.applyTransform([0, 0], inv);
+        const bl = _util.Util.applyTransform([0, 0], inv);
 
-        var br = _util.Util.applyTransform([0, height], inv);
+        const br = _util.Util.applyTransform([0, height], inv);
 
-        var ul = _util.Util.applyTransform([width, 0], inv);
+        const ul = _util.Util.applyTransform([width, 0], inv);
 
-        var ur = _util.Util.applyTransform([width, height], inv);
+        const ur = _util.Util.applyTransform([width, height], inv);
 
-        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
-        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
-        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
-        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+        const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+        const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+        const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+        const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
         this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
       } else {
         this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
@@ -6237,8 +6378,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.baseTransform = this.ctx.mozCurrentTransform;
 
       if (bbox) {
-        var width = bbox[2] - bbox[0];
-        var height = bbox[3] - bbox[1];
+        const width = bbox[2] - bbox[0];
+        const height = bbox[3] - bbox[1];
         this.ctx.rect(bbox[0], bbox[1], width, height);
         this.clip();
         this.endPath();
@@ -6258,7 +6399,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       }
 
       this.save();
-      var currentCtx = this.ctx;
+      const currentCtx = this.ctx;
 
       if (!group.isolated) {
         (0, _util.info)("TODO: Support non-isolated groups.");
@@ -6268,7 +6409,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         (0, _util.warn)("Knockout groups not supported.");
       }
 
-      var currentTransform = currentCtx.mozCurrentTransform;
+      const currentTransform = currentCtx.mozCurrentTransform;
 
       if (group.matrix) {
         currentCtx.transform.apply(currentCtx, group.matrix);
@@ -6278,15 +6419,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         throw new Error("Bounding box is required.");
       }
 
-      var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
+      let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
 
-      var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
+      const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
       bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
-      var offsetX = Math.floor(bounds[0]);
-      var offsetY = Math.floor(bounds[1]);
-      var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
-      var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
-      var scaleX = 1,
+      const offsetX = Math.floor(bounds[0]);
+      const offsetY = Math.floor(bounds[1]);
+      let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+      let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+      let scaleX = 1,
           scaleY = 1;
 
       if (drawnWidth > MAX_GROUP_SIZE) {
@@ -6299,14 +6440,14 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         drawnHeight = MAX_GROUP_SIZE;
       }
 
-      var cacheId = "groupAt" + this.groupLevel;
+      let cacheId = "groupAt" + this.groupLevel;
 
       if (group.smask) {
         cacheId += "_smask_" + this.smaskCounter++ % 2;
       }
 
-      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
-      var groupCtx = scratchCanvas.context;
+      const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+      const groupCtx = scratchCanvas.context;
       groupCtx.scale(1 / scaleX, 1 / scaleY);
       groupCtx.translate(-offsetX, -offsetY);
       groupCtx.transform.apply(groupCtx, currentTransform);
@@ -6343,7 +6484,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       }
 
       this.groupLevel--;
-      var groupCtx = this.ctx;
+      const groupCtx = this.ctx;
       this.ctx = this.groupStack.pop();
 
       if (this.ctx.imageSmoothingEnabled !== undefined) {
@@ -6376,8 +6517,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       this.current = new CanvasExtraState();
 
       if (Array.isArray(rect) && rect.length === 4) {
-        var width = rect[2] - rect[0];
-        var height = rect[3] - rect[1];
+        const width = rect[2] - rect[0];
+        const height = rect[3] - rect[1];
         this.ctx.rect(rect[0], rect[1], width, height);
         this.clip();
         this.endPath();
@@ -6394,12 +6535,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var ctx = this.ctx;
-      var width = img.width,
-          height = img.height;
-      var fillColor = this.current.fillColor;
-      var isPatternFill = this.current.patternFill;
-      var glyph = this.processingType3;
+      const ctx = this.ctx;
+      const width = img.width,
+            height = img.height;
+      const fillColor = this.current.fillColor;
+      const isPatternFill = this.current.patternFill;
+      const glyph = this.processingType3;
 
       if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
         if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
@@ -6413,13 +6554,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         }
       }
 
-      if (glyph && glyph.compiled) {
+      if (glyph?.compiled) {
         glyph.compiled(ctx);
         return;
       }
 
-      var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-      var maskCtx = maskCanvas.context;
+      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+      const maskCtx = maskCanvas.context;
       maskCtx.save();
       putBinaryImageMask(maskCtx, img);
       maskCtx.globalCompositeOperation = "source-in";
@@ -6434,21 +6575,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var width = imgData.width;
-      var height = imgData.height;
-      var fillColor = this.current.fillColor;
-      var isPatternFill = this.current.patternFill;
-      var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-      var maskCtx = maskCanvas.context;
+      const width = imgData.width;
+      const height = imgData.height;
+      const fillColor = this.current.fillColor;
+      const isPatternFill = this.current.patternFill;
+      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+      const maskCtx = maskCanvas.context;
       maskCtx.save();
       putBinaryImageMask(maskCtx, imgData);
       maskCtx.globalCompositeOperation = "source-in";
       maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
       maskCtx.fillRect(0, 0, width, height);
       maskCtx.restore();
-      var ctx = this.ctx;
+      const ctx = this.ctx;
 
-      for (var i = 0, ii = positions.length; i < ii; i += 2) {
+      for (let i = 0, ii = positions.length; i < ii; i += 2) {
         ctx.save();
         ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]);
         ctx.scale(1, -1);
@@ -6462,16 +6603,16 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var ctx = this.ctx;
-      var fillColor = this.current.fillColor;
-      var isPatternFill = this.current.patternFill;
-
-      for (var i = 0, ii = images.length; i < ii; i++) {
-        var image = images[i];
-        var width = image.width,
-            height = image.height;
-        var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-        var maskCtx = maskCanvas.context;
+      const ctx = this.ctx;
+      const fillColor = this.current.fillColor;
+      const isPatternFill = this.current.patternFill;
+
+      for (let i = 0, ii = images.length; i < ii; i++) {
+        const image = images[i];
+        const width = image.width,
+              height = image.height;
+        const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+        const maskCtx = maskCanvas.context;
         maskCtx.save();
         putBinaryImageMask(maskCtx, image);
         maskCtx.globalCompositeOperation = "source-in";
@@ -6511,11 +6652,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var width = imgData.width;
-      var height = imgData.height;
-      var map = [];
+      const width = imgData.width;
+      const height = imgData.height;
+      const map = [];
 
-      for (var i = 0, ii = positions.length; i < ii; i += 2) {
+      for (let i = 0, ii = positions.length; i < ii; i += 2) {
         map.push({
           transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
           x: 0,
@@ -6532,35 +6673,35 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var width = imgData.width;
-      var height = imgData.height;
-      var ctx = this.ctx;
+      const width = imgData.width;
+      const height = imgData.height;
+      const ctx = this.ctx;
       this.save();
       ctx.scale(1 / width, -1 / height);
-      var currentTransform = ctx.mozCurrentTransformInverse;
-      var a = currentTransform[0],
-          b = currentTransform[1];
-      var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
-      var c = currentTransform[2],
-          d = currentTransform[3];
-      var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
-      var imgToPaint, tmpCanvas;
+      const currentTransform = ctx.mozCurrentTransformInverse;
+      const a = currentTransform[0],
+            b = currentTransform[1];
+      let widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
+      const c = currentTransform[2],
+            d = currentTransform[3];
+      let heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
+      let imgToPaint, tmpCanvas, tmpCtx;
 
       if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
         imgToPaint = imgData;
       } else {
         tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
-        var tmpCtx = tmpCanvas.context;
+        tmpCtx = tmpCanvas.context;
         putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
         imgToPaint = tmpCanvas.canvas;
       }
 
-      var paintWidth = width,
+      let paintWidth = width,
           paintHeight = height;
-      var tmpCanvasId = "prescale1";
+      let tmpCanvasId = "prescale1";
 
       while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
-        var newWidth = paintWidth,
+        let newWidth = paintWidth,
             newHeight = paintHeight;
 
         if (widthScale > 2 && paintWidth > 1) {
@@ -6586,7 +6727,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
 
       if (this.imageLayer) {
-        var position = this.getCanvasPosition(0, -height);
+        const position = this.getCanvasPosition(0, -height);
         this.imageLayer.appendImage({
           imgData,
           left: position[0],
@@ -6603,22 +6744,22 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      var ctx = this.ctx;
-      var w = imgData.width;
-      var h = imgData.height;
-      var tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
-      var tmpCtx = tmpCanvas.context;
+      const ctx = this.ctx;
+      const w = imgData.width;
+      const h = imgData.height;
+      const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
+      const tmpCtx = tmpCanvas.context;
       putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
 
-      for (var i = 0, ii = map.length; i < ii; i++) {
-        var entry = map[i];
+      for (let i = 0, ii = map.length; i < ii; i++) {
+        const entry = map[i];
         ctx.save();
         ctx.transform.apply(ctx, entry.transform);
         ctx.scale(1, -1);
         ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
 
         if (this.imageLayer) {
-          var position = this.getCanvasPosition(entry.x, entry.y);
+          const position = this.getCanvasPosition(entry.x, entry.y);
           this.imageLayer.appendImage({
             imgData,
             left: position[0],
@@ -6665,7 +6806,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     beginCompat: function CanvasGraphics_beginCompat() {},
     endCompat: function CanvasGraphics_endCompat() {},
     consumePath: function CanvasGraphics_consumePath() {
-      var ctx = this.ctx;
+      const ctx = this.ctx;
 
       if (this.pendingClip) {
         if (this.pendingClip === EO_CLIP) {
@@ -6680,17 +6821,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
       ctx.beginPath();
     },
 
-    getSinglePixelWidth(scale) {
+    getSinglePixelWidth() {
       if (this._cachedGetSinglePixelWidth === null) {
-        const inverse = this.ctx.mozCurrentTransformInverse;
-        this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * 
inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));
+        const m = this.ctx.mozCurrentTransform;
+        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
+        const sqNorm1 = m[0] ** 2 + m[2] ** 2;
+        const sqNorm2 = m[1] ** 2 + m[3] ** 2;
+        const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;
+
+        if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
+          this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
+        } else if (absDet > Number.EPSILON) {
+          this._cachedGetSinglePixelWidth = pixelHeight * 1.0000001;
+        } else {
+          this._cachedGetSinglePixelWidth = 1;
+        }
       }
 
       return this._cachedGetSinglePixelWidth;
     },
 
     getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
-      var transform = this.ctx.mozCurrentTransform;
+      const transform = this.ctx.mozCurrentTransform;
       return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + 
transform[5]];
     },
     isContentVisible: function CanvasGraphics_isContentVisible() {
@@ -6704,7 +6856,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() {
     }
   };
 
-  for (var op in _util.OPS) {
+  for (const op in _util.OPS) {
     CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
   }
 
@@ -6715,20 +6867,19 @@ exports.CanvasGraphics = CanvasGraphics;
 
 /***/ }),
 /* 11 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getShadingPatternFromIR = getShadingPatternFromIR;
 exports.TilingPattern = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var ShadingIRs = {};
+const ShadingIRs = {};
 
 function applyBoundingBox(ctx, bbox) {
   if (!bbox || typeof Path2D === "undefined") {
@@ -6744,18 +6895,17 @@ function applyBoundingBox(ctx, bbox) {
 
 ShadingIRs.RadialAxial = {
   fromIR: function RadialAxial_fromIR(raw) {
-    var type = raw[1];
-    var bbox = raw[2];
-    var colorStops = raw[3];
-    var p0 = raw[4];
-    var p1 = raw[5];
-    var r0 = raw[6];
-    var r1 = raw[7];
+    const type = raw[1];
+    const bbox = raw[2];
+    const colorStops = raw[3];
+    const p0 = raw[4];
+    const p1 = raw[5];
+    const r0 = raw[6];
+    const r1 = raw[7];
     return {
-      type: "Pattern",
       getPattern: function RadialAxial_getPattern(ctx) {
         applyBoundingBox(ctx, bbox);
-        var grad;
+        let grad;
 
         if (type === "axial") {
           grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
@@ -6763,8 +6913,8 @@ ShadingIRs.RadialAxial = {
           grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
         }
 
-        for (var i = 0, ii = colorStops.length; i < ii; ++i) {
-          var c = colorStops[i];
+        for (let i = 0, ii = colorStops.length; i < ii; ++i) {
+          const c = colorStops[i];
           grad.addColorStop(c[0], c[1]);
         }
 
@@ -6774,13 +6924,13 @@ ShadingIRs.RadialAxial = {
   }
 };
 
-var createMeshCanvas = function createMeshCanvasClosure() {
+const createMeshCanvas = function createMeshCanvasClosure() {
   function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
-    var coords = context.coords,
-        colors = context.colors;
-    var bytes = data.data,
-        rowSize = data.width * 4;
-    var tmp;
+    const coords = context.coords,
+          colors = context.colors;
+    const bytes = data.data,
+          rowSize = data.width * 4;
+    let tmp;
 
     if (coords[p1 + 1] > coords[p2 + 1]) {
       tmp = p1;
@@ -6809,32 +6959,32 @@ var createMeshCanvas = function createMeshCanvasClosure() {
       c2 = tmp;
     }
 
-    var x1 = (coords[p1] + context.offsetX) * context.scaleX;
-    var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
-    var x2 = (coords[p2] + context.offsetX) * context.scaleX;
-    var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
-    var x3 = (coords[p3] + context.offsetX) * context.scaleX;
-    var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
+    const x1 = (coords[p1] + context.offsetX) * context.scaleX;
+    const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
+    const x2 = (coords[p2] + context.offsetX) * context.scaleX;
+    const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
+    const x3 = (coords[p3] + context.offsetX) * context.scaleX;
+    const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
 
     if (y1 >= y3) {
       return;
     }
 
-    var c1r = colors[c1],
-        c1g = colors[c1 + 1],
-        c1b = colors[c1 + 2];
-    var c2r = colors[c2],
-        c2g = colors[c2 + 1],
-        c2b = colors[c2 + 2];
-    var c3r = colors[c3],
-        c3g = colors[c3 + 1],
-        c3b = colors[c3 + 2];
-    var minY = Math.round(y1),
-        maxY = Math.round(y3);
-    var xa, car, cag, cab;
-    var xb, cbr, cbg, cbb;
-
-    for (var y = minY; y <= maxY; y++) {
+    const c1r = colors[c1],
+          c1g = colors[c1 + 1],
+          c1b = colors[c1 + 2];
+    const c2r = colors[c2],
+          c2g = colors[c2 + 1],
+          c2b = colors[c2 + 2];
+    const c3r = colors[c3],
+          c3g = colors[c3 + 1],
+          c3b = colors[c3 + 2];
+    const minY = Math.round(y1),
+          maxY = Math.round(y3);
+    let xa, car, cag, cab;
+    let xb, cbr, cbg, cbb;
+
+    for (let y = minY; y <= maxY; y++) {
       if (y < y2) {
         let k;
 
@@ -6881,11 +7031,11 @@ var createMeshCanvas = function createMeshCanvasClosure() {
       cbr = c1r - (c1r - c3r) * k;
       cbg = c1g - (c1g - c3g) * k;
       cbb = c1b - (c1b - c3b) * k;
-      var x1_ = Math.round(Math.min(xa, xb));
-      var x2_ = Math.round(Math.max(xa, xb));
-      var j = rowSize * y + x1_ * 4;
+      const x1_ = Math.round(Math.min(xa, xb));
+      const x2_ = Math.round(Math.max(xa, xb));
+      let j = rowSize * y + x1_ * 4;
 
-      for (var x = x1_; x <= x2_; x++) {
+      for (let x = x1_; x <= x2_; x++) {
         k = (xa - x) / (xa - xb);
 
         if (k < 0) {
@@ -6903,20 +7053,20 @@ var createMeshCanvas = function createMeshCanvasClosure() {
   }
 
   function drawFigure(data, figure, context) {
-    var ps = figure.coords;
-    var cs = figure.colors;
-    var i, ii;
+    const ps = figure.coords;
+    const cs = figure.colors;
+    let i, ii;
 
     switch (figure.type) {
       case "lattice":
-        var verticesPerRow = figure.verticesPerRow;
-        var rows = Math.floor(ps.length / verticesPerRow) - 1;
-        var cols = verticesPerRow - 1;
+        const verticesPerRow = figure.verticesPerRow;
+        const rows = Math.floor(ps.length / verticesPerRow) - 1;
+        const cols = verticesPerRow - 1;
 
         for (i = 0; i < rows; i++) {
-          var q = i * verticesPerRow;
+          let q = i * verticesPerRow;
 
-          for (var j = 0; j < cols; j++, q++) {
+          for (let j = 0; j < cols; j++, q++) {
             drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + 
verticesPerRow]);
             drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q 
+ verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
           }
@@ -6937,18 +7087,18 @@ var createMeshCanvas = function createMeshCanvasClosure() {
   }
 
   function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, 
webGLContext) {
-    var EXPECTED_SCALE = 1.1;
-    var MAX_PATTERN_SIZE = 3000;
-    var BORDER_SIZE = 2;
-    var offsetX = Math.floor(bounds[0]);
-    var offsetY = Math.floor(bounds[1]);
-    var boundsWidth = Math.ceil(bounds[2]) - offsetX;
-    var boundsHeight = Math.ceil(bounds[3]) - offsetY;
-    var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), 
MAX_PATTERN_SIZE);
-    var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), 
MAX_PATTERN_SIZE);
-    var scaleX = boundsWidth / width;
-    var scaleY = boundsHeight / height;
-    var context = {
+    const EXPECTED_SCALE = 1.1;
+    const MAX_PATTERN_SIZE = 3000;
+    const BORDER_SIZE = 2;
+    const offsetX = Math.floor(bounds[0]);
+    const offsetY = Math.floor(bounds[1]);
+    const boundsWidth = Math.ceil(bounds[2]) - offsetX;
+    const boundsHeight = Math.ceil(bounds[3]) - offsetY;
+    const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), 
MAX_PATTERN_SIZE);
+    const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), 
MAX_PATTERN_SIZE);
+    const scaleX = boundsWidth / width;
+    const scaleY = boundsHeight / height;
+    const context = {
       coords,
       colors,
       offsetX: -offsetX,
@@ -6956,9 +7106,9 @@ var createMeshCanvas = function createMeshCanvasClosure() {
       scaleX: 1 / scaleX,
       scaleY: 1 / scaleY
     };
-    var paddedWidth = width + BORDER_SIZE * 2;
-    var paddedHeight = height + BORDER_SIZE * 2;
-    var canvas, tmpCanvas, i, ii;
+    const paddedWidth = width + BORDER_SIZE * 2;
+    const paddedHeight = height + BORDER_SIZE * 2;
+    let canvas, tmpCanvas, i, ii;
 
     if (webGLContext.isEnabled) {
       canvas = webGLContext.drawFigures({
@@ -6973,11 +7123,11 @@ var createMeshCanvas = function createMeshCanvasClosure() {
       canvas = tmpCanvas.canvas;
     } else {
       tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
-      var tmpCtx = tmpCanvas.context;
-      var data = tmpCtx.createImageData(width, height);
+      const tmpCtx = tmpCanvas.context;
+      const data = tmpCtx.createImageData(width, height);
 
       if (backgroundColor) {
-        var bytes = data.data;
+        const bytes = data.data;
 
         for (i = 0, ii = bytes.length; i < ii; i += 4) {
           bytes[i] = backgroundColor[0];
@@ -7009,18 +7159,17 @@ var createMeshCanvas = function createMeshCanvasClosure() {
 
 ShadingIRs.Mesh = {
   fromIR: function Mesh_fromIR(raw) {
-    var coords = raw[2];
-    var colors = raw[3];
-    var figures = raw[4];
-    var bounds = raw[5];
-    var matrix = raw[6];
-    var bbox = raw[7];
-    var background = raw[8];
+    const coords = raw[2];
+    const colors = raw[3];
+    const figures = raw[4];
+    const bounds = raw[5];
+    const matrix = raw[6];
+    const bbox = raw[7];
+    const background = raw[8];
     return {
-      type: "Pattern",
       getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
         applyBoundingBox(ctx, bbox);
-        var scale;
+        let scale;
 
         if (shadingFill) {
           scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
@@ -7028,13 +7177,13 @@ ShadingIRs.Mesh = {
           scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
 
           if (matrix) {
-            var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
+            const matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
 
             scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
           }
         }
 
-        var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? 
null : background, owner.cachedCanvases, owner.webGLContext);
+        const temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill 
? null : background, owner.cachedCanvases, owner.webGLContext);
 
         if (!shadingFill) {
           ctx.setTransform.apply(ctx, owner.baseTransform);
@@ -7054,7 +7203,6 @@ ShadingIRs.Mesh = {
 ShadingIRs.Dummy = {
   fromIR: function Dummy_fromIR() {
     return {
-      type: "Pattern",
       getPattern: function Dummy_fromIR_getPattern() {
         return "hotpink";
       }
@@ -7063,7 +7211,7 @@ ShadingIRs.Dummy = {
 };
 
 function getShadingPatternFromIR(raw) {
-  var shadingIR = ShadingIRs[raw[0]];
+  const shadingIR = ShadingIRs[raw[0]];
 
   if (!shadingIR) {
     throw new Error(`Unknown IR type: ${raw[0]}`);
@@ -7072,12 +7220,12 @@ function getShadingPatternFromIR(raw) {
   return shadingIR.fromIR(raw);
 }
 
-var TilingPattern = function TilingPatternClosure() {
-  var PaintType = {
+const TilingPattern = function TilingPatternClosure() {
+  const PaintType = {
     COLORED: 1,
     UNCOLORED: 2
   };
-  var MAX_PATTERN_SIZE = 3000;
+  const MAX_PATTERN_SIZE = 3000;
 
   function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
     this.operatorList = IR[2];
@@ -7090,36 +7238,35 @@ var TilingPattern = function TilingPatternClosure() {
     this.color = color;
     this.canvasGraphicsFactory = canvasGraphicsFactory;
     this.baseTransform = baseTransform;
-    this.type = "Pattern";
     this.ctx = ctx;
   }
 
   TilingPattern.prototype = {
     createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
-      var operatorList = this.operatorList;
-      var bbox = this.bbox;
-      var xstep = this.xstep;
-      var ystep = this.ystep;
-      var paintType = this.paintType;
-      var tilingType = this.tilingType;
-      var color = this.color;
-      var canvasGraphicsFactory = this.canvasGraphicsFactory;
+      const operatorList = this.operatorList;
+      const bbox = this.bbox;
+      const xstep = this.xstep;
+      const ystep = this.ystep;
+      const paintType = this.paintType;
+      const tilingType = this.tilingType;
+      const color = this.color;
+      const canvasGraphicsFactory = this.canvasGraphicsFactory;
       (0, _util.info)("TilingType: " + tilingType);
-      var x0 = bbox[0],
-          y0 = bbox[1],
-          x1 = bbox[2],
-          y1 = bbox[3];
+      const x0 = bbox[0],
+            y0 = bbox[1],
+            x1 = bbox[2],
+            y1 = bbox[3];
 
-      var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
+      const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
 
-      var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
+      const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
 
-      var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
-      var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
-      var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
-      var tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
-      var tmpCtx = tmpCanvas.context;
-      var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
+      const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
+      const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
+      const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
+      const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
+      const tmpCtx = tmpCanvas.context;
+      const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
       graphics.groupLevel = owner.groupLevel;
       this.setFillAndStrokeStyleToContext(graphics, paintType, color);
       graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
@@ -7132,8 +7279,8 @@ var TilingPattern = function TilingPatternClosure() {
     },
     getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {
       step = Math.abs(step);
-      var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
-      var size = Math.ceil(step * scale);
+      const maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
+      let size = Math.ceil(step * scale);
 
       if (size >= maxSize) {
         size = maxSize;
@@ -7148,8 +7295,8 @@ var TilingPattern = function TilingPatternClosure() {
     },
     clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
       if (Array.isArray(bbox) && bbox.length === 4) {
-        var bboxWidth = x1 - x0;
-        var bboxHeight = y1 - y0;
+        const bboxWidth = x1 - x0;
+        const bboxHeight = y1 - y0;
         graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
         graphics.clip();
         graphics.endPath();
@@ -7161,7 +7308,7 @@ var TilingPattern = function TilingPatternClosure() {
 
       switch (paintType) {
         case PaintType.COLORED:
-          var ctx = this.ctx;
+          const ctx = this.ctx;
           context.fillStyle = ctx.fillStyle;
           context.strokeStyle = ctx.strokeStyle;
           current.fillColor = ctx.fillStyle;
@@ -7169,7 +7316,7 @@ var TilingPattern = function TilingPatternClosure() {
           break;
 
         case PaintType.UNCOLORED:
-          var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
+          const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);
 
           context.fillStyle = cssColor;
           context.strokeStyle = cssColor;
@@ -7185,7 +7332,7 @@ var TilingPattern = function TilingPatternClosure() {
       ctx = this.ctx;
       ctx.setTransform.apply(ctx, this.baseTransform);
       ctx.transform.apply(ctx, this.matrix);
-      var temporaryPatternCanvas = this.createPatternCanvas(owner);
+      const temporaryPatternCanvas = this.createPatternCanvas(owner);
       return ctx.createPattern(temporaryPatternCanvas, "repeat");
     }
   };
@@ -7196,14 +7343,13 @@ exports.TilingPattern = TilingPattern;
 
 /***/ }),
 /* 12 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.GlobalWorkerOptions = void 0;
 const GlobalWorkerOptions = Object.create(null);
 exports.GlobalWorkerOptions = GlobalWorkerOptions;
@@ -7212,14 +7358,13 @@ GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? ""
 
 /***/ }),
 /* 13 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.MessageHandler = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -7713,14 +7858,13 @@ exports.MessageHandler = MessageHandler;
 
 /***/ }),
 /* 14 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.Metadata = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -7731,13 +7875,17 @@ class Metadata {
   constructor(data) {
     (0, _util.assert)(typeof data === "string", "Metadata: input is not a string");
     data = this._repair(data);
-    const parser = new _xml_parser.SimpleXMLParser();
+    const parser = new _xml_parser.SimpleXMLParser({
+      lowerCaseName: true
+    });
     const xmlDocument = parser.parseFromString(data);
     this._metadataMap = new Map();
 
     if (xmlDocument) {
       this._parse(xmlDocument);
     }
+
+    this._data = data;
   }
 
   _repair(data) {
@@ -7780,49 +7928,79 @@ class Metadata {
     });
   }
 
-  _parse(xmlDocument) {
-    let rdf = xmlDocument.documentElement;
-
-    if (rdf.nodeName.toLowerCase() !== "rdf:rdf") {
-      rdf = rdf.firstChild;
+  _getSequence(entry) {
+    const name = entry.nodeName;
 
-      while (rdf && rdf.nodeName.toLowerCase() !== "rdf:rdf") {
-        rdf = rdf.nextSibling;
-      }
+    if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") {
+      return null;
     }
 
-    const nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
+    return entry.childNodes.filter(node => node.nodeName === "rdf:li");
+  }
 
-    if (!rdf || nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
-      return;
+  _getCreators(entry) {
+    if (entry.nodeName !== "dc:creator") {
+      return false;
     }
 
-    const children = rdf.childNodes;
+    if (!entry.hasChildNodes()) {
+      return true;
+    }
+
+    const seqNode = entry.childNodes[0];
+    const authors = this._getSequence(seqNode) || [];
+
+    this._metadataMap.set(entry.nodeName, authors.map(node => node.textContent.trim()));
+
+    return true;
+  }
+
+  _parse(xmlDocument) {
+    let rdf = xmlDocument.documentElement;
+
+    if (rdf.nodeName !== "rdf:rdf") {
+      rdf = rdf.firstChild;
 
-    for (let i = 0, ii = children.length; i < ii; i++) {
-      const desc = children[i];
+      while (rdf && rdf.nodeName !== "rdf:rdf") {
+        rdf = rdf.nextSibling;
+      }
+    }
+
+    if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
+      return;
+    }
 
-      if (desc.nodeName.toLowerCase() !== "rdf:description") {
+    for (const desc of rdf.childNodes) {
+      if (desc.nodeName !== "rdf:description") {
         continue;
       }
 
-      for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {
-        if (desc.childNodes[j].nodeName.toLowerCase() !== "#text") {
-          const entry = desc.childNodes[j];
-          const name = entry.nodeName.toLowerCase();
+      for (const entry of desc.childNodes) {
+        const name = entry.nodeName;
 
-          this._metadataMap.set(name, entry.textContent.trim());
+        if (name === "#text") {
+          continue;
+        }
+
+        if (this._getCreators(entry)) {
+          continue;
         }
+
+        this._metadataMap.set(name, entry.textContent.trim());
       }
     }
   }
 
+  getRaw() {
+    return this._data;
+  }
+
   get(name) {
-    return this._metadataMap.has(name) ? this._metadataMap.get(name) : null;
+    return this._metadataMap.get(name) ?? null;
   }
 
   getAll() {
-    return Object.fromEntries(this._metadataMap);
+    return (0, _util.objectFromEntries)(this._metadataMap);
   }
 
   has(name) {
@@ -7835,15 +8013,17 @@ exports.Metadata = Metadata;
 
 /***/ }),
 /* 15 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.SimpleXMLParser = void 0;
+}));
+exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
 const XMLParserErrorCode = {
   NoError: 0,
   EndOfDocument: -1,
@@ -7877,9 +8057,9 @@ class XMLParserBase {
   _resolveEntities(s) {
     return s.replace(/&([^;]+);/g, (all, entity) => {
       if (entity.substring(0, 2) === "#x") {
-        return String.fromCharCode(parseInt(entity.substring(2), 16));
+        return String.fromCodePoint(parseInt(entity.substring(2), 16));
       } else if (entity.substring(0, 1) === "#") {
-        return String.fromCharCode(parseInt(entity.substring(1), 10));
+        return String.fromCodePoint(parseInt(entity.substring(1), 10));
       }
 
       switch (entity) {
@@ -8184,14 +8364,111 @@ class SimpleDOMNode {
     return this.childNodes && this.childNodes.length > 0;
   }
 
+  searchNode(paths, pos) {
+    if (pos >= paths.length) {
+      return this;
+    }
+
+    const component = paths[pos];
+    const stack = [];
+    let node = this;
+
+    while (true) {
+      if (component.name === node.nodeName) {
+        if (component.pos === 0) {
+          const res = node.searchNode(paths, pos + 1);
+
+          if (res !== null) {
+            return res;
+          }
+        } else if (stack.length === 0) {
+          return null;
+        } else {
+          const [parent] = stack.pop();
+          let siblingPos = 0;
+
+          for (const child of parent.childNodes) {
+            if (component.name === child.nodeName) {
+              if (siblingPos === component.pos) {
+                return child.searchNode(paths, pos + 1);
+              }
+
+              siblingPos++;
+            }
+          }
+
+          return node.searchNode(paths, pos + 1);
+        }
+      }
+
+      if (node.childNodes && node.childNodes.length !== 0) {
+        stack.push([node, 0]);
+        node = node.childNodes[0];
+      } else if (stack.length === 0) {
+        return null;
+      } else {
+        while (stack.length !== 0) {
+          const [parent, currentPos] = stack.pop();
+          const newPos = currentPos + 1;
+
+          if (newPos < parent.childNodes.length) {
+            stack.push([parent, newPos]);
+            node = parent.childNodes[newPos];
+            break;
+          }
+        }
+
+        if (stack.length === 0) {
+          return null;
+        }
+      }
+    }
+  }
+
+  dump(buffer) {
+    if (this.nodeName === "#text") {
+      buffer.push((0, _util.encodeToXmlString)(this.nodeValue));
+      return;
+    }
+
+    buffer.push(`<${this.nodeName}`);
+
+    if (this.attributes) {
+      for (const attribute of this.attributes) {
+        buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`);
+      }
+    }
+
+    if (this.hasChildNodes()) {
+      buffer.push(">");
+
+      for (const child of this.childNodes) {
+        child.dump(buffer);
+      }
+
+      buffer.push(`</${this.nodeName}>`);
+    } else if (this.nodeValue) {
+      buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);
+    } else {
+      buffer.push("/>");
+    }
+  }
+
 }
 
+exports.SimpleDOMNode = SimpleDOMNode;
+
 class SimpleXMLParser extends XMLParserBase {
-  constructor() {
+  constructor({
+    hasAttributes = false,
+    lowerCaseName = false
+  }) {
     super();
     this._currentFragment = null;
     this._stack = null;
     this._errorCode = XMLParserErrorCode.NoError;
+    this._hasAttributes = hasAttributes;
+    this._lowerCaseName = lowerCaseName;
   }
 
   parseFromString(data) {
@@ -8241,9 +8518,17 @@ class SimpleXMLParser extends XMLParserBase {
   }
 
   onBeginElement(name, attributes, isEmpty) {
+    if (this._lowerCaseName) {
+      name = name.toLowerCase();
+    }
+
     const node = new SimpleDOMNode(name);
     node.childNodes = [];
 
+    if (this._hasAttributes) {
+      node.attributes = attributes;
+    }
+
     this._currentFragment.push(node);
 
     if (isEmpty) {
@@ -8278,14 +8563,13 @@ exports.SimpleXMLParser = SimpleXMLParser;
 
 /***/ }),
 /* 16 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.OptionalContentConfig = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -8434,7 +8718,7 @@ class OptionalContentConfig {
       return null;
     }
 
-    return Object.fromEntries(this._groups);
+    return (0, _util.objectFromEntries)(this._groups);
   }
 
   getGroup(id) {
@@ -8447,14 +8731,13 @@ exports.OptionalContentConfig = OptionalContentConfig;
 
 /***/ }),
 /* 17 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFDataTransportStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -8466,7 +8749,7 @@ class PDFDataTransportStream {
     this._progressiveDone = params.progressiveDone || false;
     const initialData = params.initialData;
 
-    if (initialData && initialData.length > 0) {
+    if (initialData?.length > 0) {
       const buffer = new Uint8Array(initialData).buffer;
 
       this._queuedChunks.push(buffer);
@@ -8531,14 +8814,14 @@ class PDFDataTransportStream {
   }
 
   get _progressiveDataLength() {
-    return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
+    return this._fullRequestReader?._loaded ?? 0;
   }
 
   _onProgress(evt) {
     if (evt.total === undefined) {
       const firstReader = this._rangeReaders[0];
 
-      if (firstReader && firstReader.onProgress) {
+      if (firstReader?.onProgress) {
         firstReader.onProgress({
           loaded: evt.loaded
         });
@@ -8546,7 +8829,7 @@ class PDFDataTransportStream {
     } else {
       const fullReader = this._fullRequestReader;
 
-      if (fullReader && fullReader.onProgress) {
+      if (fullReader?.onProgress) {
         fullReader.onProgress({
           loaded: evt.loaded,
           total: evt.total
@@ -8802,14 +9085,13 @@ class PDFDataTransportStreamRangeReader {
 
 /***/ }),
 /* 18 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.WebGLContext = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -8857,15 +9139,15 @@ class WebGLContext {
 
 exports.WebGLContext = WebGLContext;
 
-var WebGLUtils = function WebGLUtilsClosure() {
+const WebGLUtils = function WebGLUtilsClosure() {
   function loadShader(gl, code, shaderType) {
-    var shader = gl.createShader(shaderType);
+    const shader = gl.createShader(shaderType);
     gl.shaderSource(shader, code);
     gl.compileShader(shader);
-    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
+    const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
 
     if (!compiled) {
-      var errorMsg = gl.getShaderInfoLog(shader);
+      const errorMsg = gl.getShaderInfoLog(shader);
       throw new Error("Error during shader compilation: " + errorMsg);
     }
 
@@ -8881,17 +9163,17 @@ var WebGLUtils = function WebGLUtilsClosure() {
   }
 
   function createProgram(gl, shaders) {
-    var program = gl.createProgram();
+    const program = gl.createProgram();
 
-    for (var i = 0, ii = shaders.length; i < ii; ++i) {
+    for (let i = 0, ii = shaders.length; i < ii; ++i) {
       gl.attachShader(program, shaders[i]);
     }
 
     gl.linkProgram(program);
-    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
+    const linked = gl.getProgramParameter(program, gl.LINK_STATUS);
 
     if (!linked) {
-      var errorMsg = gl.getProgramInfoLog(program);
+      const errorMsg = gl.getProgramInfoLog(program);
       throw new Error("Error during program linking: " + errorMsg);
     }
 
@@ -8900,7 +9182,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
 
   function createTexture(gl, image, textureId) {
     gl.activeTexture(textureId);
-    var texture = gl.createTexture();
+    const texture = gl.createTexture();
     gl.bindTexture(gl.TEXTURE_2D, texture);
     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
@@ -8910,7 +9192,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
     return texture;
   }
 
-  var currentGL, currentCanvas;
+  let currentGL, currentCanvas;
 
   function generateGL() {
     if (currentGL) {
@@ -8923,7 +9205,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
     });
   }
 
-  var smaskVertexShaderCode = "\
+  const smaskVertexShaderCode = "\
   attribute vec2 a_position;                                    \
   attribute vec2 a_texCoord;                                    \
                                                                 \
@@ -8937,7 +9219,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
                                                                 \
     v_texCoord = a_texCoord;                                    \
   }                                                             ";
-  var smaskFragmentShaderCode = "\
+  const smaskFragmentShaderCode = "\
   precision mediump float;                                      \
                                                                 \
   uniform vec4 u_backdrop;                                      \
@@ -8965,30 +9247,29 @@ var WebGLUtils = function WebGLUtilsClosure() {
     imageColor.rgb *= imageColor.a;                             \
     gl_FragColor = imageColor;                                  \
   }                                                             ";
-  var smaskCache = null;
+  let smaskCache = null;
 
   function initSmaskGL() {
-    var canvas, gl;
     generateGL();
-    canvas = currentCanvas;
+    const canvas = currentCanvas;
     currentCanvas = null;
-    gl = currentGL;
+    const gl = currentGL;
     currentGL = null;
-    var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
-    var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
-    var program = createProgram(gl, [vertexShader, fragmentShader]);
+    const vertexShader = createVertexShader(gl, smaskVertexShaderCode);
+    const fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
+    const program = createProgram(gl, [vertexShader, fragmentShader]);
     gl.useProgram(program);
-    var cache = {};
+    const cache = {};
     cache.gl = gl;
     cache.canvas = canvas;
     cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution");
     cache.positionLocation = gl.getAttribLocation(program, "a_position");
     cache.backdropLocation = gl.getUniformLocation(program, "u_backdrop");
     cache.subtypeLocation = gl.getUniformLocation(program, "u_subtype");
-    var texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
-    var texLayerLocation = gl.getUniformLocation(program, "u_image");
-    var texMaskLocation = gl.getUniformLocation(program, "u_mask");
-    var texCoordBuffer = gl.createBuffer();
+    const texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
+    const texLayerLocation = gl.getUniformLocation(program, "u_image");
+    const texMaskLocation = gl.getUniformLocation(program, "u_mask");
+    const texCoordBuffer = gl.createBuffer();
     gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
     gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 
1.0]), gl.STATIC_DRAW);
     gl.enableVertexAttribArray(texCoordLocation);
@@ -8999,16 +9280,16 @@ var WebGLUtils = function WebGLUtilsClosure() {
   }
 
   function composeSMask(layer, mask, properties) {
-    var width = layer.width,
-        height = layer.height;
+    const width = layer.width,
+          height = layer.height;
 
     if (!smaskCache) {
       initSmaskGL();
     }
 
-    var cache = smaskCache,
-        canvas = cache.canvas,
-        gl = cache.gl;
+    const cache = smaskCache,
+          canvas = cache.canvas,
+          gl = cache.gl;
     canvas.width = width;
     canvas.height = height;
     gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
@@ -9021,9 +9302,9 @@ var WebGLUtils = function WebGLUtilsClosure() {
     }
 
     gl.uniform1i(cache.subtypeLocation, properties.subtype === "Luminosity" ? 1 : 0);
-    var texture = createTexture(gl, layer, gl.TEXTURE0);
-    var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
-    var buffer = gl.createBuffer();
+    const texture = createTexture(gl, layer, gl.TEXTURE0);
+    const maskTexture = createTexture(gl, mask, gl.TEXTURE1);
+    const buffer = gl.createBuffer();
     gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
     gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, 
height]), gl.STATIC_DRAW);
     gl.enableVertexAttribArray(cache.positionLocation);
@@ -9040,7 +9321,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
     return canvas;
   }
 
-  var figuresVertexShaderCode = "\
+  const figuresVertexShaderCode = "\
   attribute vec2 a_position;                                    \
   attribute vec3 a_color;                                       \
                                                                 \
@@ -9057,7 +9338,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
                                                                 \
     v_color = vec4(a_color / 255.0, 1.0);                       \
   }                                                             ";
-  var figuresFragmentShaderCode = "\
+  const figuresFragmentShaderCode = "\
   precision mediump float;                                      \
                                                                 \
   varying vec4 v_color;                                         \
@@ -9065,20 +9346,19 @@ var WebGLUtils = function WebGLUtilsClosure() {
   void main() {                                                 \
     gl_FragColor = v_color;                                     \
   }                                                             ";
-  var figuresCache = null;
+  let figuresCache = null;
 
   function initFiguresGL() {
-    var canvas, gl;
     generateGL();
-    canvas = currentCanvas;
+    const canvas = currentCanvas;
     currentCanvas = null;
-    gl = currentGL;
+    const gl = currentGL;
     currentGL = null;
-    var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
-    var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
-    var program = createProgram(gl, [vertexShader, fragmentShader]);
+    const vertexShader = createVertexShader(gl, figuresVertexShaderCode);
+    const fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
+    const program = createProgram(gl, [vertexShader, fragmentShader]);
     gl.useProgram(program);
-    var cache = {};
+    const cache = {};
     cache.gl = gl;
     cache.canvas = canvas;
     cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution");
@@ -9094,20 +9374,19 @@ var WebGLUtils = function WebGLUtilsClosure() {
       initFiguresGL();
     }
 
-    var cache = figuresCache,
-        canvas = cache.canvas,
-        gl = cache.gl;
+    const cache = figuresCache,
+          canvas = cache.canvas,
+          gl = cache.gl;
     canvas.width = width;
     canvas.height = height;
     gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
     gl.uniform2f(cache.resolutionLocation, width, height);
-    var count = 0;
-    var i, ii, rows;
+    let count = 0;
 
-    for (i = 0, ii = figures.length; i < ii; i++) {
+    for (let i = 0, ii = figures.length; i < ii; i++) {
       switch (figures[i].type) {
         case "lattice":
-          rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
+          const rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
           count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
           break;
 
@@ -9117,27 +9396,27 @@ var WebGLUtils = function WebGLUtilsClosure() {
       }
     }
 
-    var coords = new Float32Array(count * 2);
-    var colors = new Uint8Array(count * 3);
-    var coordsMap = context.coords,
-        colorsMap = context.colors;
-    var pIndex = 0,
+    const coords = new Float32Array(count * 2);
+    const colors = new Uint8Array(count * 3);
+    const coordsMap = context.coords,
+          colorsMap = context.colors;
+    let pIndex = 0,
         cIndex = 0;
 
-    for (i = 0, ii = figures.length; i < ii; i++) {
-      var figure = figures[i],
-          ps = figure.coords,
-          cs = figure.colors;
+    for (let i = 0, ii = figures.length; i < ii; i++) {
+      const figure = figures[i],
+            ps = figure.coords,
+            cs = figure.colors;
 
       switch (figure.type) {
         case "lattice":
-          var cols = figure.verticesPerRow;
-          rows = ps.length / cols | 0;
+          const cols = figure.verticesPerRow;
+          const rows = ps.length / cols | 0;
 
-          for (var row = 1; row < rows; row++) {
-            var offset = row * cols + 1;
+          for (let row = 1; row < rows; row++) {
+            let offset = row * cols + 1;
 
-            for (var col = 1; col < cols; col++, offset++) {
+            for (let col = 1; col < cols; col++, offset++) {
               coords[pIndex] = coordsMap[ps[offset - cols - 1]];
               coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
               coords[pIndex + 2] = coordsMap[ps[offset - cols]];
@@ -9176,7 +9455,7 @@ var WebGLUtils = function WebGLUtilsClosure() {
           break;
 
         case "triangles":
-          for (var j = 0, jj = ps.length; j < jj; j++) {
+          for (let j = 0, jj = ps.length; j < jj; j++) {
             coords[pIndex] = coordsMap[ps[j]];
             coords[pIndex + 1] = coordsMap[ps[j] + 1];
             colors[cIndex] = colorsMap[cs[j]];
@@ -9197,12 +9476,12 @@ var WebGLUtils = function WebGLUtilsClosure() {
     }
 
     gl.clear(gl.COLOR_BUFFER_BIT);
-    var coordsBuffer = gl.createBuffer();
+    const coordsBuffer = gl.createBuffer();
     gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
     gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
     gl.enableVertexAttribArray(cache.positionLocation);
     gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
-    var colorsBuffer = gl.createBuffer();
+    const colorsBuffer = gl.createBuffer();
     gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
     gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
     gl.enableVertexAttribArray(cache.colorLocation);
@@ -9230,12 +9509,12 @@ var WebGLUtils = function WebGLUtilsClosure() {
     drawFigures,
 
     cleanup() {
-      if (smaskCache && smaskCache.canvas) {
+      if (smaskCache?.canvas) {
         smaskCache.canvas.width = 0;
         smaskCache.canvas.height = 0;
       }
 
-      if (figuresCache && figuresCache.canvas) {
+      if (figuresCache?.canvas) {
         figuresCache.canvas.width = 0;
         figuresCache.canvas.height = 0;
       }
@@ -9249,14 +9528,13 @@ var WebGLUtils = function WebGLUtilsClosure() {
 
 /***/ }),
 /* 19 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.AnnotationLayer = void 0;
 
 var _display_utils = __w_pdfjs_require__(1);
@@ -9265,6 +9543,8 @@ var _util = __w_pdfjs_require__(2);
 
 var _annotation_storage = __w_pdfjs_require__(8);
 
+var _scripting_utils = __w_pdfjs_require__(20);
+
 class AnnotationElementFactory {
   static create(parameters) {
     const subtype = parameters.data.annotationType;
@@ -9351,7 +9631,11 @@ class AnnotationElementFactory {
 }
 
 class AnnotationElement {
-  constructor(parameters, isRenderable = false, ignoreBorder = false) {
+  constructor(parameters, {
+    isRenderable = false,
+    ignoreBorder = false,
+    createQuadrilaterals = false
+  } = {}) {
     this.isRenderable = isRenderable;
     this.data = parameters.data;
     this.layer = parameters.layer;
@@ -9363,10 +9647,17 @@ class AnnotationElement {
     this.renderInteractiveForms = parameters.renderInteractiveForms;
     this.svgFactory = parameters.svgFactory;
     this.annotationStorage = parameters.annotationStorage;
+    this.enableScripting = parameters.enableScripting;
+    this.hasJSActions = parameters.hasJSActions;
+    this._mouseState = parameters.mouseState;
 
     if (isRenderable) {
       this.container = this._createContainer(ignoreBorder);
     }
+
+    if (createQuadrilaterals) {
+      this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);
+    }
   }
 
   _createContainer(ignoreBorder = false) {
@@ -9381,7 +9672,7 @@ class AnnotationElement {
     const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], 
data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
 
     container.style.transform = `matrix(${viewport.transform.join(",")})`;
-    container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`;
+    container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;
 
     if (!ignoreBorder && data.borderStyle.width > 0) {
       container.style.borderWidth = `${data.borderStyle.width}px`;
@@ -9425,7 +9716,7 @@ class AnnotationElement {
       }
 
       if (data.color) {
-        container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, 
data.color[2] | 0);
+        container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, 
data.color[2] | 0);
       } else {
         container.style.borderWidth = 0;
       }
@@ -9438,7 +9729,31 @@ class AnnotationElement {
     return container;
   }
 
-  _createPopup(container, trigger, data) {
+  _createQuadrilaterals(ignoreBorder = false) {
+    if (!this.data.quadPoints) {
+      return null;
+    }
+
+    const quadrilaterals = [];
+    const savedRect = this.data.rect;
+
+    for (const quadPoint of this.data.quadPoints) {
+      this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];
+      quadrilaterals.push(this._createContainer(ignoreBorder));
+    }
+
+    this.data.rect = savedRect;
+    return quadrilaterals;
+  }
+
+  _createPopup(trigger, data) {
+    let container = this.container;
+
+    if (this.quadrilaterals) {
+      trigger = trigger || this.quadrilaterals;
+      container = this.quadrilaterals[0];
+    }
+
     if (!trigger) {
       trigger = document.createElement("div");
       trigger.style.height = container.style.height;
@@ -9460,6 +9775,13 @@ class AnnotationElement {
     container.appendChild(popup);
   }
 
+  _renderQuadrilaterals(className) {
+    this.quadrilaterals.forEach(quadrilateral => {
+      quadrilateral.className = className;
+    });
+    return this.quadrilaterals;
+  }
+
   render() {
     (0, _util.unreachable)("Abstract method `AnnotationElement.render` called");
   }
@@ -9468,12 +9790,14 @@ class AnnotationElement {
 
 class LinkAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
-    super(parameters, isRenderable);
+    const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || 
parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || 
parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"]));
+    super(parameters, {
+      isRenderable,
+      createQuadrilaterals: true
+    });
   }
 
   render() {
-    this.container.className = "linkAnnotation";
     const {
       data,
       linkService
@@ -9489,10 +9813,23 @@ class LinkAnnotationElement extends AnnotationElement {
       });
     } else if (data.action) {
       this._bindNamedAction(link, data.action);
-    } else {
+    } else if (data.dest) {
       this._bindLink(link, data.dest);
+    } else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse 
Down"]) && this.enableScripting && this.hasJSActions) {
+      this._bindJSAction(link, data);
+    } else {
+      this._bindLink(link, "");
     }
 
+    if (this.quadrilaterals) {
+      return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => {
+        const linkElement = index === 0 ? link : link.cloneNode();
+        quadrilateral.appendChild(linkElement);
+        return quadrilateral;
+      });
+    }
+
+    this.container.className = "linkAnnotation";
     this.container.appendChild(link);
     return this.container;
   }
@@ -9502,13 +9839,13 @@ class LinkAnnotationElement extends AnnotationElement {
 
     link.onclick = () => {
       if (destination) {
-        this.linkService.navigateTo(destination);
+        this.linkService.goToDestination(destination);
       }
 
       return false;
     };
 
-    if (destination) {
+    if (destination || destination === "") {
       link.className = "internalLink";
     }
   }
@@ -9524,12 +9861,40 @@ class LinkAnnotationElement extends AnnotationElement {
     link.className = "internalLink";
   }
 
+  _bindJSAction(link, data) {
+    link.href = this.linkService.getAnchorUrl("");
+    const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
+
+    for (const name of Object.keys(data.actions)) {
+      const jsName = map.get(name);
+
+      if (!jsName) {
+        continue;
+      }
+
+      link[jsName] = () => {
+        this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+          source: this,
+          detail: {
+            id: data.id,
+            name
+          }
+        });
+        return false;
+      };
+    }
+
+    link.className = "internalLink";
+  }
+
 }
 
 class TextAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable);
+    super(parameters, {
+      isRenderable
+    });
   }
 
   render() {
@@ -9545,7 +9910,7 @@ class TextAnnotationElement extends AnnotationElement {
     });
 
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, image, this.data);
+      this._createPopup(image, this.data);
     }
 
     this.container.appendChild(image);
@@ -9556,26 +9921,79 @@ class TextAnnotationElement extends AnnotationElement {
 
 class WidgetAnnotationElement extends AnnotationElement {
   render() {
+    if (this.data.alternativeText) {
+      this.container.title = this.data.alternativeText;
+    }
+
     return this.container;
   }
 
+  _getKeyModifier(event) {
+    return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && 
event.metaKey;
+  }
+
+  _setEventListener(element, baseName, eventName, valueGetter) {
+    if (baseName.includes("mouse")) {
+      element.addEventListener(baseName, event => {
+        this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+          source: this,
+          detail: {
+            id: this.data.id,
+            name: eventName,
+            value: valueGetter(event),
+            shift: event.shiftKey,
+            modifier: this._getKeyModifier(event)
+          }
+        });
+      });
+    } else {
+      element.addEventListener(baseName, event => {
+        this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+          source: this,
+          detail: {
+            id: this.data.id,
+            name: eventName,
+            value: event.target.checked
+          }
+        });
+      });
+    }
+  }
+
+  _setEventListeners(element, names, getter) {
+    for (const [baseName, eventName] of names) {
+      if (eventName === "Action" || this.data.actions?.[eventName]) {
+        this._setEventListener(element, baseName, eventName, getter);
+      }
+    }
+  }
+
 }
 
 class TextWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
     const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && 
!!parameters.data.fieldValue;
-    super(parameters, isRenderable);
+    super(parameters, {
+      isRenderable
+    });
   }
 
   render() {
-    const TEXT_ALIGNMENT = ["left", "center", "right"];
     const storage = this.annotationStorage;
     const id = this.data.id;
     this.container.className = "textWidgetAnnotation";
     let element = null;
 
     if (this.renderInteractiveForms) {
-      const textContent = storage.getOrCreateValue(id, this.data.fieldValue);
+      const textContent = storage.getOrCreateValue(id, {
+        value: this.data.fieldValue
+      }).value;
+      const elementData = {
+        userValue: null,
+        formattedValue: null,
+        beforeInputSelectionRange: null,
+        beforeInputValue: null
+      };
 
       if (this.data.multiLine) {
         element = document.createElement("textarea");
@@ -9586,9 +10004,192 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
         element.setAttribute("value", textContent);
       }
 
+      elementData.userValue = textContent;
+      element.setAttribute("id", id);
       element.addEventListener("input", function (event) {
-        storage.setValue(id, event.target.value);
+        storage.setValue(id, {
+          value: event.target.value
+        });
       });
+
+      let blurListener = event => {
+        if (elementData.formattedValue) {
+          event.target.value = elementData.formattedValue;
+        }
+
+        event.target.setSelectionRange(0, 0);
+        elementData.beforeInputSelectionRange = null;
+      };
+
+      if (this.enableScripting && this.hasJSActions) {
+        element.addEventListener("focus", event => {
+          if (elementData.userValue) {
+            event.target.value = elementData.userValue;
+          }
+        });
+        element.addEventListener("updatefromsandbox", function (event) {
+          const {
+            detail
+          } = event;
+          const actions = {
+            value() {
+              elementData.userValue = detail.value || "";
+              storage.setValue(id, {
+                value: elementData.userValue.toString()
+              });
+
+              if (!elementData.formattedValue) {
+                event.target.value = elementData.userValue;
+              }
+            },
+
+            valueAsString() {
+              elementData.formattedValue = detail.valueAsString || "";
+
+              if (event.target !== document.activeElement) {
+                event.target.value = elementData.formattedValue;
+              }
+
+              storage.setValue(id, {
+                formattedValue: elementData.formattedValue
+              });
+            },
+
+            focus() {
+              setTimeout(() => event.target.focus({
+                preventScroll: false
+              }), 0);
+            },
+
+            userName() {
+              event.target.title = detail.userName;
+            },
+
+            hidden() {
+              event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+              storage.setValue(id, {
+                hidden: detail.hidden
+              });
+            },
+
+            editable() {
+              event.target.disabled = !detail.editable;
+            },
+
+            selRange() {
+              const [selStart, selEnd] = detail.selRange;
+
+              if (selStart >= 0 && selEnd < event.target.value.length) {
+                event.target.setSelectionRange(selStart, selEnd);
+              }
+            },
+
+            strokeColor() {
+              const color = detail.strokeColor;
+              event.target.style.color = 
_scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
+            }
+
+          };
+          Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+        });
+
+        if (this.data.actions) {
+          element.addEventListener("keydown", event => {
+            elementData.beforeInputValue = event.target.value;
+            let commitKey = -1;
+
+            if (event.key === "Escape") {
+              commitKey = 0;
+            } else if (event.key === "Enter") {
+              commitKey = 2;
+            } else if (event.key === "Tab") {
+              commitKey = 3;
+            }
+
+            if (commitKey === -1) {
+              return;
+            }
+
+            elementData.userValue = event.target.value;
+            this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+              source: this,
+              detail: {
+                id,
+                name: "Keystroke",
+                value: event.target.value,
+                willCommit: true,
+                commitKey,
+                selStart: event.target.selectionStart,
+                selEnd: event.target.selectionEnd
+              }
+            });
+          });
+          const _blurListener = blurListener;
+          blurListener = null;
+          element.addEventListener("blur", event => {
+            if (this._mouseState.isDown) {
+              elementData.userValue = event.target.value;
+              this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+                source: this,
+                detail: {
+                  id,
+                  name: "Keystroke",
+                  value: event.target.value,
+                  willCommit: true,
+                  commitKey: 1,
+                  selStart: event.target.selectionStart,
+                  selEnd: event.target.selectionEnd
+                }
+              });
+            }
+
+            _blurListener(event);
+          });
+          element.addEventListener("mousedown", event => {
+            elementData.beforeInputValue = event.target.value;
+            elementData.beforeInputSelectionRange = null;
+          });
+          element.addEventListener("keyup", event => {
+            if (event.target.selectionStart === event.target.selectionEnd) {
+              elementData.beforeInputSelectionRange = null;
+            }
+          });
+          element.addEventListener("select", event => {
+            elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];
+          });
+
+          if ("Keystroke" in this.data.actions) {
+            element.addEventListener("input", event => {
+              let selStart = -1;
+              let selEnd = -1;
+
+              if (elementData.beforeInputSelectionRange) {
+                [selStart, selEnd] = elementData.beforeInputSelectionRange;
+              }
+
+              this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+                source: this,
+                detail: {
+                  id,
+                  name: "Keystroke",
+                  value: elementData.beforeInputValue,
+                  change: event.data,
+                  willCommit: false,
+                  selStart,
+                  selEnd
+                }
+              });
+            });
+          }
+
+          this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse 
Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => 
event.target.value);
+        }
+      }
+
+      if (blurListener) {
+        element.addEventListener("blur", blurListener);
+      }
+
       element.disabled = this.data.readOnly;
       element.name = this.data.fieldName;
 
@@ -9607,59 +10208,49 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
       element.textContent = this.data.fieldValue;
       element.style.verticalAlign = "middle";
       element.style.display = "table-cell";
-      let font = null;
-
-      if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {
-        font = this.page.commonObjs.get(this.data.fontRefName);
-      }
-
-      this._setTextStyle(element, font);
     }
 
-    if (this.data.textAlignment !== null) {
-      element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
-    }
+    this._setTextStyle(element);
 
     this.container.appendChild(element);
     return this.container;
   }
 
-  _setTextStyle(element, font) {
+  _setTextStyle(element) {
+    const TEXT_ALIGNMENT = ["left", "center", "right"];
+    const {
+      fontSize,
+      fontColor
+    } = this.data.defaultAppearanceData;
     const style = element.style;
-    style.fontSize = `${this.data.fontSize}px`;
-    style.direction = this.data.fontDirection < 0 ? "rtl" : "ltr";
 
-    if (!font) {
-      return;
+    if (fontSize) {
+      style.fontSize = `${fontSize}px`;
     }
 
-    let bold = "normal";
+    style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);
 
-    if (font.black) {
-      bold = "900";
-    } else if (font.bold) {
-      bold = "bold";
+    if (this.data.textAlignment !== null) {
+      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
     }
-
-    style.fontWeight = bold;
-    style.fontStyle = font.italic ? "italic" : "normal";
-    const fontFamily = font.loadedName ? `"${font.loadedName}", ` : "";
-    const fallbackName = font.fallbackName || "Helvetica, sans-serif";
-    style.fontFamily = fontFamily + fallbackName;
   }
 
 }
 
 class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
-    super(parameters, parameters.renderInteractiveForms);
+    super(parameters, {
+      isRenderable: parameters.renderInteractiveForms
+    });
   }
 
   render() {
     const storage = this.annotationStorage;
     const data = this.data;
     const id = data.id;
-    const value = storage.getOrCreateValue(id, data.fieldValue && data.fieldValue !== "Off");
+    const value = storage.getOrCreateValue(id, {
+      value: data.fieldValue && data.fieldValue !== "Off"
+    }).value;
     this.container.className = "buttonWidgetAnnotation checkBox";
     const element = document.createElement("input");
     element.disabled = data.readOnly;
@@ -9670,9 +10261,61 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
       element.setAttribute("checked", true);
     }
 
+    element.setAttribute("id", id);
     element.addEventListener("change", function (event) {
-      storage.setValue(id, event.target.checked);
+      const name = event.target.name;
+
+      for (const checkbox of document.getElementsByName(name)) {
+        if (checkbox !== event.target) {
+          checkbox.checked = false;
+          storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), {
+            value: false
+          });
+        }
+      }
+
+      storage.setValue(id, {
+        value: event.target.checked
+      });
     });
+
+    if (this.enableScripting && this.hasJSActions) {
+      element.addEventListener("updatefromsandbox", event => {
+        const {
+          detail
+        } = event;
+        const actions = {
+          value() {
+            event.target.checked = detail.value !== "Off";
+            storage.setValue(id, {
+              value: event.target.checked
+            });
+          },
+
+          focus() {
+            setTimeout(() => event.target.focus({
+              preventScroll: false
+            }), 0);
+          },
+
+          hidden() {
+            event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+            storage.setValue(id, {
+              hidden: detail.hidden
+            });
+          },
+
+          editable() {
+            event.target.disabled = !detail.editable;
+          }
+
+        };
+        Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+      });
+
+      this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], 
["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], 
["mouseup", "Mouse Up"]], event => event.target.checked);
+    }
+
     this.container.appendChild(element);
     return this.container;
   }
@@ -9681,7 +10324,9 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
 
 class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
-    super(parameters, parameters.renderInteractiveForms);
+    super(parameters, {
+      isRenderable: parameters.renderInteractiveForms
+    });
   }
 
   render() {
@@ -9689,7 +10334,9 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
     const storage = this.annotationStorage;
     const data = this.data;
     const id = data.id;
-    const value = storage.getOrCreateValue(id, data.fieldValue === data.buttonValue);
+    const value = storage.getOrCreateValue(id, {
+      value: data.fieldValue === data.buttonValue
+    }).value;
     const element = document.createElement("input");
     element.disabled = data.readOnly;
     element.type = "radio";
@@ -9699,17 +10346,75 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
       element.setAttribute("checked", true);
     }
 
+    element.setAttribute("pdfButtonValue", data.buttonValue);
+    element.setAttribute("id", id);
     element.addEventListener("change", function (event) {
-      const name = event.target.name;
+      const {
+        target
+      } = event;
 
-      for (const radio of document.getElementsByName(name)) {
-        if (radio !== event.target) {
-          storage.setValue(radio.parentNode.getAttribute("data-annotation-id"), false);
+      for (const radio of document.getElementsByName(target.name)) {
+        if (radio !== target) {
+          storage.setValue(radio.getAttribute("id"), {
+            value: false
+          });
         }
       }
 
-      storage.setValue(id, event.target.checked);
+      storage.setValue(id, {
+        value: target.checked
+      });
     });
+
+    if (this.enableScripting && this.hasJSActions) {
+      element.addEventListener("updatefromsandbox", event => {
+        const {
+          detail
+        } = event;
+        const actions = {
+          value() {
+            const fieldValue = detail.value;
+
+            for (const radio of document.getElementsByName(event.target.name)) {
+              const radioId = radio.getAttribute("id");
+
+              if (fieldValue === radio.getAttribute("pdfButtonValue")) {
+                radio.setAttribute("checked", true);
+                storage.setValue(radioId, {
+                  value: true
+                });
+              } else {
+                storage.setValue(radioId, {
+                  value: false
+                });
+              }
+            }
+          },
+
+          focus() {
+            setTimeout(() => event.target.focus({
+              preventScroll: false
+            }), 0);
+          },
+
+          hidden() {
+            event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+            storage.setValue(id, {
+              hidden: detail.hidden
+            });
+          },
+
+          editable() {
+            event.target.disabled = !detail.editable;
+          }
+
+        };
+        Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+      });
+
+      this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], 
["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], 
["mouseup", "Mouse Up"]], event => event.target.checked);
+    }
+
     this.container.appendChild(element);
     return this.container;
   }
@@ -9720,6 +10425,11 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
   render() {
     const container = super.render();
     container.className = "buttonWidgetAnnotation pushButton";
+
+    if (this.data.alternativeText) {
+      container.title = this.data.alternativeText;
+    }
+
     return container;
   }
 
@@ -9727,17 +10437,22 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
 
 class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
-    super(parameters, parameters.renderInteractiveForms);
+    super(parameters, {
+      isRenderable: parameters.renderInteractiveForms
+    });
   }
 
   render() {
     this.container.className = "choiceWidgetAnnotation";
     const storage = this.annotationStorage;
     const id = this.data.id;
-    storage.getOrCreateValue(id, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null);
+    storage.getOrCreateValue(id, {
+      value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
+    });
     const selectElement = document.createElement("select");
     selectElement.disabled = this.data.readOnly;
     selectElement.name = this.data.fieldName;
+    selectElement.setAttribute("id", id);
 
     if (!this.data.combo) {
       selectElement.size = this.data.options.length;
@@ -9759,11 +10474,77 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
       selectElement.appendChild(optionElement);
     }
 
-    selectElement.addEventListener("input", function (event) {
+    function getValue(event) {
       const options = event.target.options;
-      const value = options[options.selectedIndex].value;
-      storage.setValue(id, value);
-    });
+      return options[options.selectedIndex].value;
+    }
+
+    if (this.enableScripting && this.hasJSActions) {
+      selectElement.addEventListener("updatefromsandbox", event => {
+        const {
+          detail
+        } = event;
+        const actions = {
+          value() {
+            const options = event.target.options;
+            const value = detail.value;
+            const i = options.indexOf(value);
+
+            if (i !== -1) {
+              options.selectedIndex = i;
+              storage.setValue(id, {
+                value
+              });
+            }
+          },
+
+          focus() {
+            setTimeout(() => event.target.focus({
+              preventScroll: false
+            }), 0);
+          },
+
+          hidden() {
+            event.target.style.visibility = detail.hidden ? "hidden" : "visible";
+            storage.setValue(id, {
+              hidden: detail.hidden
+            });
+          },
+
+          editable() {
+            event.target.disabled = !detail.editable;
+          }
+
+        };
+        Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
+      });
+      selectElement.addEventListener("input", event => {
+        const value = getValue(event);
+        storage.setValue(id, {
+          value
+        });
+        this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+          source: this,
+          detail: {
+            id,
+            name: "Keystroke",
+            changeEx: value,
+            willCommit: true,
+            commitKey: 1,
+            keyDown: false
+          }
+        });
+      });
+
+      this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse 
Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => 
event.target.checked);
+    } else {
+      selectElement.addEventListener("input", function (event) {
+        storage.setValue(id, {
+          value: getValue(event)
+        });
+      });
+    }
+
     this.container.appendChild(selectElement);
     return this.container;
   }
@@ -9773,7 +10554,9 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
 class PopupAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable);
+    super(parameters, {
+      isRenderable
+    });
   }
 
   render() {
@@ -9785,24 +10568,29 @@ class PopupAnnotationElement extends AnnotationElement {
     }
 
     const selector = `[data-annotation-id="${this.data.parentId}"]`;
-    const parentElement = this.layer.querySelector(selector);
+    const parentElements = this.layer.querySelectorAll(selector);
 
-    if (!parentElement) {
+    if (parentElements.length === 0) {
       return this.container;
     }
 
     const popup = new PopupElement({
       container: this.container,
-      trigger: parentElement,
+      trigger: Array.from(parentElements),
       color: this.data.color,
       title: this.data.title,
       modificationDate: this.data.modificationDate,
       contents: this.data.contents
     });
-    const parentLeft = parseFloat(parentElement.style.left);
-    const parentWidth = parseFloat(parentElement.style.width);
-    this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${parentElement.style.top}`;
-    this.container.style.left = `${parentLeft + parentWidth}px`;
+    const page = this.page;
+
+    const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + 
page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);
+
+    const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];
+    const popupTop = rect[1];
+    this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;
+    this.container.style.left = `${popupLeft}px`;
+    this.container.style.top = `${popupTop}px`;
     this.container.appendChild(popup.render());
     return this.container;
   }
@@ -9835,7 +10623,7 @@ class PopupElement {
       const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
       const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
       const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
-      popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
+      popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);
     }
 
     const title = document.createElement("h1");
@@ -9858,9 +10646,16 @@ class PopupElement {
     const contents = this._formatContents(this.contents);
 
     popup.appendChild(contents);
-    this.trigger.addEventListener("click", this._toggle.bind(this));
-    this.trigger.addEventListener("mouseover", this._show.bind(this, false));
-    this.trigger.addEventListener("mouseout", this._hide.bind(this, false));
+
+    if (!Array.isArray(this.trigger)) {
+      this.trigger = [this.trigger];
+    }
+
+    this.trigger.forEach(element => {
+      element.addEventListener("click", this._toggle.bind(this));
+      element.addEventListener("mouseover", this._show.bind(this, false));
+      element.addEventListener("mouseout", this._hide.bind(this, false));
+    });
     popup.addEventListener("click", this._hide.bind(this, true));
     wrapper.appendChild(popup);
     return wrapper;
@@ -9917,14 +10712,17 @@ class PopupElement {
 class FreeTextAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
   }
 
   render() {
     this.container.className = "freeTextAnnotation";
 
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
     }
 
     return this.container;
@@ -9935,7 +10733,10 @@ class FreeTextAnnotationElement extends AnnotationElement {
 class LineAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
   }
 
   render() {
@@ -9954,7 +10755,7 @@ class LineAnnotationElement extends AnnotationElement {
     svg.appendChild(line);
     this.container.append(svg);
 
-    this._createPopup(this.container, line, data);
+    this._createPopup(line, data);
 
     return this.container;
   }
@@ -9964,7 +10765,10 @@ class LineAnnotationElement extends AnnotationElement {
 class SquareAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
   }
 
   render() {
@@ -9985,7 +10789,7 @@ class SquareAnnotationElement extends AnnotationElement {
     svg.appendChild(square);
     this.container.append(svg);
 
-    this._createPopup(this.container, square, data);
+    this._createPopup(square, data);
 
     return this.container;
   }
@@ -9995,7 +10799,10 @@ class SquareAnnotationElement extends AnnotationElement {
 class CircleAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
   }
 
   render() {
@@ -10016,7 +10823,7 @@ class CircleAnnotationElement extends AnnotationElement {
     svg.appendChild(circle);
     this.container.append(svg);
 
-    this._createPopup(this.container, circle, data);
+    this._createPopup(circle, data);
 
     return this.container;
   }
@@ -10026,7 +10833,10 @@ class CircleAnnotationElement extends AnnotationElement {
 class PolylineAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
     this.containerClassName = "polylineAnnotation";
     this.svgElementName = "svg:polyline";
   }
@@ -10054,7 +10864,7 @@ class PolylineAnnotationElement extends AnnotationElement {
     svg.appendChild(polyline);
     this.container.append(svg);
 
-    this._createPopup(this.container, polyline, data);
+    this._createPopup(polyline, data);
 
     return this.container;
   }
@@ -10073,14 +10883,17 @@ class PolygonAnnotationElement extends PolylineAnnotationElement {
 class CaretAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
   }
 
   render() {
     this.container.className = "caretAnnotation";
 
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
     }
 
     return this.container;
@@ -10091,7 +10904,10 @@ class CaretAnnotationElement extends AnnotationElement {
 class InkAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
     this.containerClassName = "inkAnnotation";
     this.svgElementName = "svg:polyline";
   }
@@ -10119,7 +10935,7 @@ class InkAnnotationElement extends AnnotationElement {
       polyline.setAttribute("stroke", "transparent");
       polyline.setAttribute("fill", "none");
 
-      this._createPopup(this.container, polyline, data);
+      this._createPopup(polyline, data);
 
       svg.appendChild(polyline);
     }
@@ -10133,16 +10949,23 @@ class InkAnnotationElement extends AnnotationElement {
 class HighlightAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true,
+      createQuadrilaterals: true
+    });
   }
 
   render() {
-    this.container.className = "highlightAnnotation";
-
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
+    }
+
+    if (this.quadrilaterals) {
+      return this._renderQuadrilaterals("highlightAnnotation");
     }
 
+    this.container.className = "highlightAnnotation";
     return this.container;
   }
 
@@ -10151,16 +10974,23 @@ class HighlightAnnotationElement extends AnnotationElement {
 class UnderlineAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true,
+      createQuadrilaterals: true
+    });
   }
 
   render() {
-    this.container.className = "underlineAnnotation";
-
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
+    }
+
+    if (this.quadrilaterals) {
+      return this._renderQuadrilaterals("underlineAnnotation");
     }
 
+    this.container.className = "underlineAnnotation";
     return this.container;
   }
 
@@ -10169,16 +10999,23 @@ class UnderlineAnnotationElement extends AnnotationElement {
 class SquigglyAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true,
+      createQuadrilaterals: true
+    });
   }
 
   render() {
-    this.container.className = "squigglyAnnotation";
-
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
     }
 
+    if (this.quadrilaterals) {
+      return this._renderQuadrilaterals("squigglyAnnotation");
+    }
+
+    this.container.className = "squigglyAnnotation";
     return this.container;
   }
 
@@ -10187,16 +11024,23 @@ class SquigglyAnnotationElement extends AnnotationElement {
 class StrikeOutAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true,
+      createQuadrilaterals: true
+    });
   }
 
   render() {
-    this.container.className = "strikeoutAnnotation";
-
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
     }
 
+    if (this.quadrilaterals) {
+      return this._renderQuadrilaterals("strikeoutAnnotation");
+    }
+
+    this.container.className = "strikeoutAnnotation";
     return this.container;
   }
 
@@ -10205,14 +11049,17 @@ class StrikeOutAnnotationElement extends AnnotationElement {
 class StampAnnotationElement extends AnnotationElement {
   constructor(parameters) {
     const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
-    super(parameters, isRenderable, true);
+    super(parameters, {
+      isRenderable,
+      ignoreBorder: true
+    });
   }
 
   render() {
     this.container.className = "stampAnnotation";
 
     if (!this.data.hasPopup) {
-      this._createPopup(this.container, null, this.data);
+      this._createPopup(null, this.data);
     }
 
     return this.container;
@@ -10222,22 +11069,21 @@ class StampAnnotationElement extends AnnotationElement {
 
 class FileAttachmentAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    super(parameters, true);
+    super(parameters, {
+      isRenderable: true
+    });
     const {
       filename,
       content
     } = this.data.file;
     this.filename = (0, _display_utils.getFilenameFromUrl)(filename);
     this.content = content;
-
-    if (this.linkService.eventBus) {
-      this.linkService.eventBus.dispatch("fileattachmentannotation", {
-        source: this,
-        id: (0, _util.stringToPDFString)(filename),
-        filename,
-        content
-      });
-    }
+    this.linkService.eventBus?.dispatch("fileattachmentannotation", {
+      source: this,
+      id: (0, _util.stringToPDFString)(filename),
+      filename,
+      content
+    });
   }
 
   render() {
@@ -10248,7 +11094,7 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
     trigger.addEventListener("dblclick", this._download.bind(this));
 
     if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
-      this._createPopup(this.container, trigger, this.data);
+      this._createPopup(trigger, this.data);
     }
 
     this.container.appendChild(trigger);
@@ -10299,21 +11145,46 @@ class AnnotationLayer {
         imageResourcesPath: parameters.imageResourcesPath || "",
         renderInteractiveForms: typeof parameters.renderInteractiveForms === "boolean" ? 
parameters.renderInteractiveForms : true,
         svgFactory: new _display_utils.DOMSVGFactory(),
-        annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage()
+        annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),
+        enableScripting: parameters.enableScripting,
+        hasJSActions: parameters.hasJSActions,
+        mouseState: parameters.mouseState || {
+          isDown: false
+        }
       });
 
       if (element.isRenderable) {
-        parameters.div.appendChild(element.render());
+        const rendered = element.render();
+
+        if (data.hidden) {
+          rendered.style.visibility = "hidden";
+        }
+
+        if (Array.isArray(rendered)) {
+          for (const renderedElement of rendered) {
+            parameters.div.appendChild(renderedElement);
+          }
+        } else {
+          if (element instanceof PopupAnnotationElement) {
+            parameters.div.prepend(rendered);
+          } else {
+            parameters.div.appendChild(rendered);
+          }
+        }
       }
     }
   }
 
   static update(parameters) {
+    const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+
     for (const data of parameters.annotations) {
-      const element = parameters.div.querySelector(`[data-annotation-id="${data.id}"]`);
+      const elements = parameters.div.querySelectorAll(`[data-annotation-id="${data.id}"]`);
 
-      if (element) {
-        element.style.transform = `matrix(${parameters.viewport.transform.join(",")})`;
+      if (elements) {
+        elements.forEach(element => {
+          element.style.transform = transform;
+        });
       }
     }
 
@@ -10326,29 +11197,96 @@ exports.AnnotationLayer = AnnotationLayer;
 
 /***/ }),
 /* 20 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
+exports.ColorConverters = void 0;
+
+function makeColorComp(n) {
+  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
+}
+
+class ColorConverters {
+  static CMYK_G([c, y, m, k]) {
+    return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];
+  }
+
+  static G_CMYK([g]) {
+    return ["CMYK", 0, 0, 0, 1 - g];
+  }
+
+  static G_RGB([g]) {
+    return ["RGB", g, g, g];
+  }
+
+  static G_HTML([g]) {
+    const G = makeColorComp(g);
+    return `#${G}${G}${G}`;
+  }
+
+  static RGB_G([r, g, b]) {
+    return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
+  }
+
+  static RGB_HTML([r, g, b]) {
+    const R = makeColorComp(r);
+    const G = makeColorComp(g);
+    const B = makeColorComp(b);
+    return `#${R}${G}${B}`;
+  }
+
+  static T_HTML() {
+    return "#00000000";
+  }
+
+  static CMYK_RGB([c, y, m, k]) {
+    return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];
+  }
+
+  static CMYK_HTML(components) {
+    return this.RGB_HTML(this.CMYK_RGB(components));
+  }
+
+  static RGB_CMYK([r, g, b]) {
+    const c = 1 - r;
+    const m = 1 - g;
+    const y = 1 - b;
+    const k = Math.min(c, m, y);
+    return ["CMYK", c, m, y, k];
+  }
+
+}
+
+exports.ColorConverters = ColorConverters;
+
+/***/ }),
+/* 21 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
 exports.renderTextLayer = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var renderTextLayer = function renderTextLayerClosure() {
-  var MAX_TEXT_DIVS_TO_RENDER = 100000;
-  var NonWhitespaceRegexp = /\S/;
+const renderTextLayer = function renderTextLayerClosure() {
+  const MAX_TEXT_DIVS_TO_RENDER = 100000;
+  const NonWhitespaceRegexp = /\S/;
 
   function isAllWhitespace(str) {
     return !NonWhitespaceRegexp.test(str);
   }
 
   function appendText(task, geom, styles) {
-    var textDiv = document.createElement("span");
-    var textDivProperties = {
+    const textDiv = document.createElement("span");
+    const textDivProperties = {
       angle: 0,
       canvasWidth: 0,
       isWhitespace: false,
@@ -10370,17 +11308,17 @@ var renderTextLayer = function renderTextLayerClosure() {
       return;
     }
 
-    var tx = _util.Util.transform(task._viewport.transform, geom.transform);
+    const tx = _util.Util.transform(task._viewport.transform, geom.transform);
 
-    var angle = Math.atan2(tx[1], tx[0]);
-    var style = styles[geom.fontName];
+    let angle = Math.atan2(tx[1], tx[0]);
+    const style = styles[geom.fontName];
 
     if (style.vertical) {
       angle += Math.PI / 2;
     }
 
-    var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
-    var fontAscent = fontHeight;
+    const fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
+    let fontAscent = fontHeight;
 
     if (style.ascent) {
       fontAscent = style.ascent * fontAscent;
@@ -10440,7 +11378,7 @@ var renderTextLayer = function renderTextLayerClosure() {
     }
 
     if (task._enhanceTextSelection) {
-      var angleCos = 1,
+      let angleCos = 1,
           angleSin = 0;
 
       if (angle !== 0) {
@@ -10448,9 +11386,9 @@ var renderTextLayer = function renderTextLayerClosure() {
         angleSin = Math.sin(angle);
       }
 
-      var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
-      var divHeight = fontHeight;
-      var m, b;
+      const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
+      const divHeight = fontHeight;
+      let m, b;
 
       if (angle !== 0) {
         m = [angleCos, angleSin, -angleSin, angleCos, left, top];
@@ -10476,9 +11414,9 @@ var renderTextLayer = function renderTextLayerClosure() {
       return;
     }
 
-    var textDivs = task._textDivs;
-    var capability = task._capability;
-    var textDivsLength = textDivs.length;
+    const textDivs = task._textDivs;
+    const capability = task._capability;
+    const textDivsLength = textDivs.length;
 
     if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
       task._renderingDone = true;
@@ -10487,7 +11425,7 @@ var renderTextLayer = function renderTextLayerClosure() {
     }
 
     if (!task._textContentStream) {
-      for (var i = 0; i < textDivsLength; i++) {
+      for (let i = 0; i < textDivsLength; i++) {
         task._layoutText(textDivs[i]);
       }
     }
@@ -10511,14 +11449,14 @@ var renderTextLayer = function renderTextLayerClosure() {
   }
 
   function expand(task) {
-    var bounds = task._bounds;
-    var viewport = task._viewport;
-    var expanded = expandBounds(viewport.width, viewport.height, bounds);
+    const bounds = task._bounds;
+    const viewport = task._viewport;
+    const expanded = expandBounds(viewport.width, viewport.height, bounds);
 
-    for (var i = 0; i < expanded.length; i++) {
-      var div = bounds[i].div;
+    for (let i = 0; i < expanded.length; i++) {
+      const div = bounds[i].div;
 
-      var divProperties = task._textDivProperties.get(div);
+      const divProperties = task._textDivProperties.get(div);
 
       if (divProperties.angle === 0) {
         divProperties.paddingLeft = bounds[i].left - expanded[i].left;
@@ -10531,15 +11469,15 @@ var renderTextLayer = function renderTextLayerClosure() {
         continue;
       }
 
-      var e = expanded[i],
-          b = bounds[i];
-      var m = b.m,
-          c = m[0],
-          s = m[1];
-      var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
-      var ts = new Float64Array(64);
+      const e = expanded[i],
+            b = bounds[i];
+      const m = b.m,
+            c = m[0],
+            s = m[1];
+      const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
+      const ts = new Float64Array(64);
       points.forEach(function (p, j) {
-        var t = _util.Util.applyTransform(p, m);
+        const t = _util.Util.applyTransform(p, m);
 
         ts[j + 0] = c && (e.left - t[0]) / c;
         ts[j + 4] = s && (e.top - t[1]) / s;
@@ -10558,7 +11496,7 @@ var renderTextLayer = function renderTextLayerClosure() {
         ts[j + 56] = s && (e.right - t[0]) / s;
         ts[j + 60] = c && (e.bottom - t[1]) / -c;
       });
-      var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
+      const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
       divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
       divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
       divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
@@ -10569,7 +11507,7 @@ var renderTextLayer = function renderTextLayerClosure() {
   }
 
   function expandBounds(width, height, boxes) {
-    var bounds = boxes.map(function (box, i) {
+    const bounds = boxes.map(function (box, i) {
       return {
         x1: box.left,
         y1: box.top,
@@ -10581,9 +11519,9 @@ var renderTextLayer = function renderTextLayerClosure() {
       };
     });
     expandBoundsLTR(width, bounds);
-    var expanded = new Array(boxes.length);
+    const expanded = new Array(boxes.length);
     bounds.forEach(function (b) {
-      var i = b.index;
+      const i = b.index;
       expanded[i] = {
         left: b.x1New,
         top: 0,
@@ -10592,8 +11530,8 @@ var renderTextLayer = function renderTextLayerClosure() {
       };
     });
     boxes.map(function (box, i) {
-      var e = expanded[i],
-          b = bounds[i];
+      const e = expanded[i],
+            b = bounds[i];
       b.x1 = box.top;
       b.y1 = width - e.right;
       b.x2 = box.bottom;
@@ -10604,7 +11542,7 @@ var renderTextLayer = function renderTextLayerClosure() {
     });
     expandBoundsLTR(height, bounds);
     bounds.forEach(function (b) {
-      var i = b.index;
+      const i = b.index;
       expanded[i].top = b.x1New;
       expanded[i].bottom = b.x2New;
     });
@@ -10615,7 +11553,7 @@ var renderTextLayer = function renderTextLayerClosure() {
     bounds.sort(function (a, b) {
       return a.x1 - b.x1 || a.index - b.index;
     });
-    var fakeBoundary = {
+    const fakeBoundary = {
       x1: -Infinity,
       y1: -Infinity,
       x2: 0,
@@ -10624,33 +11562,33 @@ var renderTextLayer = function renderTextLayerClosure() {
       x1New: 0,
       x2New: 0
     };
-    var horizon = [{
+    const horizon = [{
       start: -Infinity,
       end: Infinity,
       boundary: fakeBoundary
     }];
     bounds.forEach(function (boundary) {
-      var i = 0;
+      let i = 0;
 
       while (i < horizon.length && horizon[i].end <= boundary.y1) {
         i++;
       }
 
-      var j = horizon.length - 1;
+      let j = horizon.length - 1;
 
       while (j >= 0 && horizon[j].start >= boundary.y2) {
         j--;
       }
 
-      var horizonPart, affectedBoundary;
-      var q,
+      let horizonPart, affectedBoundary;
+      let q,
           k,
           maxXNew = -Infinity;
 
       for (q = i; q <= j; q++) {
         horizonPart = horizon[q];
         affectedBoundary = horizonPart.boundary;
-        var xNew;
+        let xNew;
 
         if (affectedBoundary.x2 > boundary.x1) {
           xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
@@ -10684,13 +11622,13 @@ var renderTextLayer = function renderTextLayerClosure() {
         }
       }
 
-      var changedHorizon = [],
-          lastBoundary = null;
+      const changedHorizon = [];
+      let lastBoundary = null;
 
       for (q = i; q <= j; q++) {
         horizonPart = horizon[q];
         affectedBoundary = horizonPart.boundary;
-        var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
+        const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
 
         if (lastBoundary === useBoundary) {
           changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
@@ -10730,7 +11668,7 @@ var renderTextLayer = function renderTextLayerClosure() {
           continue;
         }
 
-        var used = false;
+        let used = false;
 
         for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
           used = horizon[k].boundary === affectedBoundary;
@@ -10752,7 +11690,7 @@ var renderTextLayer = function renderTextLayerClosure() {
       Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
     });
     horizon.forEach(function (horizonPart) {
-      var affectedBoundary = horizonPart.boundary;
+      const affectedBoundary = horizonPart.boundary;
 
       if (affectedBoundary.x2New === undefined) {
         affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
@@ -10777,7 +11715,7 @@ var renderTextLayer = function renderTextLayerClosure() {
     this._textDivs = textDivs || [];
     this._textContentItemsStr = textContentItemsStr || [];
     this._enhanceTextSelection = !!enhanceTextSelection;
-    this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled);
+    this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;
     this._reader = null;
     this._layoutTextLastFontSize = null;
     this._layoutTextLastFontFamily = null;
@@ -10945,7 +11883,7 @@ var renderTextLayer = function renderTextLayerClosure() {
       const transformBuf = [],
             paddingBuf = [];
 
-      for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
+      for (let i = 0, ii = this._textDivs.length; i < ii; i++) {
         const div = this._textDivs[i];
 
         const divProps = this._textDivProperties.get(div);
@@ -11002,7 +11940,7 @@ var renderTextLayer = function renderTextLayerClosure() {
   };
 
   function renderTextLayer(renderParameters) {
-    var task = new TextLayerRenderTask({
+    const task = new TextLayerRenderTask({
       textContent: renderParameters.textContent,
       textContentStream: renderParameters.textContentStream,
       container: renderParameters.container,
@@ -11023,15 +11961,14 @@ var renderTextLayer = function renderTextLayerClosure() {
 exports.renderTextLayer = renderTextLayer;
 
 /***/ }),
-/* 21 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 22 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.SVGGraphics = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -11901,7 +12838,7 @@ exports.SVGGraphics = SVGGraphics;
         this.embeddedFonts[fontObj.loadedName] = fontObj;
       }
 
-      current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
+      current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
       let bold = "normal";
 
       if (fontObj.black) {
@@ -11932,7 +12869,7 @@ exports.SVGGraphics = SVGGraphics;
     endText() {
       const current = this.current;
 
-      if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && 
current.txtElement.hasChildNodes()) {
+      if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && 
current.txtElement?.hasChildNodes()) {
         current.element = current.txtElement;
         this.clip("nonzero");
         this.endPath();
@@ -11962,7 +12899,7 @@ exports.SVGGraphics = SVGGraphics;
     }
 
     setStrokeRGBColor(r, g, b) {
-      this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);
+      this.current.strokeColor = _util.Util.makeHexColor(r, g, b);
     }
 
     setFillAlpha(fillAlpha) {
@@ -11970,7 +12907,7 @@ exports.SVGGraphics = SVGGraphics;
     }
 
     setFillRGBColor(r, g, b) {
-      this.current.fillColor = _util.Util.makeCssRgb(r, g, b);
+      this.current.fillColor = _util.Util.makeHexColor(r, g, b);
       this.current.tspan = this.svgFactory.createElement("svg:tspan");
       this.current.xcoords = [];
       this.current.ycoords = [];
@@ -12058,7 +12995,7 @@ exports.SVGGraphics = SVGGraphics;
       this.transformMatrix = matrix;
 
       if (paintType === 2) {
-        const cssColor = _util.Util.makeCssRgb(...color);
+        const cssColor = _util.Util.makeHexColor(...color);
 
         this.current.fillColor = cssColor;
         this.current.strokeColor = cssColor;
@@ -12549,20 +13486,19 @@ exports.SVGGraphics = SVGGraphics;
 }
 
 /***/ }),
-/* 22 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 23 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFNodeStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
 
 ;
 
@@ -12606,7 +13542,7 @@ class PDFNodeStream {
   }
 
   get _progressiveDataLength() {
-    return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
+    return this._fullRequestReader?._loaded ?? 0;
   }
 
   getFullReader() {
@@ -13018,15 +13954,14 @@ class PDFNodeStreamFsRangeReader extends BaseRangeReader {
 }
 
 /***/ }),
-/* 23 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 24 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.createResponseStatusError = createResponseStatusError;
 exports.extractFilenameFromHeader = extractFilenameFromHeader;
 exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
@@ -13034,7 +13969,7 @@ exports.validateResponseStatus = validateResponseStatus;
 
 var _util = __w_pdfjs_require__(2);
 
-var _content_disposition = __w_pdfjs_require__(24);
+var _content_disposition = __w_pdfjs_require__(25);
 
 function validateRangeRequestCapabilities({
   getResponseHeader,
@@ -13110,15 +14045,14 @@ function validateResponseStatus(status) {
 }
 
 /***/ }),
-/* 24 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 25 */
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
 
 function getFilenameFromContentDispositionHeader(contentDisposition) {
@@ -13298,20 +14232,19 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
 }
 
 /***/ }),
-/* 25 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 26 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFNetworkStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
 
 ;
 const OK_RESPONSE = 200;
@@ -13841,20 +14774,19 @@ class PDFNetworkStreamRangeRequestReader {
 }
 
 /***/ }),
-/* 26 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 27 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFFetchStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
 
 ;
 
@@ -13862,7 +14794,7 @@ function createFetchOptions(headers, withCredentials, abortController) {
   return {
     method: "GET",
     headers,
-    signal: abortController && abortController.signal,
+    signal: abortController?.signal,
     mode: "cors",
     credentials: withCredentials ? "include" : "same-origin",
     redirect: "follow"
@@ -13895,7 +14827,7 @@ class PDFFetchStream {
   }
 
   get _progressiveDataLength() {
-    return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
+    return this._fullRequestReader?._loaded ?? 0;
   }
 
   getFullReader() {
@@ -14080,7 +15012,7 @@ class PDFFetchStreamRangeReader {
 
       this._reader = response.body.getReader();
     }).catch(reason => {
-      if (reason && reason.name === "AbortError") {
+      if (reason?.name === "AbortError") {
         return;
       }
 
@@ -14135,6 +15067,37 @@ class PDFFetchStreamRangeReader {
 }
 
 /***/ })
-/******/ ]);
+/******/       ]);
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/       
+/******/       // The require function
+/******/       function __w_pdfjs_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       // no module.id needed
+/******/                       // no module.loaded needed
+/******/                       exports: {}
+/******/               };
+/******/       
+/******/               // Execute the module function
+/******/               __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
+/******/       
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/       
+/************************************************************************/
+/******/       // module exports must be returned from runtime so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       return __w_pdfjs_require__(0);
+/******/ })()
+;
 });
 //# sourceMappingURL=pdf.js.map
\ No newline at end of file
diff --git a/third-party/pdfjs/build/pdf.sandbox.js b/third-party/pdfjs/build/pdf.sandbox.js
new file mode 100644
index 000000000..c890e54c7
--- /dev/null
+++ b/third-party/pdfjs/build/pdf.sandbox.js
@@ -0,0 +1,312 @@
+/**
+ * @licstart The following is the entire license notice for the
+ * Javascript code in this page
+ *
+ * Copyright 2020 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @licend The above is the entire license notice for the
+ * Javascript code in this page
+ */
+
+(function webpackUniversalModuleDefinition(root, factory) {
+       if(typeof exports === 'object' && typeof module === 'object')
+               module.exports = factory();
+       else if(typeof define === 'function' && define.amd)
+               define("pdfjs-dist/build/pdf.sandbox", [], factory);
+       else if(typeof exports === 'object')
+               exports["pdfjs-dist/build/pdf.sandbox"] = factory();
+       else
+               root["pdfjs-dist/build/pdf.sandbox"] = root.pdfjsSandbox = factory();
+})(this, function() {
+return /******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ([
+/* 0 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.QuickJSSandbox = QuickJSSandbox;
+
+var _quickjsEval = _interopRequireDefault(__w_pdfjs_require__(1));
+
+var _pdfSandboxExternal = __w_pdfjs_require__(2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
+const TESTING = false;
+
+class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase {
+  exportValueToSandbox(val) {
+    return JSON.stringify(val);
+  }
+
+  importValueFromSandbox(val) {
+    return val;
+  }
+
+  createErrorForSandbox(errorMessage) {
+    return new Error(errorMessage);
+  }
+
+}
+
+class Sandbox {
+  constructor(win, module) {
+    this.support = new SandboxSupport(win, this);
+    module.externalCall = this.support.createSandboxExternals();
+    this._module = module;
+    this._alertOnError = 0;
+  }
+
+  create(data) {
+    if (TESTING) {
+      this._module.ccall("nukeSandbox", null, []);
+    }
+
+    const sandboxData = JSON.stringify(data);
+    const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 
\'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 
\'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof 
exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = 
factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // 
webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n  enumerable: 
true,\n  get: function () {\n    return _initialization.initSandbox;\n  }\n}));\n\nvar _initialization = 
__w_pdfjs_require__(1);\n\nconst pdfjsVersion = \'2.7.570\';\nconst pdfjsBuild = \'f2c7338b
 0\';\n\n/***/ }),\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.initSandbox = 
initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar 
_aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = 
__w_pdfjs_require__(4);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = 
__w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = 
__w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n  delete globalThis.pdfjsScripting;\n  const 
externalCall = globalThis.callExternalFunction;\n  delete globalThis.callExternalFunction;\n\n  const 
globalEval = code => globalThis.eval(code);\n\n  const send = data => externalCall("send", [data]);\n\n  
const proxyHandler = new _proxy.ProxyHandler();\n  const {\n    data\n  } = params;\n  const doc = new 
_doc.Doc({\n    send,\n    globalE
 val,\n    ...data.docInfo\n  });\n  const _document = {\n    obj: doc,\n    wrapped: new Proxy(doc, 
proxyHandler)\n  };\n  const app = new _app.App({\n    send,\n    globalEval,\n    externalCall,\n    
_document,\n    calculationOrder: data.calculationOrder,\n    proxyHandler,\n    ...data.appInfo\n  });\n  
const util = new _util.Util({\n    externalCall\n  });\n\n  if (data.objects) {\n    for (const [name, objs] 
of Object.entries(data.objects)) {\n      const obj = objs[0];\n      obj.send = send;\n      obj.globalEval 
= globalEval;\n      obj.doc = _document.wrapped;\n      let field;\n\n      if (obj.type === "radiobutton") 
{\n        const otherButtons = objs.slice(1);\n        field = new _field.RadioButtonField(otherButtons, 
obj);\n      } else if (obj.type === "checkbox") {\n        const otherButtons = objs.slice(1);\n        
field = new _field.CheckboxField(otherButtons, obj);\n      } else {\n        field = new 
_field.Field(obj);\n      }\n\n      const wrapped = new Pro
 xy(field, proxyHandler);\n\n      doc._addField(name, wrapped);\n\n      const _object = {\n        obj: 
field,\n        wrapped\n      };\n\n      for (const object of objs) {\n        app._objects[object.id] = 
_object;\n      }\n    }\n  }\n\n  const color = new _color.Color();\n  globalThis.event = null;\n  
globalThis.global = Object.create(null);\n  globalThis.app = new Proxy(app, proxyHandler);\n  
globalThis.color = new Proxy(color, proxyHandler);\n  globalThis.console = new Proxy(new _console.Console({\n 
   send\n  }), proxyHandler);\n  globalThis.util = new Proxy(util, proxyHandler);\n  globalThis.border = 
_constants.Border;\n  globalThis.cursor = _constants.Cursor;\n  globalThis.display = _constants.Display;\n  
globalThis.font = _constants.Font;\n  globalThis.highlight = _constants.Highlight;\n  globalThis.position = 
_constants.Position;\n  globalThis.scaleHow = _constants.ScaleHow;\n  globalThis.scaleWhen = 
_constants.ScaleWhen;\n  globalThis.style = _constants.Style;\n  gl
 obalThis.trans = _constants.Trans;\n  globalThis.zoomtype = _constants.ZoomType;\n  const aform = new 
_aform.AForm(doc, app, util, color);\n\n  for (const name of 
Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n    if (name !== "constructor" && 
!name.startsWith("_")) {\n      globalThis[name] = aform[name].bind(aform);\n    }\n  }\n\n  for (const 
[name, value] of Object.entries(_constants.GlobalConstants)) {\n    Object.defineProperty(globalThis, name, 
{\n      value,\n      writable: false\n    });\n  }\n\n  Object.defineProperties(globalThis, {\n    
ColorConvert: {\n      value: color.convert.bind(color),\n      writable: true\n    },\n    ColorEqual: {\n   
   value: color.equal.bind(color),\n      writable: true\n    }\n  });\n  const properties = 
Object.create(null);\n\n  for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n    if (name 
=== "constructor" || name.startsWith("_")) {\n      continue;\n    }\n\n    const descriptor = 
Object.getOwnPropertyDesc
 riptor(_doc.Doc.prototype, name);\n\n    if (descriptor.get) {\n      properties[name] = {\n        get: 
descriptor.get.bind(doc),\n        set: descriptor.set.bind(doc)\n      };\n    } else {\n      
properties[name] = {\n        value: _doc.Doc.prototype[name].bind(doc)\n      };\n    }\n  }\n\n  
Object.defineProperties(globalThis, properties);\n  const functions = {\n    dispatchEvent: 
app._dispatchEvent.bind(app),\n    timeoutCb: app._evalCallback.bind(app)\n  };\n  return (name, args) => {\n 
   try {\n      functions[name](args);\n    } catch (error) {\n      const value = 
`${error.toString()}\\n${error.stack}`;\n      send({\n        command: "error",\n        value\n      });\n  
  }\n  };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.ZoomType = 
exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = 
exports.Globa
 lConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = 
Object.freeze({\n  s: "solid",\n  d: "dashed",\n  b: "beveled",\n  i: "inset",\n  u: 
"underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n  visible: 0,\n  hidden: 1,\n  
delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n  visible: 0,\n  hidden: 1,\n  
noPrint: 2,\n  noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n  Times: 
"Times-Roman",\n  TimesB: "Times-Bold",\n  TimesI: "Times-Italic",\n  TimesBI: "Times-BoldItalic",\n  Helv: 
"Helvetica",\n  HelvB: "Helvetica-Bold",\n  HelvI: "Helvetica-Oblique",\n  HelvBI: "Helvetica-BoldOblique",\n 
 Cour: "Courier",\n  CourB: "Courier-Bold",\n  CourI: "Courier-Oblique",\n  CourBI: "Courier-BoldOblique",\n  
Symbol: "Symbol",\n  ZapfD: "ZapfDingbats",\n  KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n  KaMi: 
"HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = 
 Object.freeze({\n  n: "none",\n  i: "invert",\n  p: "push",\n  o: "outline"\n});\nexports.Highlight = 
Highlight;\nconst Position = Object.freeze({\n  textOnly: 0,\n  iconOnly: 1,\n  iconTextV: 2,\n  textIconV: 
3,\n  iconTextH: 4,\n  textIconH: 5,\n  overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = 
Object.freeze({\n  proportional: 0,\n  anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = 
Object.freeze({\n  always: 0,\n  never: 1,\n  tooBig: 2,\n  tooSmall: 3\n});\nexports.ScaleWhen = 
ScaleWhen;\nconst Style = Object.freeze({\n  ch: "check",\n  cr: "cross",\n  di: "diamond",\n  ci: 
"circle",\n  st: "star",\n  sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n  
blindsH: "BlindsHorizontal",\n  blindsV: "BlindsVertical",\n  boxI: "BoxIn",\n  boxO: "BoxOut",\n  dissolve: 
"Dissolve",\n  glitterD: "GlitterDown",\n  glitterR: "GlitterRight",\n  glitterRD: "GlitterRightDown",\n  
random: "Random",\n  replace: "Replace",\n  splitHI: "SplitH
 orizontalIn",\n  splitHO: "SplitHorizontalOut",\n  splitVI: "SplitVerticalIn",\n  splitVO: 
"SplitVerticalOut",\n  wipeD: "WipeDown",\n  wipeL: "WipeLeft",\n  wipeR: "WipeRight",\n  wipeU: 
"WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n  none: "NoVary",\n  fitP: 
"FitPage",\n  fitW: "FitWidth",\n  fitH: "FitHeight",\n  fitV: "FitVisibleWidth",\n  pref: "Preferred",\n  
refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n  
IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n  IDS_GT_AND_LT: "Invalid value: 
must be greater than or equal to % s " + "and less than or equal to % s.",\n  IDS_LESS_THAN: "Invalid value: 
must be less than or equal to % s.",\n  IDS_INVALID_MONTH: "** Invalid **",\n  IDS_INVALID_DATE: "Invalid 
date / time: please ensure that the date / time exists.Field",\n  IDS_INVALID_DATE2: " should match format 
",\n  IDS_INVALID_VALUE: "The value entered does not match the format of 
 the field",\n  IDS_AM: "am",\n  IDS_PM: "pm",\n  IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] 
May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] 
Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n  IDS_STARTUP_CONSOLE_MSG: 
"** ^ _ ^ **",\n  RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n  RE_NUMBER_COMMIT_DOT_SEP: 
["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n  RE_NUMBER_ENTRY_COMMA_SEP: 
["[+-]?\\\\d*,?\\\\d*"],\n  RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", 
"[+-]?\\\\d+[.,]"],\n  RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n  RE_ZIP_COMMIT: ["\\\\d{5}"],\n  RE_ZIP4_ENTRY: 
["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n  
RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", 
"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\
 \\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- 
])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n  RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- 
])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- 
])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n  RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- 
])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- 
])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = 
void 0;\n\nvar _color = __w_pdfjs_require__(4);\n\nvar _common = __w_pdfjs_require__(7);\n\nvar _pdf_object = 
__w_pdfjs_require__(6);\n\nclass Field extends _pdf_object.PDFObject {\n  constructor(data) {\n    
 super(data);\n    this.alignment = data.alignment || "left";\n    this.borderStyle = data.borderStyle || 
"";\n    this.buttonAlignX = data.buttonAlignX || 50;\n    this.buttonAlignY = data.buttonAlignY || 50;\n    
this.buttonFitBounds = data.buttonFitBounds;\n    this.buttonPosition = data.buttonPosition;\n    
this.buttonScaleHow = data.buttonScaleHow;\n    this.ButtonScaleWhen = data.buttonScaleWhen;\n    
this.calcOrderIndex = data.calcOrderIndex;\n    this.charLimit = data.charLimit;\n    this.comb = 
data.comb;\n    this.commitOnSelChange = data.commitOnSelChange;\n    this.currentValueIndices = 
data.currentValueIndices;\n    this.defaultStyle = data.defaultStyle;\n    this.defaultValue = 
data.defaultValue;\n    this.doNotScroll = data.doNotScroll;\n    this.doNotSpellCheck = 
data.doNotSpellCheck;\n    this.delay = data.delay;\n    this.display = data.display;\n    this.doc = 
data.doc;\n    this.editable = data.editable;\n    this.exportValues = data.exportValues;\n    this.fileSe
 lect = data.fileSelect;\n    this.hidden = data.hidden;\n    this.highlight = data.highlight;\n    
this.lineWidth = data.lineWidth;\n    this.multiline = data.multiline;\n    this.multipleSelection = 
!!data.multipleSelection;\n    this.name = data.name;\n    this.numItems = data.numItems;\n    this.page = 
data.page;\n    this.password = data.password;\n    this.print = data.print;\n    this.radiosInUnison = 
data.radiosInUnison;\n    this.readonly = data.readonly;\n    this.rect = data.rect;\n    this.required = 
data.required;\n    this.richText = data.richText;\n    this.richValue = data.richValue;\n    this.rotation = 
data.rotation;\n    this.style = data.style;\n    this.submitName = data.submitName;\n    this.textFont = 
data.textFont;\n    this.textSize = data.textSize;\n    this.type = data.type;\n    this.userName = 
data.userName;\n    this._document = data.doc;\n    this._value = data.value || "";\n    this._valueAsString 
= data.valueAsString;\n    this._actions = (0, _common.
 createActionsMap)(data.actions);\n    this._fillColor = data.fillColor || ["T"];\n    this._strokeColor = 
data.strokeColor || ["G", 0];\n    this._textColor = data.textColor || ["G", 0];\n    this._globalEval = 
data.globalEval;\n  }\n\n  get fillColor() {\n    return this._fillColor;\n  }\n\n  set fillColor(color) {\n  
  if (_color.Color._isValidColor(color)) {\n      this._fillColor = color;\n    }\n  }\n\n  get strokeColor() 
{\n    return this._strokeColor;\n  }\n\n  set strokeColor(color) {\n    if 
(_color.Color._isValidColor(color)) {\n      this._strokeColor = color;\n    }\n  }\n\n  get textColor() {\n  
  return this._textColor;\n  }\n\n  set textColor(color) {\n    if (_color.Color._isValidColor(color)) {\n    
  this._textColor = color;\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) 
{\n    if (!this.multipleSelection) {\n      this._value = value;\n    }\n  }\n\n  get valueAsString() {\n    
return this._valueAsString;\n  }\n\n  set valueAsS
 tring(val) {\n    this._valueAsString = val ? val.toString() : "";\n  }\n\n  checkThisBox(nWidget, bCheckIt 
= true) {}\n\n  isBoxChecked(nWidget) {\n    return false;\n  }\n\n  isDefaultChecked(nWidget) {\n    return 
false;\n  }\n\n  setAction(cTrigger, cScript) {\n    if (typeof cTrigger !== "string" || typeof cScript !== 
"string") {\n      return;\n    }\n\n    if (!(cTrigger in this._actions)) {\n      this._actions[cTrigger] = 
[];\n    }\n\n    this._actions[cTrigger].push(cScript);\n  }\n\n  setFocus() {\n    this._send({\n      id: 
this._id,\n      focus: true\n    });\n  }\n\n  _isButton() {\n    return false;\n  }\n\n  _runActions(event) 
{\n    const eventName = event.name;\n\n    if (!this._actions.has(eventName)) {\n      return false;\n    
}\n\n    const actions = this._actions.get(eventName);\n\n    try {\n      for (const action of actions) {\n  
      this._globalEval(action);\n      }\n    } catch (error) {\n      event.rc = false;\n      throw 
error;\n    }\n\n    ret
 urn true;\n  }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n  
constructor(otherButtons, data) {\n    super(data);\n    this.exportValues = [this.exportValues];\n    
this._radioIds = [this._id];\n    this._radioActions = [this._actions];\n\n    for (const radioData of 
otherButtons) {\n      this.exportValues.push(radioData.exportValues);\n\n      
this._radioIds.push(radioData.id);\n\n      this._radioActions.push((0, 
_common.createActionsMap)(radioData.actions));\n\n      if (this._value === radioData.exportValues) {\n       
 this._id = radioData.id;\n      }\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set 
value(value) {\n    const i = this.exportValues.indexOf(value);\n\n    if (0 <= i && i < 
this._radioIds.length) {\n      this._id = this._radioIds[i];\n      this._value = value;\n    } else if 
(value === "Off" && this._radioIds.length === 2) {\n      const nextI = (1 + 
this._radioIds.indexOf(this._id)) % 2;\n      this._id = this.
 _radioIds[nextI];\n      this._value = this.exportValues[nextI];\n    }\n  }\n\n  checkThisBox(nWidget, 
bCheckIt = true) {\n    if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n      return;\n  
  }\n\n    this._id = this._radioIds[nWidget];\n    this._value = this.exportValues[nWidget];\n\n    
this._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n  isBoxChecked(nWidget) {\n    
return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n  }\n\n  
isDefaultChecked(nWidget) {\n    return nWidget >= 0 && nWidget < this.exportValues.length && 
this.defaultValue === this.exportValues[nWidget];\n  }\n\n  _getExportValue(state) {\n    const i = 
this._radioIds.indexOf(this._id);\n\n    return this.exportValues[i];\n  }\n\n  _runActions(event) {\n    
const i = this._radioIds.indexOf(this._id);\n\n    this._actions = this._radioActions[i];\n    return 
super._runActions(event);\n  }\n\n  _isButton() {\n    return true
 ;\n  }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField 
{\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === "Off") {\n      
this._value = "Off";\n    } else {\n      super.value = value;\n    }\n  }\n\n  _getExportValue(state) {\n    
return state ? super._getExportValue(state) : "Off";\n  }\n\n  isBoxChecked(nWidget) {\n    if (this._value 
=== "Off") {\n      return false;\n    }\n\n    return super.isBoxChecked(nWidget);\n  }\n\n  
isDefaultChecked(nWidget) {\n    if (this.defaultValue === "Off") {\n      return this._value === "Off";\n    
}\n\n    return super.isDefaultChecked(nWidget);\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {\n    if 
(nWidget < 0 || nWidget >= this._radioIds.length) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n    
this._send({\n      id: this._id,\n      value: this._value\n
     });\n  }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = 
__w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Color extends 
_pdf_object.PDFObject {\n  constructor() {\n    super({});\n    this.transparent = ["T"];\n    this.black = 
["G", 0];\n    this.white = ["G", 1];\n    this.red = ["RGB", 1, 0, 0];\n    this.green = ["RGB", 0, 1, 0];\n 
   this.blue = ["RGB", 0, 0, 1];\n    this.cyan = ["CMYK", 1, 0, 0, 0];\n    this.magenta = ["CMYK", 0, 1, 0, 
0];\n    this.yellow = ["CMYK", 0, 0, 1, 0];\n    this.dkGray = ["G", 0.25];\n    this.gray = ["G", 0.5];\n   
 this.ltGray = ["G", 0.75];\n  }\n\n  static _isValidSpace(cColorSpace) {\n    return typeof cColorSpace === 
"string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB"
  || cColorSpace === "CMYK");\n  }\n\n  static _isValidColor(colorArray) {\n    if 
(!Array.isArray(colorArray) || colorArray.length === 0) {\n      return false;\n    }\n\n    const space = 
colorArray[0];\n\n    if (!Color._isValidSpace(space)) {\n      return false;\n    }\n\n    switch (space) 
{\n      case "T":\n        if (colorArray.length !== 1) {\n          return false;\n        }\n\n        
break;\n\n      case "G":\n        if (colorArray.length !== 2) {\n          return false;\n        }\n\n     
   break;\n\n      case "RGB":\n        if (colorArray.length !== 4) {\n          return false;\n        
}\n\n        break;\n\n      case "CMYK":\n        if (colorArray.length !== 5) {\n          return false;\n  
      }\n\n        break;\n\n      default:\n        return false;\n    }\n\n    return 
colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n  }\n\n  static 
_getCorrectColor(colorArray) {\n    return Color._isValidColor(colorArray) ? colorArray : 
 ["G", 0];\n  }\n\n  convert(colorArray, cColorSpace) {\n    if (!Color._isValidSpace(cColorSpace)) {\n      
return this.black;\n    }\n\n    if (cColorSpace === "T") {\n      return ["T"];\n    }\n\n    colorArray = 
Color._getCorrectColor(colorArray);\n\n    if (colorArray[0] === cColorSpace) {\n      return colorArray;\n   
 }\n\n    if (colorArray[0] === "T") {\n      return this.convert(this.black, cColorSpace);\n    }\n\n    
return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n  }\n\n  
equal(colorArray1, colorArray2) {\n    colorArray1 = Color._getCorrectColor(colorArray1);\n    colorArray2 = 
Color._getCorrectColor(colorArray2);\n\n    if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n      
return colorArray1[0] === "T" && colorArray2[0] === "T";\n    }\n\n    if (colorArray1[0] !== colorArray2[0]) 
{\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\n    }\n\n    return 
colorArray1.slice(1).every((c, i) => c === co
 lorArray2[i + 1]);\n  }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 5 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, 
Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n  static CMYK_G([c, y, 
m, k]) {\n    return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) 
{\n    return ["CMYK", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return ["RGB", g, g, g];\n  }\n\n  
static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, 
g, b]) {\n    return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const 
R = makeColorComp(r);\n    const G = makeColorComp(g);\n    const B = makeColorComp(b);\n    return 
`#${R}${G}${B}`;\n  }\n\n  static T_HTML() {\n    r
 eturn "#00000000";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return ["RGB", 1 - Math.min(1, c + k), 1 - 
Math.min(1, m + k), 1 - Math.min(1, y + k)];\n  }\n\n  static CMYK_HTML(components) {\n    return 
this.RGB_HTML(this.CMYK_RGB(components));\n  }\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    
const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return ["CMYK", c, m, y, k];\n  
}\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.PDFObject 
= void 0;\n\nclass PDFObject {\n  constructor(data) {\n    this._expandos = Object.create(null);\n    
this._send = data.send || null;\n    this._id = data.id || null;\n  }\n\n}\n\nexports.PDFObject = 
PDFObject;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n})
 );\nexports.createActionsMap = createActionsMap;\n\nfunction createActionsMap(actions) {\n  const actionsMap 
= new Map();\n\n  if (actions) {\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n 
     actionsMap.set(eventType, actionsForEvent);\n    }\n  }\n\n  return actionsMap;\n}\n\n/***/ }),\n/* 8 
*/\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass AForm {\n  constructor(document, app, util, color) {\n    this._document = 
document;\n    this._app = app;\n    this._util = util;\n    this._color = color;\n    this._dateFormats = 
["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", 
"mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n    this._timeFormats = ["HH:MM", "h:MM 
tt", "HH:MM:ss", "h:MM:ss tt"];\n    this._emailRe
 gex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" 
+ "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n  }\n\n  _mkTargetName(event) {\n    return 
event.target ? `[ ${event.target.name} ]` : "";\n  }\n\n  _parseDate(cFormat, cDate) {\n    const ddate = 
Date.parse(cDate);\n\n    if (isNaN(ddate)) {\n      try {\n        return this._util.scand(cFormat, 
cDate);\n      } catch (error) {\n        return null;\n      }\n    } else {\n      return new 
Date(ddate);\n    }\n  }\n\n  AFMergeChange(event = globalThis.event) {\n    if (event.willCommit) {\n      
return event.value.toString();\n    }\n\n    return this._app._eventDispatcher.mergeChange(event);\n  }\n\n  
AFParseDateEx(cString, cOrder) {\n    return this._parseDate(cOrder, cString);\n  }\n\n  AFExtractNums(str) 
{\n    if (typeof str === "number") {\n      return [str];\n    }\n\n    if (!str || typeof str !== "string") 
{\n      return null;\n    }\n\n    const 
 first = str.charAt(0);\n\n    if (first === "." || first === ",") {\n      str = `0${str}`;\n    }\n\n    
const numbers = str.match(/([0-9]+)/g);\n\n    if (numbers.length === 0) {\n      return null;\n    }\n\n    
return numbers;\n  }\n\n  AFMakeNumber(str) {\n    if (typeof str === "number") {\n      return str;\n    
}\n\n    if (typeof str !== "string") {\n      return null;\n    }\n\n    str = str.trim().replace(",", 
".");\n    const number = parseFloat(str);\n\n    if (isNaN(number) || !isFinite(number)) {\n      return 
null;\n    }\n\n    return number;\n  }\n\n  AFMakeArrayFromList(string) {\n    if (typeof string === 
"string") {\n      return string.split(/, ?/g);\n    }\n\n    return string;\n  }\n\n  AFNumber_Format(nDec, 
sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n    const event = globalThis.event;\n\n    
if (!event.value) {\n      return;\n    }\n\n    let value = this.AFMakeNumber(event.value);\n\n    if (value 
=== null) {\n      event.value = "";\
 n      return;\n    }\n\n    const sign = Math.sign(value);\n    const buf = [];\n    let hasParen = 
false;\n\n    if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n      buf.push("-");\n    }\n\n    if 
((negStyle === 2 || negStyle === 3) && sign === -1) {\n      buf.push("(");\n      hasParen = true;\n    
}\n\n    if (bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    buf.push("%,");\n    buf.push(sepStyle);\n    buf.push(".");\n    
buf.push(nDec.toString());\n    buf.push("f");\n\n    if (!bCurrencyPrepend) {\n      
buf.push(strCurrency);\n    }\n\n    if (hasParen) {\n      buf.push(")");\n    }\n\n    if (negStyle === 1 
|| negStyle === 3) {\n      event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n    
}\n\n    if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n      value = -value;\n    }\n\n    
const formatStr = buf.join("");\n    event.value = this._util.print
 f(formatStr, value);\n  }\n\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, 
bCurrencyPrepend) {\n    const event = globalThis.event;\n    let value = this.AFMergeChange(event);\n\n    
if (!value) {\n      return;\n    }\n\n    value = value.trim();\n    let pattern;\n\n    if (sepStyle > 1) 
{\n      pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : /^[+-]?[0-9]*,?[0-9]*$/;\n    } 
else {\n      pattern = event.willCommit ? /^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : 
/^[+-]?[0-9]*\\.?[0-9]*$/;\n    }\n\n    if (!pattern.test(value)) {\n      if (event.willCommit) {\n        
const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n        
this._app.alert(err);\n      }\n\n      event.rc = false;\n    }\n\n    if (event.willCommit && sepStyle > 1) 
{\n      event.value = parseFloat(value.replace(",", "."));\n    }\n  }\n\n  AFPercent_Format(nDec, sepStyle, 
percentPrepend = false) {\n    if (typeof nDec !== "numb
 er") {\n      return;\n    }\n\n    if (typeof sepStyle !== "number") {\n      return;\n    }\n\n    if 
(nDec < 0) {\n      throw new Error("Invalid nDec value in AFPercent_Format");\n    }\n\n    const event = 
globalThis.event;\n\n    if (nDec > 512) {\n      event.value = "%";\n      return;\n    }\n\n    nDec = 
Math.floor(nDec);\n    sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n    let value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      event.value = "%";\n      return;\n    
}\n\n    const formatStr = `%,${sepStyle}.${nDec}f`;\n    value = this._util.printf(formatStr, value * 
100);\n\n    if (percentPrepend) {\n      event.value = `%${value}`;\n    } else {\n      event.value = 
`${value}%`;\n    }\n  }\n\n  AFPercent_Keystroke(nDec, sepStyle) {\n    this.AFNumber_Keystroke(nDec, 
sepStyle, 0, 0, "", true);\n  }\n\n  AFDate_FormatEx(cFormat) {\n    const event = globalThis.event;\n    
const value = event.value;\n\n    if (!value) {\n      retu
 rn;\n    }\n\n    const date = this._parseDate(cFormat, value);\n\n    if (date !== null) {\n      
event.value = this._util.printd(cFormat, date);\n    }\n  }\n\n  AFDate_Format(pdf) {\n    if (pdf >= 0 && 
pdf < this._dateFormats.length) {\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\n    }\n  }\n\n  
AFDate_KeystrokeEx(cFormat) {\n    const event = globalThis.event;\n\n    if (!event.willCommit) {\n      
return;\n    }\n\n    const value = this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    }\n\n 
   if (this._parseDate(cFormat, value) === null) {\n      const invalid = 
_constants.GlobalConstants.IDS_INVALID_DATE;\n      const invalid2 = 
_constants.GlobalConstants.IDS_INVALID_DATE2;\n      const err = `${invalid} 
${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n      this._app.alert(err);\n\n      event.rc = 
false;\n    }\n  }\n\n  AFDate_Keystroke(pdf) {\n    if (pdf >= 0 && pdf < this._dateFormats.length) {\n      
this.AFDate_KeystrokeEx(this._dateForm
 ats[pdf]);\n    }\n  }\n\n  AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n    const 
event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    const value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      return;\n    }\n\n    bGreaterThan = 
!!bGreaterThan;\n    bLessThan = !!bLessThan;\n\n    if (bGreaterThan) {\n      nGreaterThan = 
this.AFMakeNumber(nGreaterThan);\n\n      if (nGreaterThan === null) {\n        return;\n      }\n    }\n\n   
 if (bLessThan) {\n      nLessThan = this.AFMakeNumber(nLessThan);\n\n      if (nLessThan === null) {\n       
 return;\n      }\n    }\n\n    let err = "";\n\n    if (bGreaterThan && bLessThan) {\n      if (value < 
nGreaterThan || value > nLessThan) {\n        err = 
this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n      }\n    } else if 
(bGreaterThan) {\n      if (value < nGreaterThan) {\n        err = this._util.printf(_constants.GlobalCons
 tants.IDS_GREATER_THAN, nGreaterThan);\n      }\n    } else if (value > nLessThan) {\n      err = 
this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n    }\n\n    if (err) {\n      
this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  AFSimple(cFunction, nValue1, nValue2) {\n   
 const value1 = this.AFMakeNumber(nValue1);\n\n    if (value1 === null) {\n      throw new Error("Invalid 
nValue1 in AFSimple");\n    }\n\n    const value2 = this.AFMakeNumber(nValue2);\n\n    if (value2 === null) 
{\n      throw new Error("Invalid nValue2 in AFSimple");\n    }\n\n    switch (cFunction) {\n      case 
"AVG":\n        return (value1 + value2) / 2;\n\n      case "SUM":\n        return value1 + value2;\n\n      
case "PRD":\n        return value1 * value2;\n\n      case "MIN":\n        return Math.min(value1, 
value2);\n\n      case "MAX":\n        return Math.max(value1, value2);\n    }\n\n    throw new 
Error("Invalid cFunction in AFSimple");\n  }\n\n  AFSimple_Calc
 ulate(cFunction, cFields) {\n    const actions = {\n      AVG: args => args.reduce((acc, value) => acc + 
value, 0) / args.length,\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\n      PRD: args => 
args.reduce((acc, value) => acc * value, 1),\n      MIN: args => args.reduce((acc, value) => Math.min(acc, 
value), Number.MAX_VALUE),\n      MAX: args => args.reduce((acc, value) => Math.max(acc, value), 
Number.MIN_VALUE)\n    };\n\n    if (!(cFunction in actions)) {\n      throw new TypeError("Invalid function 
in AFSimple_Calculate");\n    }\n\n    const event = globalThis.event;\n    const values = [];\n\n    for 
(const cField of cFields) {\n      const field = this._document.getField(cField);\n\n      const number = 
this.AFMakeNumber(field.value);\n\n      if (number !== null) {\n        values.push(number);\n      }\n    
}\n\n    if (values.length === 0) {\n      event.value = cFunction === "PRD" ? 1 : 0;\n      return;\n    
}\n\n    const res = actions[cFunction](val
 ues);\n    event.value = Math.round(1e6 * res) / 1e6;\n  }\n\n  AFSpecial_Format(psf) {\n    const event = 
globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    psf = this.AFMakeNumber(psf);\n\n   
 if (psf === null) {\n      throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    let formatStr = 
"";\n\n    switch (psf) {\n      case 0:\n        formatStr = "99999";\n        break;\n\n      case 1:\n     
   formatStr = "99999-9999";\n        break;\n\n      case 2:\n        if (this._util.printx("9999999999", 
event.value).length >= 10) {\n          formatStr = "(999) 999-9999";\n        } else {\n          formatStr 
= "999-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    
event.value = this._util.printx(formatStr, event.value);\n  }\n\n  AFSpecial_KeystrokeEx(cMask) {\n    if 
(!cMask) {\n      return;\n    }\
 n\n    const event = globalThis.event;\n    const value = this.AFMergeChange(event);\n    const checkers = 
new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char 
&& char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && 
char <= "9"], ["X", char => true]]);\n\n    function _checkValidity(_value, _cMask) {\n      for (let i = 0, 
ii = value.length; i < ii; i++) {\n        const mask = _cMask.charAt(i);\n\n        const char = 
_value.charAt(i);\n\n        const checker = checkers.get(mask);\n\n        if (checker) {\n          if 
(!checker(char)) {\n            return false;\n          }\n        } else if (mask !== char) {\n          
return false;\n        }\n      }\n\n      return true;\n    }\n\n    if (!value) {\n      return;\n    }\n\n 
   const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n    if (value.length > 
cMask.length) {\n      this._app.alert(err
 );\n\n      event.rc = false;\n      return;\n    }\n\n    if (event.willCommit) {\n      if (value.length < 
cMask.length) {\n        this._app.alert(err);\n\n        event.rc = false;\n        return;\n      }\n\n     
 if (!_checkValidity(value, cMask)) {\n        this._app.alert(err);\n\n        event.rc = false;\n        
return;\n      }\n\n      event.value += cMask.subString(value.length);\n      return;\n    }\n\n    if 
(value.length < cMask.length) {\n      cMask = cMask.substring(0, value.length);\n    }\n\n    if 
(!_checkValidity(value, cMask)) {\n      this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  
AFSpecial_Keystroke(psf) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n   
 }\n\n    psf = this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Keystroke");\n    }\n\n    let formatStr;\n\n    switch (psf) {\n      case 0:\n        formatStr = 
"99999";\n        break;\n\n      ca
 se 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 2:\n        const finalLen = 
event.value.length + event.change.length + event.selStart - event.selEnd;\n\n        if (finalLen >= 8) {\n   
       formatStr = "(999) 999-9999";\n        } else {\n          formatStr = "999-9999";\n        }\n\n      
  break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        break;\n\n      default:\n        
throw new Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    this.AFSpecial_KeystrokeEx(formatStr);\n 
 }\n\n  AFTime_FormatEx(cFormat) {\n    this.AFDate_FormatEx(cFormat);\n  }\n\n  AFTime_Format(pdf) {\n    if 
(pdf >= 0 && pdf < this._timeFormats.length) {\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\n    }\n  
}\n\n  AFTime_KeystrokeEx(cFormat) {\n    this.AFDate_KeystrokeEx(cFormat);\n  }\n\n  AFTime_Keystroke(pdf) 
{\n    if (pdf >= 0 && pdf < this._timeFormats.length) {\n      
this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n    }\n  }\n\n  eMai
 lValidate(str) {\n    return this._emailRegex.test(str);\n  }\n\n}\n\nexports.AForm = AForm;\n\n/***/ 
}),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.App = void 0;\n\nvar 
_color = __w_pdfjs_require__(4);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = 
__w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nvar _thermometer = 
__w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst 
VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _pdf_object.PDFObject {\n  
constructor(data) {\n    super(data);\n    this.calculate = true;\n    this._constants = null;\n    
this._focusRect = true;\n    this._fs = null;\n    this._language = App._getLanguage(data.language);\n    
this._openInPlace = false;\n    this._platform = App._getPlatform(data.platform);\n    this._runtimeHighligh
 t = false;\n    this._runtimeHighlightColor = ["T"];\n    this._thermometer = null;\n    this._toolbar = 
false;\n    this._document = data._document;\n    this._proxyHandler = data.proxyHandler;\n    this._objects 
= Object.create(null);\n    this._eventDispatcher = new _event.EventDispatcher(this._document, 
data.calculationOrder, this._objects);\n    this._timeoutIds = new WeakMap();\n\n    if (typeof 
FinalizationRegistry !== "undefined") {\n      this._timeoutIdsRegistry = new 
FinalizationRegistry(this._cleanTimeout.bind(this));\n    } else {\n      this._timeoutIdsRegistry = null;\n  
  }\n\n    this._timeoutCallbackIds = new Map();\n    this._timeoutCallbackId = 0;\n    this._globalEval = 
data.globalEval;\n    this._externalCall = data.externalCall;\n  }\n\n  _dispatchEvent(pdfEvent) {\n    
this._eventDispatcher.dispatch(pdfEvent);\n  }\n\n  _registerTimeoutCallback(cExpr) {\n    const id = 
this._timeoutCallbackId++;\n\n    this._timeoutCallbackIds.set(id, cExpr);\n\n    return id
 ;\n  }\n\n  _unregisterTimeoutCallback(id) {\n    this._timeoutCallbackIds.delete(id);\n  }\n\n  
_evalCallback({\n    callbackId,\n    interval\n  }) {\n    const expr = 
this._timeoutCallbackIds.get(callbackId);\n\n    if (!interval) {\n      
this._unregisterTimeoutCallback(callbackId);\n    }\n\n    if (expr) {\n      this._globalEval(expr);\n    
}\n  }\n\n  _registerTimeout(callbackId, interval) {\n    const timeout = Object.create(null);\n    const id 
= {\n      callbackId,\n      interval\n    };\n\n    this._timeoutIds.set(timeout, id);\n\n    if 
(this._timeoutIdsRegistry) {\n      this._timeoutIdsRegistry.register(timeout, id);\n    }\n\n    return 
timeout;\n  }\n\n  _unregisterTimeout(timeout) {\n    if (this._timeoutIdsRegistry) {\n      
this._timeoutIdsRegistry.unregister(timeout);\n    }\n\n    const data = this._timeoutIds.get(timeout);\n\n   
 if (!data) {\n      return;\n    }\n\n    this._timeoutIds.delete(timeout);\n\n    
this._cleanTimeout(data);\n  }\n\n  _cleanTimeo
 ut({\n    callbackId,\n    interval\n  }) {\n    this._unregisterTimeoutCallback(callbackId);\n\n    if 
(interval) {\n      this._externalCall("clearInterval", [callbackId]);\n    } else {\n      
this._externalCall("clearTimeout", [callbackId]);\n    }\n  }\n\n  static _getPlatform(platform) {\n    if 
(typeof platform === "string") {\n      platform = platform.toLowerCase();\n\n      if 
(platform.includes("win")) {\n        return "WIN";\n      } else if (platform.includes("mac")) {\n        
return "MAC";\n      }\n    }\n\n    return "UNIX";\n  }\n\n  static _getLanguage(language) {\n    const 
[main, sub] = language.toLowerCase().split(/[-_]/);\n\n    switch (main) {\n      case "zh":\n        if (sub 
=== "cn" || sub === "sg") {\n          return "CHS";\n        }\n\n        return "CHT";\n\n      case 
"da":\n        return "DAN";\n\n      case "de":\n        return "DEU";\n\n      case "es":\n        return 
"ESP";\n\n      case "fr":\n        return "FRA";\n\n      case "it":\n   
      return "ITA";\n\n      case "ko":\n        return "KOR";\n\n      case "ja":\n        return "JPN";\n\n 
     case "nl":\n        return "NLD";\n\n      case "no":\n        return "NOR";\n\n      case "pt":\n       
 if (sub === "br") {\n          return "PTB";\n        }\n\n        return "ENU";\n\n      case "fi":\n       
 return "SUO";\n\n      case "SV":\n        return "SVE";\n\n      default:\n        return "ENU";\n    }\n  
}\n\n  get activeDocs() {\n    return [this._document.wrapped];\n  }\n\n  set activeDocs(_) {\n    throw new 
Error("app.activeDocs is read-only");\n  }\n\n  get constants() {\n    if (!this._constants) {\n      
this._constants = Object.freeze({\n        align: Object.freeze({\n          left: 0,\n          center: 1,\n 
         right: 2,\n          top: 3,\n          bottom: 4\n        })\n      });\n    }\n\n    return 
this._constants;\n  }\n\n  set constants(_) {\n    throw new Error("app.constants is read-only");\n  }\n\n  
get focusRect() {\n    retu
 rn this._focusRect;\n  }\n\n  set focusRect(val) {\n    this._focusRect = val;\n  }\n\n  get formsVersion() 
{\n    return FORMS_VERSION;\n  }\n\n  set formsVersion(_) {\n    throw new Error("app.formsVersion is 
read-only");\n  }\n\n  get fromPDFConverters() {\n    return [];\n  }\n\n  set fromPDFConverters(_) {\n    
throw new Error("app.fromPDFConverters is read-only");\n  }\n\n  get fs() {\n    if (this._fs === null) {\n   
   this._fs = new Proxy(new _fullscreen.FullScreen({\n        send: this._send\n      }), 
this._proxyHandler);\n    }\n\n    return this._fs;\n  }\n\n  set fs(_) {\n    throw new Error("app.fs is 
read-only");\n  }\n\n  get language() {\n    return this._language;\n  }\n\n  set language(_) {\n    throw 
new Error("app.language is read-only");\n  }\n\n  get media() {\n    return undefined;\n  }\n\n  set media(_) 
{\n    throw new Error("app.media is read-only");\n  }\n\n  get monitors() {\n    return [];\n  }\n\n  set 
monitors(_) {\n    throw new Error("app.monitors 
 is read-only");\n  }\n\n  get numPlugins() {\n    return 0;\n  }\n\n  set numPlugins(_) {\n    throw new 
Error("app.numPlugins is read-only");\n  }\n\n  get openInPlace() {\n    return this._openInPlace;\n  }\n\n  
set openInPlace(val) {\n    this._openInPlace = val;\n  }\n\n  get platform() {\n    return this._platform;\n 
 }\n\n  set platform(_) {\n    throw new Error("app.platform is read-only");\n  }\n\n  get plugins() {\n    
return [];\n  }\n\n  set plugins(_) {\n    throw new Error("app.plugins is read-only");\n  }\n\n  get 
printColorProfiles() {\n    return [];\n  }\n\n  set printColorProfiles(_) {\n    throw new 
Error("app.printColorProfiles is read-only");\n  }\n\n  get printerNames() {\n    return [];\n  }\n\n  set 
printerNames(_) {\n    throw new Error("app.printerNames is read-only");\n  }\n\n  get runtimeHighlight() {\n 
   return this._runtimeHighlight;\n  }\n\n  set runtimeHighlight(val) {\n    this._runtimeHighlight = val;\n  
}\n\n  get runtimeHighlightColor() {\n    re
 turn this._runtimeHighlightColor;\n  }\n\n  set runtimeHighlightColor(val) {\n    if 
(_color.Color._isValidColor(val)) {\n      this._runtimeHighlightColor = val;\n    }\n  }\n\n  get 
thermometer() {\n    if (this._thermometer === null) {\n      this._thermometer = new Proxy(new 
_thermometer.Thermometer({\n        send: this._send\n      }), this._proxyHandler);\n    }\n\n    return 
this._thermometer;\n  }\n\n  set thermometer(_) {\n    throw new Error("app.thermometer is read-only");\n  
}\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  set toolbar(val) {\n    this._toolbar = val;\n  
}\n\n  get toolbarHorizontal() {\n    return this.toolbar;\n  }\n\n  set toolbarHorizontal(value) {\n    
this.toolbar = value;\n  }\n\n  get toolbarVertical() {\n    return this.toolbar;\n  }\n\n  set 
toolbarVertical(value) {\n    this.toolbar = value;\n  }\n\n  get viewerType() {\n    return VIEWER_TYPE;\n  
}\n\n  set viewerType(_) {\n    throw new Error("app.viewerType is read-only");\n  }\n
 \n  get viewerVariation() {\n    return VIEWER_VARIATION;\n  }\n\n  set viewerVariation(_) {\n    throw new 
Error("app.viewerVariation is read-only");\n  }\n\n  get viewerVersion() {\n    return VIEWER_VERSION;\n  
}\n\n  set viewerVersion(_) {\n    throw new Error("app.viewerVersion is read-only");\n  }\n\n  addMenuItem() 
{}\n\n  addSubMenu() {}\n\n  addToolButton() {}\n\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", 
oDoc = null, oCheckbox = null) {\n    this._externalCall("alert", [cMsg]);\n  }\n\n  beep() {}\n\n  
beginPriv() {}\n\n  browseForDoc() {}\n\n  clearInterval(oInterval) {\n    
this._unregisterTimeout(oInterval);\n  }\n\n  clearTimeOut(oTime) {\n    this._unregisterTimeout(oTime);\n  
}\n\n  endPriv() {}\n\n  execDialog() {}\n\n  execMenuItem() {}\n\n  getNthPlugInName() {}\n\n  getPath() 
{}\n\n  goBack() {}\n\n  goForward() {}\n\n  hideMenuItem() {}\n\n  hideToolbarButton() {}\n\n  launchURL() 
{}\n\n  listMenuItems() {}\n\n  listToolbarButtons() {}\n\n  loadPolic
 yFile() {}\n\n  mailGetAddrs() {}\n\n  mailMsg() {}\n\n  newDoc() {}\n\n  newCollection() {}\n\n  newFDF() 
{}\n\n  openDoc() {}\n\n  openFDF() {}\n\n  popUpMenu() {}\n\n  popUpMenuEx() {}\n\n  removeToolButton() 
{}\n\n  response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n    return 
this._externalCall("prompt", [cQuestion, cDefault || ""]);\n  }\n\n  setInterval(cExpr, nMilliseconds) {\n    
if (typeof cExpr !== "string") {\n      throw new TypeError("First argument of app.setInterval must be a 
string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw new TypeError("Second argument 
of app.setInterval must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setInterval", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, true);\n  }\n\n  setTimeOut(cExpr, 
nMilliseconds) {\n    if (typeof cExpr !== "string") {\n      throw new TypeError("First argument 
 of app.setTimeOut must be a string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw 
new TypeError("Second argument of app.setTimeOut must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setTimeout", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, false);\n  }\n\n  trustedFunction() {}\n\n  
trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n  constructor(data) {\n    
this.change = data.change || "";\n    this.changeEx = data.changeEx || null;\n    this.commitKey = 
data.commitKey || 0;\n    this.fieldFull = data.fieldFull || false;\n    this.keyDown = data.keyDown || 
false;\n    this.modifier = data.modifier || false;\n    this.name = data.name;\n    th
 is.rc = true;\n    this.richChange = data.richChange || [];\n    this.richChangeEx = data.richChangeEx || 
[];\n    this.richValue = data.richValue || [];\n    this.selEnd = data.selEnd || -1;\n    this.selStart = 
data.selStart || -1;\n    this.shift = data.shift || false;\n    this.source = data.source || null;\n    
this.target = data.target || null;\n    this.targetName = "";\n    this.type = "Field";\n    this.value = 
data.value || "";\n    this.willCommit = data.willCommit || false;\n  }\n\n}\n\nexports.Event = 
Event;\n\nclass EventDispatcher {\n  constructor(document, calculationOrder, objects) {\n    this._document = 
document;\n    this._calculationOrder = calculationOrder;\n    this._objects = objects;\n    
this._document.obj._eventDispatcher = this;\n  }\n\n  mergeChange(event) {\n    let value = event.value;\n\n  
  if (typeof value !== "string") {\n      value = value.toString();\n    }\n\n    const prefix = 
event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n   
  const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n   
 return `${prefix}${event.change}${postfix}`;\n  }\n\n  dispatch(baseEvent) {\n    const id = 
baseEvent.id;\n\n    if (!(id in this._objects)) {\n      let event;\n\n      if (id === "doc" || id === 
"page") {\n        event = globalThis.event = new Event(baseEvent);\n        event.source = event.target = 
this._document.wrapped;\n        event.name = baseEvent.name;\n      }\n\n      if (id === "doc") {\n        
this._document.obj._dispatchDocEvent(event.name);\n      } else if (id === "page") {\n        
this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n      }\n\n      
return;\n    }\n\n    const name = baseEvent.name;\n    const source = this._objects[id];\n    const event = 
globalThis.event = new Event(baseEvent);\n    let savedChange;\n\n    if (source.obj._isButton()) {\n      
source.obj._id = id;\n      event.value = source.obj.
 _getExportValue(event.value);\n\n      if (name === "Action") {\n        source.obj._value = event.value;\n  
    }\n    }\n\n    if (name === "Keystroke") {\n      savedChange = {\n        value: event.value,\n        
change: event.change,\n        selStart: event.selStart,\n        selEnd: event.selEnd\n      };\n    } else 
if (name === "Blur" || name === "Focus") {\n      Object.defineProperty(event, "value", {\n        
configurable: false,\n        writable: false,\n        enumerable: true,\n        value: event.value\n      
});\n    } else if (name === "Validate") {\n      this.runValidation(source, event);\n      return;\n    
}\n\n    this.runActions(source, source, event, name);\n\n    if (name === "Keystroke") {\n      if 
(event.rc) {\n        if (event.willCommit) {\n          this.runValidation(source, event);\n        } else 
if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== 
savedChange.selEnd) {\n          source.wrappe
 d.value = this.mergeChange(event);\n        }\n      } else if (!event.willCommit) {\n        
source.obj._send({\n          id: source.obj._id,\n          value: savedChange.value,\n          selRange: 
[savedChange.selStart, savedChange.selEnd]\n        });\n      }\n    }\n  }\n\n  runValidation(source, 
event) {\n    const hasRan = this.runActions(source, source, event, "Validate");\n\n    if (event.rc) {\n     
 if (hasRan) {\n        source.wrapped.value = event.value;\n      } else {\n        source.obj.value = 
event.value;\n      }\n\n      if (this._document.obj.calculate) {\n        this.runCalculate(source, 
event);\n      }\n\n      event.value = source.obj.value;\n      this.runActions(source, source, event, 
"Format");\n      source.wrapped.valueAsString = event.value;\n    }\n  }\n\n  runActions(source, target, 
event, eventName) {\n    event.source = source.wrapped;\n    event.target = target.wrapped;\n    event.name = 
eventName;\n    event.targetName = target.obj.name;\n  
   event.rc = true;\n    return target.obj._runActions(event);\n  }\n\n  calculateNow() {\n    if 
(!this._calculationOrder) {\n      return;\n    }\n\n    const first = this._calculationOrder[0];\n    const 
source = this._objects[first];\n    globalThis.event = new Event({});\n    this.runCalculate(source, 
globalThis.event);\n  }\n\n  runCalculate(source, event) {\n    if (!this._calculationOrder) {\n      
return;\n    }\n\n    for (const targetId of this._calculationOrder) {\n      if (!(targetId in 
this._objects)) {\n        continue;\n      }\n\n      const target = this._objects[targetId];\n      
this.runActions(source, target, event, "Calculate");\n      this.runActions(target, target, event, 
"Validate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n      target.wrapped.value = 
event.value;\n      this.runActions(target, target, event, "Format");\n      target.wrapped.valueAsString = 
event.value;\n    }\n  }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/
  }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.FullScreen = void 
0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass 
FullScreen extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    
this._backgroundColor = [];\n    this._clickAdvances = true;\n    this._cursor = _constants.Cursor.hidden;\n  
  this._defaultTransition = "";\n    this._escapeExits = true;\n    this._isFullScreen = true;\n    
this._loop = false;\n    this._timeDelay = 3600;\n    this._usePageTiming = false;\n    this._useTimer = 
false;\n  }\n\n  get backgroundColor() {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(_) 
{}\n\n  get clickAdvances() {\n    return this._clickAdvances;\n  }\n\n  set clickAdvances(_) {}\n\n  get 
cursor() {\n    return this._cursor;\n  }\n\n  set cursor(_) {}\n\n  get defaultTransition
 () {\n    return this._defaultTransition;\n  }\n\n  set defaultTransition(_) {}\n\n  get escapeExits() {\n   
 return this._escapeExits;\n  }\n\n  set escapeExits(_) {}\n\n  get isFullScreen() {\n    return 
this._isFullScreen;\n  }\n\n  set isFullScreen(_) {}\n\n  get loop() {\n    return this._loop;\n  }\n\n  set 
loop(_) {}\n\n  get timeDelay() {\n    return this._timeDelay;\n  }\n\n  set timeDelay(_) {}\n\n  get 
transitions() {\n    return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", 
"SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", 
"BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n  }\n\n  set 
transitions(_) {\n    throw new Error("fullscreen.transitions is read-only");\n  }\n\n  get usePageTiming() 
{\n    return this._usePageTiming;\n  }\n\n  set usePageTiming(_) {}\n\n  get useTimer() {\n    return 
this._useTimer;\n  }\n\n  set useTimer(_) {}\n\n}\n\nex
 ports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, 
__w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Thermometer 
extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._cancelled = false;\n    
this._duration = 100;\n    this._text = "";\n    this._value = 0;\n  }\n\n  get cancelled() {\n    return 
this._cancelled;\n  }\n\n  set cancelled(_) {\n    throw new Error("thermometer.cancelled is read-only");\n  
}\n\n  get duration() {\n    return this._duration;\n  }\n\n  set duration(val) {\n    this._duration = 
val;\n  }\n\n  get text() {\n    return this._text;\n  }\n\n  set text(val) {\n    this._text = val;\n  }\n\n 
 get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  begin() 
{}\n\n  end() {}\n\n}\n\nexports.Thermometer = Thermome
 ter;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Console = void 
0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Console extends _pdf_object.PDFObject {\n  clear() 
{\n    this._send({\n      id: "clear"\n    });\n  }\n\n  hide() {}\n\n  println(msg) {\n    if (typeof msg 
=== "string") {\n      this._send({\n        command: "println",\n        value: "PDF.js Console:: " + msg\n  
    });\n    }\n  }\n\n  show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(7);\n\nvar 
_pdf_object = __w_pdfjs_require__(6);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n  stat
 ic get(obj, prop) {\n    return obj[prop.toLowerCase()];\n  }\n\n  static set(obj, prop, value) {\n    throw 
new Error(`doc.info.${prop} is read-only`);\n  }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n  
constructor(data) {\n    super(data);\n    this._expandos = globalThis;\n    this._baseURL = data.baseURL || 
"";\n    this._calculate = true;\n    this._delay = false;\n    this._dirty = false;\n    this._disclosed = 
false;\n    this._media = undefined;\n    this._metadata = data.metadata || "";\n    this._noautocomplete = 
undefined;\n    this._nocache = undefined;\n    this._spellDictionaryOrder = [];\n    
this._spellLanguageOrder = [];\n    this._printParams = null;\n    this._fields = new Map();\n    
this._fieldNames = [];\n    this._event = null;\n    this._author = data.Author || "";\n    this._creator = 
data.Creator || "";\n    this._creationDate = this._getDate(data.CreationDate) || null;\n    this._docID = 
data.docID || ["", ""];\n    this._documentFileName = data.fil
 ename || "";\n    this._filesize = data.filesize || 0;\n    this._keywords = data.Keywords || "";\n    
this._layout = data.layout || "";\n    this._modDate = this._getDate(data.ModDate) || null;\n    
this._numFields = 0;\n    this._numPages = data.numPages || 1;\n    this._pageNum = data.pageNum || 0;\n    
this._producer = data.Producer || "";\n    this._subject = data.Subject || "";\n    this._title = data.Title 
|| "";\n    this._URL = data.URL || "";\n    this._info = new Proxy({\n      title: this._title,\n      
author: this._author,\n      authors: data.authors || [this._author],\n      subject: this._subject,\n      
keywords: this._keywords,\n      creator: this._creator,\n      producer: this._producer,\n      
creationdate: this._creationDate,\n      moddate: this._modDate,\n      trapped: data.Trapped || "Unknown"\n  
  }, InfoProxyHandler);\n    this._zoomType = _constants.ZoomType.none;\n    this._zoom = data.zoom || 100;\n 
   this._actions = (0, _common.createActionsMap)(da
 ta.actions);\n    this._globalEval = data.globalEval;\n    this._pageActions = new Map();\n  }\n\n  
_dispatchDocEvent(name) {\n    if (name === "Open") {\n      const dontRun = new Set(["WillClose", 
"WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n      for (const actionName of 
this._actions.keys()) {\n        if (!dontRun.has(actionName)) {\n          this._runActions(actionName);\n   
     }\n      }\n\n      this._runActions("OpenAction");\n    } else {\n      this._runActions(name);\n    
}\n  }\n\n  _dispatchPageEvent(name, actions, pageNumber) {\n    if (name === "PageOpen") {\n      if 
(!this._pageActions.has(pageNumber)) {\n        this._pageActions.set(pageNumber, (0, 
_common.createActionsMap)(actions));\n      }\n\n      this._pageNum = pageNumber - 1;\n    }\n\n    actions 
= this._pageActions.get(pageNumber)?.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _runActions(name
 ) {\n    const actions = this._actions.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _addField(name, field) {\n    
this._fields.set(name, field);\n\n    this._fieldNames.push(name);\n\n    this._numFields++;\n  }\n\n  
_getDate(date) {\n    if (!date || date.length < 15 || !date.startsWith("D:")) {\n      return date;\n    
}\n\n    date = date.substring(2);\n    const year = date.substring(0, 4);\n    const month = 
date.substring(4, 6);\n    const day = date.substring(6, 8);\n    const hour = date.substring(8, 10);\n    
const minute = date.substring(10, 12);\n    const o = date.charAt(12);\n    let second, offsetPos;\n\n    if 
(o === "Z" || o === "+" || o === "-") {\n      second = "00";\n      offsetPos = 12;\n    } else {\n      
second = date.substring(12, 14);\n      offsetPos = 14;\n    }\n\n    const offset = 
date.substring(offsetPos).replaceAll("\'", "");\n    return new Date(`${year}-${month
 }-${day}T${hour}:${minute}:${second}${offset}`);\n  }\n\n  get author() {\n    return this._author;\n  }\n\n 
 set author(_) {\n    throw new Error("doc.author is read-only");\n  }\n\n  get baseURL() {\n    return 
this._baseURL;\n  }\n\n  set baseURL(baseURL) {\n    this._baseURL = baseURL;\n  }\n\n  get bookmarkRoot() 
{\n    return undefined;\n  }\n\n  set bookmarkRoot(_) {\n    throw new Error("doc.bookmarkRoot is 
read-only");\n  }\n\n  get calculate() {\n    return this._calculate;\n  }\n\n  set calculate(calculate) {\n  
  this._calculate = calculate;\n  }\n\n  get creator() {\n    return this._creator;\n  }\n\n  set creator(_) 
{\n    throw new Error("doc.creator is read-only");\n  }\n\n  get dataObjects() {\n    return [];\n  }\n\n  
set dataObjects(_) {\n    throw new Error("doc.dataObjects is read-only");\n  }\n\n  get delay() {\n    
return this._delay;\n  }\n\n  set delay(delay) {\n    this._delay = delay;\n  }\n\n  get dirty() {\n    
return this._dirty;\n  }\n\n  set dirty(dir
 ty) {\n    this._dirty = dirty;\n  }\n\n  get disclosed() {\n    return this._disclosed;\n  }\n\n  set 
disclosed(disclosed) {\n    this._disclosed = disclosed;\n  }\n\n  get docID() {\n    return this._docID;\n  
}\n\n  set docID(_) {\n    throw new Error("doc.docID is read-only");\n  }\n\n  get documentFileName() {\n    
return this._documentFileName;\n  }\n\n  set documentFileName(_) {\n    throw new Error("doc.documentFileName 
is read-only");\n  }\n\n  get dynamicXFAForm() {\n    return false;\n  }\n\n  set dynamicXFAForm(_) {\n    
throw new Error("doc.dynamicXFAForm is read-only");\n  }\n\n  get external() {\n    return true;\n  }\n\n  
set external(_) {\n    throw new Error("doc.external is read-only");\n  }\n\n  get filesize() {\n    return 
this._filesize;\n  }\n\n  set filesize(_) {\n    throw new Error("doc.filesize is read-only");\n  }\n\n  get 
hidden() {\n    return false;\n  }\n\n  set hidden(_) {\n    throw new Error("doc.hidden is read-only");\n  
}\n\n  get hostContainer()
  {\n    return undefined;\n  }\n\n  set hostContainer(_) {\n    throw new Error("doc.hostContainer is 
read-only");\n  }\n\n  get icons() {\n    return undefined;\n  }\n\n  set icons(_) {\n    throw new 
Error("doc.icons is read-only");\n  }\n\n  get info() {\n    return this._info;\n  }\n\n  set info(_) {\n    
throw new Error("doc.info is read-only");\n  }\n\n  get innerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set innerAppWindowRect(_) {\n    throw new Error("doc.innerAppWindowRect is read-only");\n  }\n\n  get 
innerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set innerDocWindowRect(_) {\n    throw new 
Error("doc.innerDocWindowRect is read-only");\n  }\n\n  get isModal() {\n    return false;\n  }\n\n  set 
isModal(_) {\n    throw new Error("doc.isModal is read-only");\n  }\n\n  get keywords() {\n    return 
this._keywords;\n  }\n\n  set keywords(_) {\n    throw new Error("doc.keywords is read-only");\n  }\n\n  get 
layout() {\n    return this._layout;\n  }\n\n  set
  layout(value) {\n    if (typeof value !== "string") {\n      return;\n    }\n\n    if (value !== 
"SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== 
"TwoColumnRight" && value !== "TwoPageRight") {\n      value = "SinglePage";\n    }\n\n    this._send({\n     
 command: "layout",\n      value\n    });\n\n    this._layout = value;\n  }\n\n  get media() {\n    return 
this._media;\n  }\n\n  set media(media) {\n    this._media = media;\n  }\n\n  get metadata() {\n    return 
this._metadata;\n  }\n\n  set metadata(metadata) {\n    this._metadata = metadata;\n  }\n\n  get modDate() 
{\n    return this._modDate;\n  }\n\n  set modDate(_) {\n    throw new Error("doc.modDate is read-only");\n  
}\n\n  get mouseX() {\n    return 0;\n  }\n\n  set mouseX(_) {\n    throw new Error("doc.mouseX is 
read-only");\n  }\n\n  get mouseY() {\n    return 0;\n  }\n\n  set mouseY(_) {\n    throw new 
Error("doc.mouseY is read-only");\n  }\n\n  get noautocompl
 ete() {\n    return this._noautocomplete;\n  }\n\n  set noautocomplete(noautocomplete) {\n    
this._noautocomplete = noautocomplete;\n  }\n\n  get nocache() {\n    return this._nocache;\n  }\n\n  set 
nocache(nocache) {\n    this._nocache = nocache;\n  }\n\n  get numFields() {\n    return this._numFields;\n  
}\n\n  set numFields(_) {\n    throw new Error("doc.numFields is read-only");\n  }\n\n  get numPages() {\n    
return this._numPages;\n  }\n\n  set numPages(_) {\n    throw new Error("doc.numPages is read-only");\n  
}\n\n  get numTemplates() {\n    return 0;\n  }\n\n  set numTemplates(_) {\n    throw new 
Error("doc.numTemplates is read-only");\n  }\n\n  get outerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set outerAppWindowRect(_) {\n    throw new Error("doc.outerAppWindowRect is read-only");\n  }\n\n  get 
outerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set outerDocWindowRect(_) {\n    throw new 
Error("doc.outerDocWindowRect is read-only");\n  }\n\n  get pageN
 um() {\n    return this._pageNum;\n  }\n\n  set pageNum(value) {\n    if (typeof value !== "number" || value 
< 0 || value >= this._numPages) {\n      return;\n    }\n\n    this._send({\n      command: "page-num",\n     
 value\n    });\n\n    this._pageNum = value;\n  }\n\n  get pageWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set pageWindowRect(_) {\n    throw new Error("doc.pageWindowRect is read-only");\n  }\n\n  get path() 
{\n    return "";\n  }\n\n  set path(_) {\n    throw new Error("doc.path is read-only");\n  }\n\n  get 
permStatusReady() {\n    return true;\n  }\n\n  set permStatusReady(_) {\n    throw new 
Error("doc.permStatusReady is read-only");\n  }\n\n  get producer() {\n    return this._producer;\n  }\n\n  
set producer(_) {\n    throw new Error("doc.producer is read-only");\n  }\n\n  get requiresFullSave() {\n    
return false;\n  }\n\n  set requiresFullSave(_) {\n    throw new Error("doc.requiresFullSave is 
read-only");\n  }\n\n  get securityHandler() {\n    retur
 n null;\n  }\n\n  set securityHandler(_) {\n    throw new Error("doc.securityHandler is read-only");\n  
}\n\n  get selectedAnnots() {\n    return [];\n  }\n\n  set selectedAnnots(_) {\n    throw new 
Error("doc.selectedAnnots is read-only");\n  }\n\n  get sounds() {\n    return [];\n  }\n\n  set sounds(_) 
{\n    throw new Error("doc.sounds is read-only");\n  }\n\n  get spellDictionaryOrder() {\n    return 
this._spellDictionaryOrder;\n  }\n\n  set spellDictionaryOrder(spellDictionaryOrder) {\n    
this._spellDictionaryOrder = spellDictionaryOrder;\n  }\n\n  get spellLanguageOrder() {\n    return 
this._spellLanguageOrder;\n  }\n\n  set spellLanguageOrder(spellLanguageOrder) {\n    
this._spellLanguageOrder = spellLanguageOrder;\n  }\n\n  get subject() {\n    return this._subject;\n  }\n\n  
set subject(_) {\n    throw new Error("doc.subject is read-only");\n  }\n\n  get templates() {\n    return 
[];\n  }\n\n  set templates(_) {\n    throw new Error("doc.templates is read-only");\n  }\n\n 
  get title() {\n    return this._title;\n  }\n\n  set title(_) {\n    throw new Error("doc.title is 
read-only");\n  }\n\n  get URL() {\n    return this._URL;\n  }\n\n  set URL(_) {\n    throw new 
Error("doc.URL is read-only");\n  }\n\n  get viewState() {\n    return undefined;\n  }\n\n  set viewState(_) 
{\n    throw new Error("doc.viewState is read-only");\n  }\n\n  get xfa() {\n    return this._xfa;\n  }\n\n  
set xfa(_) {\n    throw new Error("doc.xfa is read-only");\n  }\n\n  get XFAForeground() {\n    return 
false;\n  }\n\n  set XFAForeground(_) {\n    throw new Error("doc.XFAForeground is read-only");\n  }\n\n  get 
zoomType() {\n    return this._zoomType;\n  }\n\n  set zoomType(type) {\n    if (typeof type !== "string") 
{\n      return;\n    }\n\n    switch (type) {\n      case _constants.ZoomType.none:\n        this._send({\n  
        command: "zoom",\n          value: 1\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitP:\n        this._send({\n          comm
 and: "zoom",\n          value: "page-fit"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitW:\n        this._send({\n          command: "zoom",\n          value: "page-width"\n  
      });\n\n        break;\n\n      case _constants.ZoomType.fitH:\n        this._send({\n          command: 
"zoom",\n          value: "page-height"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitV:\n        this._send({\n          command: "zoom",\n          value: "auto"\n        
});\n\n        break;\n\n      case _constants.ZoomType.pref:\n      case _constants.ZoomType.refW:\n        
break;\n\n      default:\n        return;\n    }\n\n    this._zoomType = type;\n  }\n\n  get zoom() {\n    
return this._zoom;\n  }\n\n  set zoom(value) {\n    if (typeof value !== "number" || value < 8.33 || value > 
6400) {\n      return;\n    }\n\n    this._send({\n      command: "zoom",\n      value: value / 100\n    
});\n  }\n\n  addAnnot() {}\n\n  addField() {}\n\n  addIcon() {}\
 n\n  addLink() {}\n\n  addRecipientListCryptFilter() {}\n\n  addRequirement() {}\n\n  addScript() {}\n\n  
addThumbnails() {}\n\n  addWatermarkFromFile() {}\n\n  addWatermarkFromText() {}\n\n  addWeblinks() {}\n\n  
bringToFront() {}\n\n  calculateNow() {\n    this._eventDispatcher.calculateNow();\n  }\n\n  closeDoc() 
{}\n\n  colorConvertPage() {}\n\n  createDataObject() {}\n\n  createTemplate() {}\n\n  deletePages() {}\n\n  
deleteSound() {}\n\n  embedDocAsDataObject() {}\n\n  embedOutputIntent() {}\n\n  encryptForRecipients() 
{}\n\n  encryptUsingPolicy() {}\n\n  exportAsFDF() {}\n\n  exportAsFDFStr() {}\n\n  exportAsText() {}\n\n  
exportAsXFDF() {}\n\n  exportAsXFDFStr() {}\n\n  exportDataObject() {}\n\n  exportXFAData() {}\n\n  
extractPages() {}\n\n  flattenPages() {}\n\n  getAnnot() {}\n\n  getAnnots() {}\n\n  getAnnot3D() {}\n\n  
getAnnots3D() {}\n\n  getColorConvertAction() {}\n\n  getDataObject() {}\n\n  getDataObjectContents() {}\n\n  
getField(cName) {\n    if (typeof cName !==
  "string") {\n      throw new TypeError("Invalid field name: must be a string");\n    }\n\n    const 
searchedField = this._fields.get(cName);\n\n    if (searchedField) {\n      return searchedField;\n    }\n\n  
  for (const [name, field] of this._fields.entries()) {\n      if (name.includes(cName)) {\n        return 
field;\n      }\n    }\n\n    return undefined;\n  }\n\n  getIcon() {}\n\n  getLegalWarnings() {}\n\n  
getLinks() {}\n\n  getNthFieldName(nIndex) {\n    if (typeof nIndex !== "number") {\n      throw new 
TypeError("Invalid field index: must be a number");\n    }\n\n    if (0 <= nIndex && nIndex < this.numFields) 
{\n      return this._fieldNames[Math.trunc(nIndex)];\n    }\n\n    return null;\n  }\n\n  getNthTemplate() 
{\n    return null;\n  }\n\n  getOCGs() {}\n\n  getOCGOrder() {}\n\n  getPageBox() {}\n\n  getPageLabel() 
{}\n\n  getPageNthWord() {}\n\n  getPageNthWordQuads() {}\n\n  getPageNumWords() {}\n\n  getPageRotation() 
{}\n\n  getPageTransition() {}\n\n  getPrint
 Params() {\n    if (!this._printParams) {\n      this._printParams = new _print_params.PrintParams({\n       
 lastPage: this._numPages - 1\n      });\n    }\n\n    return this._printParams;\n  }\n\n  getSound() {}\n\n  
getTemplate() {}\n\n  getURL() {}\n\n  gotoNamedDest() {}\n\n  importAnFDF() {}\n\n  importAnXFDF() {}\n\n  
importDataObject() {}\n\n  importIcon() {}\n\n  importSound() {}\n\n  importTextData() {}\n\n  
importXFAData() {}\n\n  insertPages() {}\n\n  mailDoc() {}\n\n  mailForm() {}\n\n  movePage() {}\n\n  
newPage() {}\n\n  openDataObject() {}\n\n  print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, 
bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\n   
 if (printParams) {\n      nStart = printParams.firstPage;\n      nEnd = printParams.lastPage;\n    }\n\n    
if (typeof nStart === "number") {\n      nStart = Math.max(0, Math.trunc(nStart));\n    } else {\n      
nStart = 0;\n    }\n\n    if (typeof nEnd === "nu
 mber") {\n      nEnd = Math.max(0, Math.trunc(nEnd));\n    } else {\n      nEnd = -1;\n    }\n\n    
this._send({\n      command: "print",\n      start: nStart,\n      end: nEnd\n    });\n  }\n\n  
removeDataObject() {}\n\n  removeField() {}\n\n  removeIcon() {}\n\n  removeLinks() {}\n\n  
removeRequirement() {}\n\n  removeScript() {}\n\n  removeTemplate() {}\n\n  removeThumbnails() {}\n\n  
removeWeblinks() {}\n\n  replacePages() {}\n\n  resetForm(aFields = null) {\n    let mustCalculate = 
false;\n\n    if (aFields) {\n      for (const fieldName of aFields) {\n        const field = 
this.getField(fieldName);\n\n        if (field) {\n          field.value = field.defaultValue;\n          
field.valueAsString = field.value;\n          mustCalculate = true;\n        }\n      }\n    } else {\n      
mustCalculate = this._fields.size !== 0;\n\n      for (const field of this._fields.values()) {\n        
field.value = field.defaultValue;\n        field.valueAsString = field.value;\n      }\n    
 }\n\n    if (mustCalculate) {\n      this.calculateNow();\n    }\n  }\n\n  saveAs() {}\n\n  scroll() {}\n\n  
selectPageNthWord() {}\n\n  setAction() {}\n\n  setDataObjectContents() {}\n\n  setOCGOrder() {}\n\n  
setPageAction() {}\n\n  setPageBoxes() {}\n\n  setPageLabels() {}\n\n  setPageRotations() {}\n\n  
setPageTabOrder() {}\n\n  setPageTransitions() {}\n\n  spawnPageFromTemplate() {}\n\n  submitForm() {}\n\n  
syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n  constructor(data) {\n    this.binaryOk = 
true;\n    this.bitmapDPI = 150;\n    this.booklet = {\n      binding: 0,\n      duplexMode: 0,\n      
subsetFrom: 0,\n      subsetTo: -1\n    };\n    this.colorOverride = 0;\n    this.colorProfile = "";\n    
this.constants = Object.freeze({\n      bookletBindings: Object.freeze({\n      
   Left: 0,\n        Right: 1,\n        LeftTall: 2,\n        RightTall: 3\n      }),\n      
bookletDuplexMode: Object.freeze({\n        BothSides: 0,\n        FrontSideOnly: 1,\n        BasicSideOnly: 
2\n      }),\n      colorOverrides: Object.freeze({\n        auto: 0,\n        gray: 1,\n        mono: 2\n    
  }),\n      fontPolicies: Object.freeze({\n        everyPage: 0,\n        jobStart: 1,\n        pageRange: 
2\n      }),\n      handling: Object.freeze({\n        none: 0,\n        fit: 1,\n        shrink: 2,\n        
tileAll: 3,\n        tileLarge: 4,\n        nUp: 5,\n        booklet: 6\n      }),\n      interactionLevel: 
Object.freeze({\n        automatic: 0,\n        full: 1,\n        silent: 2\n      }),\n      nUpPageOrders: 
Object.freeze({\n        Horizontal: 0,\n        HorizontalReversed: 1,\n        Vertical: 2\n      }),\n     
 printContents: Object.freeze({\n        doc: 0,\n        docAndComments: 1,\n        formFieldsOnly: 2\n     
 }),\n      flagValues: Object.
 freeze({\n        applyOverPrint: 1,\n        applySoftProofSettings: 1 << 1,\n        
applyWorkingColorSpaces: 1 << 2,\n        emitHalftones: 1 << 3,\n        emitPostScriptXObjects: 1 << 4,\n   
     emitFormsAsPSForms: 1 << 5,\n        maxJP2KRes: 1 << 6,\n        setPageSize: 1 << 7,\n        
suppressBG: 1 << 8,\n        suppressCenter: 1 << 9,\n        suppressCJKFontSubst: 1 << 10,\n        
suppressCropClip: 1 << 1,\n        suppressRotate: 1 << 12,\n        suppressTransfer: 1 << 13,\n        
suppressUCR: 1 << 14,\n        useTrapAnnots: 1 << 15,\n        usePrintersMarks: 1 << 16\n      }),\n      
rasterFlagValues: Object.freeze({\n        textToOutline: 1,\n        strokesToOutline: 1 << 1,\n        
allowComplexClip: 1 << 2,\n        preserveOverprint: 1 << 3\n      }),\n      subsets: Object.freeze({\n     
   all: 0,\n        even: 1,\n        odd: 2\n      }),\n      tileMarks: Object.freeze({\n        none: 0,\n 
       west: 1,\n        east: 2\n      }),\n      usages: 
 Object.freeze({\n        auto: 0,\n        use: 1,\n        noUse: 2\n      })\n    });\n    
this.downloadFarEastFonts = false;\n    this.fileName = "";\n    this.firstPage = 0;\n    this.flags = 0;\n   
 this.fontPolicy = 0;\n    this.gradientDPI = 150;\n    this.interactive = 1;\n    this.lastPage = 
data.lastPage;\n    this.npUpAutoRotate = false;\n    this.npUpNumPagesH = 2;\n    this.npUpNumPagesV = 2;\n  
  this.npUpPageBorder = false;\n    this.npUpPageOrder = 0;\n    this.pageHandling = 0;\n    this.pageSubset 
= 0;\n    this.printAsImage = false;\n    this.printContent = 0;\n    this.printerName = "";\n    
this.psLevel = 0;\n    this.rasterFlags = 0;\n    this.reversePages = false;\n    this.tileLabel = false;\n   
 this.tileMark = 0;\n    this.tileOverlap = 0;\n    this.tileScale = 1.0;\n    this.transparencyLevel = 75;\n 
   this.usePrinterCRD = 0;\n    this.useT1Conversion = 0;\n  }\n\n}\n\nexports.PrintParams = 
PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_mod
 ule, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n  get(obj, prop) {\n    if (prop in 
obj._expandos) {\n      const val = obj._expandos[prop];\n\n      if (typeof val === "function") {\n        
return val.bind(obj);\n      }\n\n      return val;\n    }\n\n    if (typeof prop === "string" && 
!prop.startsWith("_") && prop in obj) {\n      const val = obj[prop];\n\n      if (typeof val === "function") 
{\n        return val.bind(obj);\n      }\n\n      return val;\n    }\n\n    return undefined;\n  }\n\n  
set(obj, prop, value) {\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      
const old = obj[prop];\n      obj[prop] = value;\n\n      if (obj._send && obj._id !== null && typeof old !== 
"function") {\n        const data = {\n          id: obj._id\n        };\n        data[prop] = obj[prop];\n\n 
       obj._send(data);\n      }\n    } else {\n      obj._e
 xpandos[prop] = value;\n    }\n\n    return true;\n  }\n\n  has(obj, prop) {\n    return prop in 
obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n  }\n\n  
getPrototypeOf(obj) {\n    return null;\n  }\n\n  setPrototypeOf(obj, proto) {\n    return false;\n  }\n\n  
isExtensible(obj) {\n    return true;\n  }\n\n  preventExtensions(obj) {\n    return false;\n  }\n\n  
getOwnPropertyDescriptor(obj, prop) {\n    if (prop in obj._expandos) {\n      return {\n        
configurable: true,\n        enumerable: true,\n        value: obj._expandos[prop]\n      };\n    }\n\n    if 
(typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      return {\n        configurable: 
true,\n        enumerable: true,\n        value: obj[prop]\n      };\n    }\n\n    return undefined;\n  }\n\n 
 defineProperty(obj, key, descriptor) {\n    Object.defineProperty(obj._expandos, key, descriptor);\n    
return true;\n  }\n\n  deleteProperty(obj, prop) {\n    if (prop in
  obj._expandos) {\n      delete obj._expandos[prop];\n    }\n  }\n\n  ownKeys(obj) {\n    const fromExpandos 
= Reflect.ownKeys(obj._expandos);\n    const fromObj = Reflect.ownKeys(obj).filter(k => 
!k.startsWith("_"));\n    return fromExpandos.concat(fromObj);\n  }\n\n}\n\nexports.ProxyHandler = 
ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Util = void 0;\n\nvar 
_pdf_object = __w_pdfjs_require__(6);\n\nclass Util extends _pdf_object.PDFObject {\n  constructor(data) {\n  
  super(data);\n    this._scandCache = new Map();\n    this._months = ["January", "February", "March", 
"April", "May", "June", "July", "August", "September", "October", "November", "December"];\n    this._days = 
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n    this.MILLISECONDS_IN_DAY 
= 86400000;\n    this.MILLISECONDS_IN_WEEK = 604800000;\
 n    this._externalCall = data.externalCall;\n  }\n\n  printf(...args) {\n    if (args.length === 0) {\n     
 throw new Error("Invalid number of params in printf");\n    }\n\n    if (typeof args[0] !== "string") {\n    
  throw new TypeError("First argument of printf must be a string");\n    }\n\n    const pattern = 
/%(,[0-4])?([+ 0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n    const PLUS = 1;\n    const SPACE = 2;\n    const ZERO = 
4;\n    const HASH = 8;\n    let i = 0;\n    return args[0].replace(pattern, function (match, nDecSep, 
cFlags, nWidth, nPrecision, cConvChar) {\n      if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== 
"s" && cConvChar !== "x") {\n        const buf = ["%"];\n\n        for (const str of [nDecSep, cFlags, 
nWidth, nPrecision, cConvChar]) {\n          if (str) {\n            buf.push(str);\n          }\n        
}\n\n        return buf.join("");\n      }\n\n      i++;\n\n      if (i === args.length) {\n        throw new 
Error("Not enough arguments in printf");
 \n      }\n\n      const arg = args[i];\n\n      if (cConvChar === "s") {\n        return arg.toString();\n  
    }\n\n      let flags = 0;\n\n      if (cFlags) {\n        for (const flag of cFlags) {\n          switch 
(flag) {\n            case "+":\n              flags |= PLUS;\n              break;\n\n            case " 
":\n              flags |= SPACE;\n              break;\n\n            case "0":\n              flags |= 
ZERO;\n              break;\n\n            case "#":\n              flags |= HASH;\n              break;\n    
      }\n        }\n      }\n\n      cFlags = flags;\n\n      if (nWidth) {\n        nWidth = 
parseInt(nWidth);\n      }\n\n      let intPart = Math.trunc(arg);\n\n      if (cConvChar === "x") {\n        
let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n        if (nWidth !== undefined) {\n          hex 
= hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n        }\n\n        if (cFlags & HASH) {\n          hex 
= `0x${hex}`;\n        }\n\n       
  return hex;\n      }\n\n      if (nPrecision) {\n        nPrecision = parseInt(nPrecision.substring(1));\n  
    }\n\n      nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n      const separators = {\n        0: [",", 
"."],\n        1: ["", "."],\n        2: [".", ","],\n        3: ["", ","],\n        4: ["\'", "."]\n      
};\n      const [thousandSep, decimalSep] = separators[nDecSep];\n      let decPart = "";\n\n      if 
(cConvChar === "f") {\n        if (nPrecision !== undefined) {\n          decPart = Math.abs(arg - 
intPart).toFixed(nPrecision);\n        } else {\n          decPart = Math.abs(arg - intPart).toString();\n    
    }\n\n        if (decPart.length > 2) {\n          decPart = `${decimalSep}${decPart.substring(2)}`;\n     
   } else if (cFlags & HASH) {\n          decPart = ".";\n        } else {\n          decPart = "";\n        
}\n      }\n\n      let sign = "";\n\n      if (intPart < 0) {\n        sign = "-";\n        intPart = 
-intPart;\n      } else if (cFlags & PL
 US) {\n        sign = "+";\n      } else if (cFlags & SPACE) {\n        sign = " ";\n      }\n\n      if 
(thousandSep && intPart >= 1000) {\n        const buf = [];\n\n        while (true) {\n          
buf.push((intPart % 1000).toString().padStart(3, "0"));\n          intPart = Math.trunc(intPart / 1000);\n\n  
        if (intPart < 1000) {\n            buf.push(intPart.toString());\n            break;\n          }\n   
     }\n\n        intPart = buf.reverse().join(thousandSep);\n      } else {\n        intPart = 
intPart.toString();\n      }\n\n      let n = `${intPart}${decPart}`;\n\n      if (nWidth !== undefined) {\n  
      n = n.padStart(nWidth - sign.length, cFlags & ZERO ? "0" : " ");\n      }\n\n      return 
`${sign}${n}`;\n    });\n  }\n\n  iconStreamFromIcon() {}\n\n  printd(cFormat, oDate) {\n    switch (cFormat) 
{\n      case 0:\n        return this.printd("D:yyyymmddHHMMss", oDate);\n\n      case 1:\n        return 
this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n      case 
 2:\n        return this.printd("m/d/yy h:MM:ss tt", oDate);\n    }\n\n    const handlers = {\n      mmmm: 
data => {\n        return this._months[data.month];\n      },\n      mmm: data => {\n        return 
this._months[data.month].substring(0, 3);\n      },\n      mm: data => {\n        return (data.month + 
1).toString().padStart(2, "0");\n      },\n      m: data => {\n        return (data.month + 1).toString();\n  
    },\n      dddd: data => {\n        return this._days[data.dayOfWeek];\n      },\n      ddd: data => {\n   
     return this._days[data.dayOfWeek].substring(0, 3);\n      },\n      dd: data => {\n        return 
data.day.toString().padStart(2, "0");\n      },\n      d: data => {\n        return data.day.toString();\n    
  },\n      yyyy: data => {\n        return data.year.toString();\n      },\n      yy: data => {\n        
return (data.year % 100).toString().padStart(2, "0");\n      },\n      HH: data => {\n        return 
data.hours.toString().padStart(2, "0");\n      }
 ,\n      H: data => {\n        return data.hours.toString();\n      },\n      hh: data => {\n        return 
(1 + (data.hours + 11) % 12).toString().padStart(2, "0");\n      },\n      h: data => {\n        return (1 + 
(data.hours + 11) % 12).toString();\n      },\n      MM: data => {\n        return 
data.minutes.toString().padStart(2, "0");\n      },\n      M: data => {\n        return 
data.minutes.toString();\n      },\n      ss: data => {\n        return data.seconds.toString().padStart(2, 
"0");\n      },\n      s: data => {\n        return data.seconds.toString();\n      },\n      tt: data => {\n 
       return data.hours < 12 ? "am" : "pm";\n      },\n      t: data => {\n        return data.hours < 12 ? 
"a" : "p";\n      }\n    };\n    const data = {\n      year: oDate.getFullYear(),\n      month: 
oDate.getMonth(),\n      day: oDate.getDate(),\n      dayOfWeek: oDate.getDay(),\n      hours: 
oDate.getHours(),\n      minutes: oDate.getMinutes(),\n      seconds: oDate.getSeconds()\n 
    };\n    const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n    
return cFormat.replace(patterns, function (match, pattern) {\n      if (pattern in handlers) {\n        
return handlers[pattern](data);\n      }\n\n      return pattern.charCodeAt(1);\n    });\n  }\n\n  
printx(cFormat, cSource) {\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n    
const buf = [];\n    let i = 0;\n    const ii = cSource.length;\n    let currCase = handlers[0];\n    let 
escaped = false;\n\n    for (const command of cFormat) {\n      if (escaped) {\n        buf.push(command);\n  
      escaped = false;\n        continue;\n      }\n\n      if (i >= ii) {\n        break;\n      }\n\n      
switch (command) {\n        case "?":\n          buf.push(currCase(cSource.charAt(i++)));\n          
break;\n\n        case "X":\n          while (i < ii) {\n            const char = cSource.charAt(i++);\n\n    
        if ("a" <= char && char <= "z" || "A
 " <= char && char <= "Z" || "0" <= char && char <= "9") {\n              buf.push(currCase(char));\n         
     break;\n            }\n          }\n\n          break;\n\n        case "A":\n          while (i < ii) 
{\n            const char = cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char 
&& char <= "Z") {\n              buf.push(currCase(char));\n              break;\n            }\n          
}\n\n          break;\n\n        case "9":\n          while (i < ii) {\n            const char = 
cSource.charAt(i++);\n\n            if ("0" <= char && char <= "9") {\n              buf.push(char);\n        
      break;\n            }\n          }\n\n          break;\n\n        case "*":\n          while (i < ii) 
{\n            buf.push(currCase(cSource.charAt(i++)));\n          }\n\n          break;\n\n        case 
"\\\\":\n          escaped = true;\n          break;\n\n        case ">":\n          currCase = 
handlers[1];\n          break;\n\n        case "
 <":\n          currCase = handlers[2];\n          break;\n\n        case "=":\n          currCase = 
handlers[0];\n          break;\n\n        default:\n          buf.push(command);\n      }\n    }\n\n    
return buf.join("");\n  }\n\n  scand(cFormat, cDate) {\n    switch (cFormat) {\n      case 0:\n        return 
this.scand("D:yyyymmddHHMMss", cDate);\n\n      case 1:\n        return this.scand("yyyy.mm.dd HH:MM:ss", 
cDate);\n\n      case 2:\n        return this.scand("m/d/yy h:MM:ss tt", cDate);\n    }\n\n    if 
(!this._scandCache.has(cFormat)) {\n      const months = this._months;\n      const days = this._days;\n      
const handlers = {\n        mmmm: {\n          pattern: `(${months.join("|")})`,\n          action: (value, 
data) => {\n            data.month = months.indexOf(value);\n          }\n        },\n        mmm: {\n        
  pattern: `(${months.map(month => month.substring(0, 3)).join("|")})`,\n          action: (value, data) => 
{\n            data.month = months.findInde
 x(month => month.substring(0, 3) === value);\n          }\n        },\n        mm: {\n          pattern: 
`([0-9]{2})`,\n          action: (value, data) => {\n            data.month = parseInt(value) - 1;\n          
}\n        },\n        m: {\n          pattern: `([0-9]{1,2})`,\n          action: (value, data) => {\n       
     data.month = parseInt(value) - 1;\n          }\n        },\n        dddd: {\n          pattern: 
`(${days.join("|")})`,\n          action: (value, data) => {\n            data.day = days.indexOf(value);\n   
       }\n        },\n        ddd: {\n          pattern: `(${days.map(day => day.substring(0, 
3)).join("|")})`,\n          action: (value, data) => {\n            data.day = days.findIndex(day => 
day.substring(0, 3) === value);\n          }\n        },\n        dd: {\n          pattern: "([0-9]{2})",\n   
       action: (value, data) => {\n            data.day = parseInt(value);\n          }\n        },\n        
d: {\n          pattern: "([0-9]{1,2})",\n    
       action: (value, data) => {\n            data.day = parseInt(value);\n          }\n        },\n        
yyyy: {\n          pattern: "([0-9]{4})",\n          action: (value, data) => {\n            data.year = 
parseInt(value);\n          }\n        },\n        yy: {\n          pattern: "([0-9]{2})",\n          action: 
(value, data) => {\n            data.year = 2000 + parseInt(value);\n          }\n        },\n        HH: {\n 
         pattern: "([0-9]{2})",\n          action: (value, data) => {\n            data.hours = 
parseInt(value);\n          }\n        },\n        H: {\n          pattern: "([0-9]{1,2})",\n          
action: (value, data) => {\n            data.hours = parseInt(value);\n          }\n        },\n        hh: 
{\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n            data.hours = 
parseInt(value);\n          }\n        },\n        h: {\n          pattern: "([0-9]{1,2})",\n          
action: (value, data) => {\n            data.hours = p
 arseInt(value);\n          }\n        },\n        MM: {\n          pattern: "([0-9]{2})",\n          action: 
(value, data) => {\n            data.minutes = parseInt(value);\n          }\n        },\n        M: {\n      
    pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.minutes = 
parseInt(value);\n          }\n        },\n        ss: {\n          pattern: "([0-9]{2})",\n          action: 
(value, data) => {\n            data.seconds = parseInt(value);\n          }\n        },\n        s: {\n      
    pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.seconds = 
parseInt(value);\n          }\n        },\n        tt: {\n          pattern: "([aApP][mM])",\n          
action: (value, data) => {\n            const char = value.charAt(0);\n            data.am = char === "a" || 
char === "A";\n          }\n        },\n        t: {\n          pattern: "([aApP])",\n          action: 
(value, data) => {\n            data.am = value ===
  "a" || value === "A";\n          }\n        }\n      };\n      const escapedFormat = 
cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n      const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n      const actions = [];\n      const re 
= escapedFormat.replace(patterns, function (match, patternElement) {\n        const {\n          pattern,\n   
       action\n        } = handlers[patternElement];\n        actions.push(action);\n        return 
pattern;\n      });\n\n      this._scandCache.set(cFormat, [new RegExp(re, "g"), actions]);\n    }\n\n    
const [regexForFormat, actions] = this._scandCache.get(cFormat);\n\n    const matches = 
regexForFormat.exec(cDate);\n\n    if (matches.length !== actions.length + 1) {\n      throw new 
Error("Invalid date in util.scand");\n    }\n\n    const data = {\n      year: 0,\n      month: 0,\n      
day: 0,\n      hours: 0,\n      minutes: 0,\n      seconds: 0,\n      am: null\n    };\n    
actions.forEach((actio
 n, i) => action(matches[i + 1], data));\n\n    if (data.am !== null) {\n      data.hours = data.hours % 12 + 
(data.am ? 0 : 12);\n    }\n\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, 
data.seconds);\n  }\n\n  spansToXML() {}\n\n  stringFromStream() {}\n\n  xmlToSpans() {}\n\n}\n\nexports.Util 
= Util;\n\n/***/ })\n/******/ 
\t]);\n/************************************************************************/\n/******/ \t// The module 
cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require 
function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in 
cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn 
__webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it 
into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no 
module.id needed\n/******/ \t\t\t// no m
 odule.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the 
module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, 
__w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn 
module.exports;\n/******/ \t}\n/******/ 
\t\n/************************************************************************/\n/******/ \t// module exports 
must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry 
module and return exports\n/******/ \treturn __w_pdfjs_require__(0);\n/******/ })()\n;\n});', 
`pdfjsScripting.initSandbox({ data: ${sandboxData} })`];
+
+    if (!TESTING) {
+      code.push("delete dump;");
+    } else {
+      code.unshift(`globalThis.sendResultForTesting = callExternalFunction.bind(null, "send");`);
+    }
+
+    let success = false;
+
+    try {
+      success = !!this._module.ccall("init", "number", ["string", "number"], [code.join("\n"), 
this._alertOnError]);
+    } catch (error) {
+      console.error(error);
+    }
+
+    if (success) {
+      this.support.commFun = this._module.cwrap("commFun", null, ["string", "string"]);
+    } else {
+      this.nukeSandbox();
+      throw new Error("Cannot start sandbox");
+    }
+  }
+
+  dispatchEvent(event) {
+    this.support.callSandboxFunction("dispatchEvent", event);
+  }
+
+  dumpMemoryUse() {
+    if (this._module) {
+      this._module.ccall("dumpMemoryUse", null, []);
+    }
+  }
+
+  nukeSandbox() {
+    if (this._module !== null) {
+      this.support.destroy();
+      this.support = null;
+
+      this._module.ccall("nukeSandbox", null, []);
+
+      this._module = null;
+    }
+  }
+
+  evalForTesting(code, key) {
+    if (TESTING) {
+      this._module.ccall("evalInSandbox", null, ["string", "int"], [`try {
+             sendResultForTesting([{ id: "${key}", result: ${code} }]);
+          } catch (error) {
+             sendResultForTesting([{ id: "${key}", result: error.message }]);
+          }`, this._alertOnError]);
+    }
+  }
+
+}
+
+function QuickJSSandbox() {
+  return (0, _quickjsEval.default)().then(module => {
+    return new Sandbox(window, module);
+  });
+}
+
+/***/ }),
+/* 1 */
+/***/ ((__unused_webpack_module, exports) => {
+
+Object.defineProperty(exports, "__esModule", ({value:true}));exports.default=void 0;var 
Module=function(){var _scriptDir=typeof 
document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return 
function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h,n;b.ready=new 
Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var 
t="";"undefined"!==typeof 
document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var
 aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in 
q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var 
noExitRuntime;b.noExitRuntime&&(noExitRuntime=b.noExitRuntime);"object"!==typeof WebAssembly&&w("no native 
wasm support detected");var x,y=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown 
function 
 "+(a+", make sure it is exported"));return c;}function B(a,c,d,e){var f={string:function(l){var 
p=0;if(null!==l&&void 0!==l&&0!==l){var W=(l.length<<2)+1;p=C(W);D(l,E,p,W);}return p;},array:function(l){var 
p=C(l.length);F.set(l,p);return p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var 
z=f[d[m]];z?(0===a&&(a=G()),k[m]=z(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return
 d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function ba(a,c,d){var 
e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.decode(a.subarray(c,d));for(e="";c<d;){var 
f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var 
k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else
 e+=String.fromCharCode(f);}return e;}function H(a){return a?ba(E,a,vo
 id 0):"";}function D(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var 
g=a.charCodeAt(f);if(55296<=g&&57343>=g){var 
k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function
 ca(a){for(var c=0,d=0;d<a.length;++d){var 
e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return
 c;}function da(a){var c=ca(a)+1,d=K(c);d&&D(a,F,d,c);return d;}var 
L,F,E,M,N=b.INITIAL_MEMORY||16777216;b.wasmMemory?x=b.wasmMemory:x=new 
WebAssembly.Memory({initial:N/65536,maximum:N/65536});x&&(L=x.buffer);N=L.byteLength;var 
O=L;L=O;b.HEAP8=F=new Int8Array(O);b.HEAP16=new Int16Array(O);b.HEAP32=M=new Int32Array(O);b.HEAPU8=E=new 
Uint8Array(O);b.HEAPU16=new Uint16Array(O);b.HEAPU32=new Uin
 t32Array(O);b.HEAPF32=new Float32Array(O);b.HEAPF64=new Float64Array(O);var 
P,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}var 
Q=0,R=null,S=null;b.preloadedImages={};b.preloadedAudios={};function 
w(a){if(b.onAbort)b.onAbort(a);u(a);y=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s 
ASSERTIONS=1 for more info.");n(a);throw a;}function T(a){return 
String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var
 
U="data:application/octet-stream;base64,AGFzbQEAAAABpQd5YAN/f38Bf2ACf38Bf2AEf35/fwF+YAJ/fwBgAX8Bf2ADf39/AGAFf35/f38BfmABfwBgAn9+AX5gBH9/f38Bf2ACf34Bf2ABfAF8YAJ/fwF+YAJ/fgBgA39/fgF/YAF+AX9gA39+fwF+YAN/fn8AYAN/fn8Bf2AFf39/f38Bf2AGf35/f39/AX5gA39/fwF+YAN/fn4BfmAGf35+f39/AX5gBH9/fn8Bf2AGf39/f39/AX9gAX8BfmACfHwBfGAEf39/fwBgBH9/f38BfmADf35+AX9gBX9/f39/AGAFf35+fn4AYAd/f39/f39/AX9gBH9+fn8BfmAFf35+f38BfmABfgF+YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAAAYAN/f34AYAN/fn4AYAR/fn
 
5/AGAEf35+fwF/YAR/fn5+AX9gBX9+fn5/AX9gAn5/AX9gBH9+f38AYAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AGf35/fn5/AX9gA35/fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn4BfmAGf39/f39/AGAHf39/f39/fwBgBH9/fn8AYAh/f39/f39/fwF/YAR/f39+AX9gBH9+f34Bf2AGf3x/f39/AX9gBX9/f39/AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAN/f3wAYAV/fn9/fwBgBH9+f34AYAZ/fn9+fn8AYAJ/fQBgAn98AGADf3x/AGAFf3x/f38AYAF+AGAHfH9/f39/fwBgCn9/f39/f39/f38Bf2AGf39/fn5/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn9/fgF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAJ+fgF/YAN+fn4Bf2AEfn5+fgF/YAF8AX9gAnx/AX9gBnx/f39/fwF/YAJ8fAF/YAABfmAHf39/f39/fgF+YAV/f39/fgF+YAR/f39+AX5gA39/fgF+YAR/f35/AX5gBH9/fn4BfmAFf39+fn4BfmAFf35/fn8BfmAFf35+fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfAF+YAF/AXxgAn9/AXxgA39/fwF8YAF+AXxgAn5+AXwCTQwBYQFiABwBYQFjACgBYQFkAAEBYQFlAAkBYQFmAAABYQFnAAQBYQFoAAMBYQFpAAABYQFqAAEBYQFrAAcBYQFsABwBYQFhAgGAAoACA8AKvgoNDwMkAwQPA20FBXMDAQMmAwADAykDDxEjADANBwQIDwAICgE
 
BAwEMIAUEIwMaAwoKARoIBQ4vAAQFBwQHDkB3AQADGgEQCAMPCQcACR4OCQQDBAQIUwUDAAwFChIFAwEDEC0HAAcWDB8AJwASEAQgKxNXCQMBAAQPGAEsMgEKCg8tEwQaDQQBBQAACgQSHQ8mCBYKMgwFBzMEAAc7CQMuBCIOBAISAQ8ACSpLBQoBPgQFagEEChAODg4OBQcBRDcASGcTEjwZBwQTABYBDhI0LAAuA28AATcABQEBASo8AQcHAQAWBAQDEA8ECgMECAAcFQUEB2AAACYDUAEEEyFmBgo2Aw4DAA4eAUAmCiwAAAEDBwQEAy8LATEFCBYFEwAEAQUABA4GNANPAQEEaQxCBAZHABYcB3IuGBADEwUFAQABABUrCQsbRQsEBBkBBwUfCgQ3FR0JAAEJBQkABAMEAAQAAQNDPQ4kAlwQBANdBAwcBwMWA3ULCgwVGSNZBRAAAAUjBhADCgMJAQFVAQEMAA8vMAkDAAcLCwEyBAQBAQkABAEEAQUCAAMCAQMACQEzAAcAAQEBEwoACQEJCQEcAyQPWCkDEgMPBAEWDgcZHBMBBAURAwRbIhUPAxIZCFRWbAI6HQEaGgoWAAEKUSoJDhcCDjYDBAEACVIYCAoPBAQVCAgDBRAYAQMBAQMAIAcFIRMEaAtiCwEBAAAFCQQABD4BBQMIEwQAAgJwJAgGAgYmHhkZAAMCAzMAAwEBAQ0AAwEEAAEABwQBEwAPEwQEBAAAACRDDAZxND0DCAMFAA45AwgJBwwCAyQABQ0XCA8eGygGDA8DEAUGCRwAAQcHEQwGZQIOAwMDKwYGBh8BHTgMAQEjAQAEAQMFAAEuHhIMGDoDAQcODgUICQEKDhgMByUeHh8ADwMEFQAVBAABAQEAAwIEBQcEIBsDAXggX3QaKyAEBgAqHAREAQRFG0YLAwQZAQEBAhwEBwQJBAEBAAEEAAEhIQEAZBAQAgAACggoAgoGAgICAgICAgIBBgYC
 
AgICAgYGAg8GAAICAgYCAgYCBgYKAgIICAICAgIGBhYIAgICAgICAgYCAgIGBgICAgIGAgYCAgAhBAcoAQUZBwEDBwQBAQEEBwAABwEEBAcEBwAHAwAABAMABAQAAQEBAwICAQMaAgICBgICAhQpKQYUDAYCAhQGFBQUAgICAAIVAxENEQ0NAQ0RDRQUAwYGBxAGBgYGDgYUCAI1ORJuJxIEPxgRDQICFAgCAgICChYKAgIHAgIQCAgVDgIHJxIYBwESAAABCBUUCBUnY0wSdgkAEwEADB0dHQQFBQMDAwMDAAAAAxENEQ0NDRENEQ0NDRENEQ0RDRENDRENEQ0iIgoFIggECQcVGiMAHTAAAAAMGQEBAQoPEgEBAQEBAAABIVotLRYBCQABAQAFGAAJABUBCB4eHRpCFQpNBA5OFw8DSRcXCQ8XCAQKCgoACCwFAwMDAwMHBwEBAQAEByUHEAAXXgsLGxsXAQQXShclJSUDOx8DAgQEBAQAEAQDQS82AQIDAwAHBwILCwsLCwsLCxsbCwIJCwsLCwsLBgsLAwEBAQABAAEDEwEXCQAEAQEBAgE4AQIZBQUFBQUFAgUFBQUTHwEDBgZrAgIADAAMAAwADAAMAAwADAIADAYGAAICAgIGBwICCAY6AhAIAgYQFAICCAICAgICAgICAgICAgICCxoCAgsLGxsGFAEGAQYCAggCBgYGAgICAgIGBgYCAgICAgICAgJhAgICAgYDBAcBcAH3AvcCBgkBfwFB8LPEAgsHRg4BbQEAAW4AiwYBbwDICgFwAP0EAXEAogcBcgDzBgFzANYGAXQAnwIBdQCKCQF2AIkJAXcAiAkBeAD4CAF5APcIAXoA9ggJ8wUBAEEBC/YCigThCN4I3QjZCO8I7gjtCJoHwgTMBrAGnwbHCrIDmQqPCoYG8wnXCc8JzQnLCcQJ8QW2Ca4JogmcCd8FjwmHCYUJggn8CM4F9AOiCOcI5Qf+BOMH4wGmB
 
5sHnAjvB/IEsweVB5QHkweRB4wHiAekBvgJmAiXCJYIlQiUCIsFkwiSCJEIkAiPCI4IjQiMCIsIigiJCIgIhwiGCIUI3wOECN8DgwiCCIEIgAjmB9oH2QfYB90HiAX/B/4HwAe/B74HvQe7B7oHuAe3B7YHpQekB6MH3wOhB4sFoAefB54HnQfzB/IH8QfWB9MH0gfRB9AHzwfNB8wHyAfHB8YHxQfEB8MHwgfBB7UHsgewB68HrgetB6wHqgepB6cHmAeXB5YHiwKSB5AHjweOB4sHhweNBYYHhQeEB4MH4gSCB4EH/QaPBfwG0QbQBs8GzgbNBssGygbJBpYFyAbHBrsExgbFBsQGuQTDBsIGwQa6BMAGvwa+Br0GvAa7BroGuQa4BrcGjwO2BrUGtAazBrIGsQauBq0GrAarBqoGqQbtA6gGpwaVBZcFpgalBqMGoQagBp4GnQacBpsGmga1BLQEmQaYBpYGlQaUBpMGkgaRBpAGjwaOBowGxgrFCsQKwwrBCsAKvwq+Cr0KvAq7CroKuQq4CrcKtgq1CrQKswqyCrEKsAqvCq4KrQqrCqoKqQqnCqUKpAqzCacJqQmhCrQJsAmlCaAErAmtCaIE0QL8BKQJqgmjCaAKqAmyCbUJpgm4CbEJogKkA/8I/gi3CZ8KngqcCpsKmgqYCpcKlgqVCpQKkwqSCpEKkAqOCo0KjAqLCooKiQqICocKhgqFBoUKhAaECoIKgQqACv8J/Qn8CfsJ+gn5CfcJ9gnkCeMJ4QngCfIJ9QnwCe4J7AnqCegJ5gnxCfQJ7wntCesJ6QnnCeUJggbbCdoJ2QnYCdYJ1QnUCdMJ0gnRCfUDggafCZgJlwmVCeAFlAmKBIoE+wj6CAqg4hK+CjUBAX8CQCABQiCIp0F1SQ0AIAGnIgIgAigCACICQX9qNgIAIAJBAUoNACAAKAIQIAEQ9wQLCxMAIABCgICAgHCDQoCAgIDgAFELTQECfyAAKA
 
JAIgJBgAJqIQMgAigCnAIgACgCBEcEQCADQcABEA8gAyAAKAIEEB0gAiAAKAIENgKcAgsgAiACKAKEAjYCmAIgAyABEA8LIgEBfyAAQiCIp0F1TwRAIACnIgEgASgCAEEBajYCAAsgAAsoAQF/IwBBEGsiAiQAIAIgAToADyAAIAJBD2pBARCUARogAkEQaiQAC58WAgZ/AX4jAEEQayICJAAgACAAQRBqIgQQjgIgACAAKAI4IgE2AjQgAiABNgIMIABBADYCMCAAIAAoAhQ2AgQDQCAAIAE2AhggACAAKAIIIgM2AhQCQAJAAn8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASwAACIFQf8BcSIGDn0AFxcXFxcXFxcEAwQEAhcXFxcXFxcXFxcXFxcXFxcXFwQSGAgHDBMYFxcLDRcOCQUKHBwcHBwcHBwcFxcPERAWFwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwYXFAcBBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXFRcLIAEgACgCPEkNGiAEQap/NgIADB8LIAAgAUEBahDJAw0cIAIgACgCODYCDAweCyABQQFqIAEgAS0AAUEKRhshAQsgAiABQQFqNgIMDB4LIAIgAUEBajYCDAweCwJAAkAgAS0AASIDQSpHBEAgA0EvRg0BIANBPUcNAiACIAFBAmo2AgwgBEGGfzYCAAwdCyACIAFBAmoiATYCDANAAkACQAJAAkACQAJAIAEtAAAiA0F2ag4EAQMDAgALIANBKkcEQCADDQMgASAAKAI8SQ0EIABBwNQAQQAQFAwhCyABLQABQS9HDQMgAiABQQJqNgIMDCULIABBATYCMCAAIAAoAghBAWo2AgggAiABQQFqNgIMDAMLIABBATYCMCACIAFBAWo2AgwMAgsgA0EYdEE
 
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
 
FIAAgARALIAVBAEgNAiAFRQ0AIAgtAABBEHEEQCAAIAgpAxgQCyAAIAgpAxAgA0EAQQAQNiEKDAULIAgpAwghCgwECyAGKAIQKAIsIgYNAAtCgICAgDAhCiAERQ0CIAAgAhDGAgtCgICAgOAAIQoMAQtCgICAgDAhCgsgCEEgaiQAIAoLXgECfyMAQRBrIgQkACAAKAIAIQMgBCACNgIMIANBAyABIAJBABC/BSADIAMoAhApA3ggACgCDCAAKAIIIAAoAkAiAAR/IAAoAmhBAEdBAXQFQQALEL0CIARBEGokAAsmAQF/IwBBEGsiAyQAIAMgAjYCDCAAQQQgASACEPsBIANBEGokAAs3AQF+QoCAgIDAfiAAvSIBQoCAgIDA/v+DgH98IAFC////////////AINCgICAgICAgPj/AFYbCw8AIAAoAkBBgAJqIAEQMAsrACABEPABRQRAIAAoAhAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABCwsAIAAoAhAgARAgCykAIAAgASACIANCgICAgDBCgICAgDAgBEGAzgByEHUhAiAAIAMQCyACCw8AIAAgACgCACABEBgQOQtKACAAEOgCRQRAQX8PCyACQX9MBEAgABA1IQILIAAgAUH/AXEQDSAAIAIQOSAAKAJAKAKkAiACQRRsaiIAIAAoAgBBAWo2AgAgAgsoAQF/IwBBEGsiAiQAIAIgATYCDCAAIAJBDGpBBBCUARogAkEQaiQACzEAIAFBAE4EQCAAQbQBEA0gACABEDkgACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLGAEBfiABKQMAIQMgASACNwMAIAAgAxALCxEAIABBEGogASAAKAIEEQMACwsAIABC/////29WCxgAIAFCIIinQX5PBEAgACABpyACEQMACwsXACAAIAEgAkKAgICAMCADIARBAhDfAQuCBAEDfyACQYAETwRAIAAgASACEAQaIAAP
 
CyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAtIAQN/IANBACADQQBKGyEDA0AgAyAERkUEQCAAIAEgACACIARBBHRqIgUoAgAQmQUiBiAFEKcIIAAgBhASIARBAWohBAwBCwsLMgEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBf2o2AgAgAkEBSg0AIAAgARD3BAsLCwAgAEGUF0EAEBULBwAgAEEwagufAQEBfgJAAkACQAJAAkACQAJAIAEQU0EIag4QBQMAAAAAAAECBAAAAAABAgALIABBgM4AQQAQFUKAgICA4AAPCyABEA4PCyAAQQQQoAEhAgwDCyAAIABBBRCgASICQTAgAacpAgRC/////weDQQAQG
 
hoMAgsgAEEGEKABIQIMAQsgAEEHEKABIQILIAIQDEUEQCAAIAIgARAOEOgBCyACCxIAIABCgICAgHCDQoCAgIAgUQuzBAELfyMAQRBrIggkACAAKAIAIQUgCCACNgIMQX8hCQJAA0ACQCAIIAIiA0EEaiICNgIMIAMoAgAiB0F/Rg0AIAAoAgQhCgNAIAEiBCAKTg0DIAQgBCAFaiILLQAAIgZBAnQiDEGQMWotAABqIgEgCkoNAyAGQcABRgRAIAsoAAEhCQwBCwsgBiAHRwRAIAZFIAdBgAJJciAHQf8BcSAGRiAHQQh2Qf8BcSAGRnIgB0EQdkH/AXEgBkZyRUEAIAdBGHYgBkcbcg0DIAAgBjYCEAsgBEEBaiEEAkACQAJAAkACQAJAAkACQCAMQZMxai0AAEF7ag4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LCwAgACABQQAQkQQLvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARALIARC/////weDQgBSDwsgAactAAUhAi
 
AAIAEQCyACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEoiBUQAAAAAAAAAAGIgBb1C////////////AINCgYCAgICAgPj/AFRxDwsgACABEAtBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxwELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEHt1gAgAhAUQX8MAQsgABAQCyEAIAJBEGokACAACygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEJQBGiACQRBqJAALIQAgACgCBEF/TARAIAAgAUEBdGovARAPCyAAIAFqLQAQCwsAIAAgAUEBEMYFC6QLAgV/CX4jAEHgAGsiBSQAIAJCIIYgAUIgiIQhESAEQi+GIANCEYiEIQ0gBEL///////8/gyIOQg+GIANCMYiEIQ8gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEQIA5CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUF/akH9/wFNBEBBACAHQX9qQf7/AUkNARoLIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDIQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDIRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAxC///////
 
/P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBcWoQeyAFKQNYIgtCIIYgBSkDUCIBQiCIhCERIAtCIIghEEEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDiADIA4gDlAiCBt5IAhBBnStfKciCEFxahB7IAUpA0giAkIPhiAFKQNAIgNCMYiEIQ8gAkIvhiADQhGIhCENIAJCEYghEiAGIAhrQRBqCyEGIA9C/////w+DIgIgC0L/////D4MiBH4iDiANQv////8PgyILIBBCgIAEhCIMfnwiDSAOVK0gDSASQv////8Hg0KAgICACIQiDiARQv////8PgyIRfnwiDyANVK18IA8gCyARfiIQIANCD4ZCgID+/w+DIgMgBH58Ig0gEFStIA0gAiABQv////8PgyIBfnwiECANVK18fCINIA9UrXwgDCAOfnwgBCAOfiISIAIgDH58Ig8gElStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIAQgC34iDSADIAx+fCIEIAIgEX58IgIgASAOfnwiDEIgiCAMIAJUrSAEIA1UrSACIARUrXx8QiCGhHwiAiAPVK18IAIgECABIAt+IgQgAyARfnwiDkIgiCAOIARUrUIghoR8IgQgEFStIAQgDEIghnwiDCAEVK18fCIEIAJUrXwiAkKAgICAgIDAAIMiC0IwiKciCCAHIAlqIAZqakGBgH9qIgZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsgAkIBhiAEQj+IhCACIAtQIgcbIQsgDkIghiICIAEgA358IgEgAlStIAx8IgMgCEEBc60iDIYgAUIBiCAIQT5yrYiEIQIgBEIBhiADQj+IhCAEIAcbIQQgASAMhiEBAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEMAwsgBUEwaiABIAIgBkH/AGoiBhB7IAVBIGogBCALIAYQeyAFQRBq
 
IAEgAiAHEM8CIAUgBCALIAcQzwIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhASAFKQMoIAUpAxiEIQIgBSkDACEEIAUpAwgMAQsgC0L///////8/gyAGrUIwhoQLIAqEIQogAVAgAkJ/VSACQoCAgICAgICAgH9RG0UEQCAKIARCAXwiASAEVK18IQoMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAogBCAEQgGDfCIBIARUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/EMADCyEAIAAgASACQoCAgIAwIAMgBEECEN8BIQIgACABEAsgAgsZACABBEAgACABQXBqrUKAgICAkH+EEAsLC+sBAgJ/AX5CgICAgOAAIQMgACgCFAR+QoCAgIDgAAUgACgCBCEBIAAoAggiAkUEQCAAKAIAIAEQGSAAQQA2AgQgACgCAEEvEDIPCyACIAAoAgxIBEAgACgCACgCECABIAIgACgCECIBdCABa0ERahDjASIBRQRAIAAoAgQhAQsgACABNgIECyABIAAoAhAiAgR/IAIFIAEgACgCCGpBADoAECAAKAIQC0EfdK0gASkCBEL/////d4OEIgM3AgQgASADQoCAgIB4gyAANQIIQv////8Hg4Q3AgQgAEEANgIEIAGtQoCAgICQf4QLCw8AIAAoAkBBgAJqIAEQHQtyAQF/AkAgAUIgiKciAkF4RwRAIAINASABpyICQQBIDQEgAhCRAQ8LIAAgACgCECABpxDMAhAYDwtBACECIAAgARCHBCIBEAwEf0EABSABQoCAgIBwg0KAgICAgH9RBEAgA
 
CABEJcCDwsgACABpxCVBAsLSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALC3IBAX8CfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABEMsCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQC0EACwsQACAAIAAoAigpAwhBARBQCxQBAX4gACABECwhAiAAIAEQCyACCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDQAhogA0EQaiQACygAIAAgAkEwIAJBABATIgIQDARAIAFCADcDAEF/DwsgACABIAIQrQELKAEBfwJAIABCgICAgHBUDQAgASAApyIBLwEGRw0AIAEoAiAhAgsgAgsNACAAIAEgAkEAEJ8DC5ABAQN/IAAhAQJAAkAgAEEDcUUNACAALQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANB//37d2pxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLJgEBfyMAQRBrIgMkACADIAI2AgwgAEEGIAEgAhD7ASADQRBqJAALFQAgACgCACAAKAIEEBkgAEEANgIECwoAIABBUGpBCkkLIwECfyAAKAIAIgEgACgCBCICNgIEIAIgATYCACAAQgA3AgALDAAgACABIAIQDhBZCxEAIAAgASACIANBgIABEJYCCxEAIABCgICAgMCBgPz/AHy/CwwAIAAgASAAIAFKGwvzAgICfwF+AkAgAkUNACAAIAJqIgNBf2ogAToAACAAIAE6AAAgAkEDSQ0AIA
 
NBfmogAToAACAAIAE6AAEgA0F9aiABOgAAIAAgAToAAiACQQdJDQAgA0F8aiABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrSIFQiCGIAWEIQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALDgAgACABKAIAIAEQgwULEQAgACAAKAIkEJ4CQQIQxAULJgEBfwJAIAAoAhBBg39HDQAgACgCICABRw0AIAAoAiRFIQILIAILQgECfwJAIAAoAhAgARDXBCIDEPIIIgQEQCAEEJ4CIQMMAQsgACADQQIQ1gQiAw0AQoCAgIDgAA8LIAAgAyACEMQFCwoAIAAgAUEBEFALHQAgACABKQMQEAsgACABKQMYEAsgACABKQMIEAsLFwEBf0EHIABCIIinIgEgAUELakERSxsLKgEBfyMAQRBrIgQkACAEIAM2AgwgACABIAIgAxDQAiEAIARBEGokACAACxcAIAAoAgwgACgCCEEAIAAoAhARAAAaC40BAQJ/IAEoAnwiBEGAgAROBEAgAEHG+gBBABBEQX8PC0F/IQMgACABQfQAakEQIAFB+ABqIARBAWoQfAR/QX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAYNgIAIAMgAygCDEGA////B3I2AgwgASgCfEF/agsLQgEBfyA
 
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
 
AgICABA8LIAQgASACQQEgA0EERkEBdCADQQNGGxDmAiIAQQBIDQAgASgCdCAAQQR0aiIBIAEoAgxBfHEgA0ECRnJBAnI2AgwgAA8LIAALswEBA38CQAJAIAAoAkAiAhCkASIDQb8BRwRAIANBzQBHDQEgAigCmAIhAyACQX82ApgCIAIgAzYChAIgAEHNABANIAAgARAbDwsgAigCmAIiAyADIAIoAoACIgRqKAABa0EBaiIDIARqIgQtAABB1gBHDQEgACgCACAEKAABEBIgAigCgAIgA2pBAWogACgCACABEBgQXCACQX82ApgCCw8LQdaFAUGhDUH1rwFB3owBEAAACzIAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFgsgAyAEQQdyEMMCCxAAIAAoAiAoAgwoAiAtAAQLqQEBAn8jAEEQayIEJAACQAJAIAAgASACQQBBACAEQQxqEPgEIgEQDA0AIAQoAgwiBUECRwRAIAMgBTYCACABIQIMAgsgACABQekAIAFBABATIgIQDA0AIAMgACACEC0iAzYCAEKAgICAMCECIANFBEAgACABQcAAIAFBABATIQILIAAgARALDAELIAAgARALIANBADYCAEKAgICA4AAhAgsgBEEQaiQAIAILIQAgACABIAJCAEL/////////D0IAEH0hASAAIAIQCyABC7YHAgd/AX4jAEEQayICJAAgACAAQRBqIgQQjgIgACAAKAI4IgE2AjQgAiABNgIMIAAgACgCFDYCBAJ/A0ACQCAAIAE2AhggACAAKAIIIgY2AhRBIiEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLAAAIgdB/wFxIgUOewAJCQkJCQkJCQYEBQUDCQkJCQkJCQkJCQkJCQkJCQkJBgkCCQ4JCQEJCQkLCQoJBwgMDAwMDAwMDAwJCQkJCQkJDg4ODg4ODg4ODg4ODg4O
 
Dg4ODg4ODg4ODg4JCQkJDgkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkLIAEgACgCPEkNDCAEQap/NgIADA4LQSchAyAAKAJMRQ0LCyAAIANBASABQQFqIAQgAkEMahCGAw0ODAwLIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCDCAAIAZBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgwMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIMA0ACQAJAAkACQCABLQAAIgNBdmoOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNAyAAQcDUAEEAEBQMDwsgAS0AAUEvRw0CIAIgAUECaiIBNgIMDA8LIAAgACgCCEEBajYCCAwBCyADQRh0QRh1QX9KDQAgAUEGIAJBDGoQYyEDIAIoAgwhASADQX9HDQELCyABQQFqIQEMAAsACyABLQABEEZFDQMMBAsgB0F/Sg0DIABB2tQAQQAQFAwHCyABLQABEEZFDQIMAQsgACgCTEUNASABLQABEEZFDQELIAAoAgAgASACQQxqQQBBCiAAKAJMIgEbIAFBAEdBAnQQugIiCBAMDQQgAEGAfzYCECAAIAg3AyAMAgsgBCAFNgIAIAIgAUEBajYCDAwBCyACIAFBAWo2AgwgACACQQxqIAUQpQgiAUUNAiAAQYN/NgIQIABCADcCJCAAIAE2AiALIAAgAigCDDYCOEEADAMLIAFBAmohAQNAIAIgATYCDANAAkACQCABLQAAIgMEQCADQXZqDgQGAQEGAQsgASAAKAI8Tw0FDAELIANBGHRBGHVBf0oNACABQQYgAkEMahBjIgNBfnFBqMAARgRAIAIoAgwhAQwFCyACKAIMIQEgA0F/Rw0BCwsgAUEBaiEBDAALAAsLIARBqH82AgBBfwshASACQRBqJAAgAQsRACAAIAEgASACI
 
ANBAhD8AwuqAQICfwJ+An8gAkUEQEKAgICAMCEGQQAMAQsgACgCECIDKQN4IQYgA0KAgICAIDcDeEF/CyEDQX8hBAJAIAAgAUEGIAFBABATIgUQDA0AAkAgBRARDQAgBRAqDQAgACAFIAFBAEEAEDYhAQJ/IAMgAg0AGkF/IAEQDA0AGiADIAEQIQ0AGiAAECdBfwshBCAAIAEQCwwBCyADIQQLIAIEQCAAIAYQkAELIAQLDAAgACABIAAgAUgbCx0AIABCgICAgHBaBH8gAKctAAVBBHZBAXEFQQALC64BAQF/IwBBEGsiAyQAAkACQCACEF0EQCABIAIQeTYCAEEBIQIMAQsgACgCECIAKAIsIAJNDQECfwJAIAAoAjggAkECdGooAgAiACkCBEKAgICAgICAgECDQoCAgICAgICAwABSDQAgA0EMaiAAEMsFRQ0AQQEgAygCDCIAQX9HDQEaC0EAIQBBAAshAiABIAA2AgALIANBEGokACACDwtByi9BoQ1BqxhBwj8QAAALRQAgACgCECABIAIQ4wEiASACRXJFBEAgABDHASABDwsgAwRAIANBACAAKAIQIAEQlgQiACACayICIAIgAEsbNgIACyABC2kBA34gACACQiCIIgMgAUIgiCIEfiACQv////8PgyICIAFC/////w+DIgF+IgVCIIggAiAEfnwiAkIgiHwgASADfiACQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAv5AQICfwN+IwBBEGsiAiQAAn4gAb0iBUL///////////8AgyIEQoCAgICAgIB4fEL/////////7/8AWARAIARCPIYhBiAEQgSIQoCAgICAgICAPHwMAQsgBEKAgICAgICA+P8AWgRAIAVCPIYhBiAFQgSIQoCAgICAgMD//wCEDAELIARQBEBCAAwBCyACIARCACAFp2dBIGogBEIgiKdnIARCgICAgBBUGyIDQT
 
FqEHsgAikDACEGIAIpAwhCgICAgICAwACFQYz4ACADa61CMIaECyEEIAAgBjcDACAAIAQgBUKAgICAgICAgIB/g4Q3AwggAkEQaiQACyoBAX8jAEEQayIDJAAgAyACNgIMIAAgASACQe4CQQAQnQQaIANBEGokAAsNACAAQQAgAUEAEJIEC8cKAQZ/IwBBIGsiAiQAAkACQAJAAkACQAJAAkACfyAAKAIQIgNBg39HBEBBACADQVdHDQEaIAAoAkAiAy0AbEEBcUUEQCAAQeKGAUEAEBQMAwsgAygCZEUEQCAAQf2GAUEAEBQMAwtBfyEDIAAQEA0IAkACQAJAAkAgACgCECIFQVdqDgQCAQECAAsgBUHdAEYgBUFGakECSXIgBUH9AEZyDQELIAAoAjANACAFQSpGBEAgABAQDQtBASEECyAAIAEQuQFFDQEMCgsgAEEGEA0LIAAoAkAtAGwhASAEBEAgABA1IQQgABA1IQMgAEH+AEH9ACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBBAeIABBhQEQDSABQQNHIgdFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQeoAQX8QHCEFIAAgAxAeQYkBIQYgACAHBH9BiQEFIABBwQAQDSAAQcAAEBsgAEGLARANQYoBCxANIABBERANIABB6gBBfxAcIQYgAEEOEA0gAEHrACAEEBwaIAAgBhAeIABBARANIABBAhA5IABBqwEQDSAAQeoAQX8QHCEEIAFBA0ciBkUEQCAAQYsBEA0LIABBhgEQDSAAQQAQayAAQeoAQX8QHCEHIAZFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQekAIAMQHBogAEHBABANIABBwAAQGyAAIAcQHiAAQQ8QDSAAQQ8QDSAAQQ8QDSAAQQEQ6QIgACAEEB4gAEGGARANIABBARBrIABB6gBBfxAcIQQgAUE
 
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
 
Q0BGkQAAAAAAADgQSALQYCAgIB4Rg0BGiAIQgAgAX1C/////w+DNwMAIAchCAwwCyAKQQtqQRJJDQEgARBKmgshKSAIICkQFjcDACAHIQgMLgsgByEIIAYgB0GMARCRAkUNLQwxCyAHQXhqIggpAwAiAUL/////D1YgAadB/////wdGckUEQCAIIAFCAXxC/////w+DNwMAIAchCAwtCyAHIQggBiAHQY8BEJECRQ0sDDALIAdBeGoiCCkDACIBQv////8PViABp0GAgICAeEZyRQRAIAggAUJ/fEL/////D4M3AwAgByEIDCwLIAchCCAGIAdBjgEQkQJFDSsMLwsgBiAHIAwQuAgNLiAHQQhqIQgMKgsgC0ECaiEJIBEgCy0AAUEDdGoiCCkDACIBQv////8PViABp0H/////B0ZyRQRAIAggAUIBfEL/////D4M3AwAMKQsgDSABEA43AxggBiAfQY8BEJECDS0gBiAIIA0pAxgQHwwoCyALQQJqIQkgESALLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQn98Qv////8PgzcDAAwoCyANIAEQDjcDGCAGIB9BjgEQkQINLCAGIAggDSkDGBAfDCcLIAdBeGoiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCAGIAcQtwhFDScMKwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAad0rTcDAAwnCyAGIAdBoAEQvgJFDSYMKgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAoCfiAlpyABp3YiB0EATgRAIAetDAELIAe4EBYLNwMADCYLIAYgBxC2CEUNJQwpCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp3WtNwMADCULIAYgB0GhARC+Ak
 
UNJAwoCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiABICWDNwMADCQLIAYgB0GtARC+AkUNIwwnCyAHQXhqIggpAwAgB0FwaiIKKQMAhCIBQv////8PWARAIAogATcDAAwjCyAGIAdBrwEQvgJFDSIMJgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogASAlhUL/////D4M3AwAMIgsgBiAHQa4BEL4CRQ0hDCULIAdBeGoiCCkDACIBIAdBcGoiCikDACIlhEL/////D1gEQCAKICWnIAGnSK1CgICAgBCENwMADCELIAYgB0GjARCLA0UNIAwkCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0ytQoCAgIAQhDcDAAwgCyAGIAdBpAEQiwNFDR8MIwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAadKrUKAgICAEIQ3AwAMHwsgBiAHQaUBEIsDRQ0eDCILIAdBeGoiCCkDACIBIAdBcGoiCikDACIlhEL/////D1gEQCAKICWnIAGnTq1CgICAgBCENwMADB4LIAYgB0GmARCLA0UNHQwhCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0atQoCAgIAQhDcDAAwdCyAGIAdBABCmBUUNHAwgCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0etQoCAgIAQhDcDAAwcCyAGIAdBARCmBUUNGwwfCyAHQXhqIggpAwAiASAHQXBqIgspAwAiJYRC/////w9YBEAgCyAlpyABp0atQoCAgIAQhDcDAAwbCyAGIAdBABClBQwaCyAHQXhqIggpAwAiASAHQXBqIgspAwAiJYRC/////w9YBEAgCyAlpyABp0etQoC
 
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
 
QmAQMAQsgACABIAIQmAQLIgBGBEAPCyAAIAFuGgt/AQN/IwBBEGsiASQAIAFBCjoADwJAIAAoAhAiAkUEQCAAENIFDQEgACgCECECCwJAIAAoAhQiAyACTw0AIAAsAEtBCkYNACAAIANBAWo2AhQgA0EKOgAADAELIAAgAUEPakEBIAAoAiQRAABBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAALQBKIgFBf2ogAXI6AEogACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC5UGAgR/A34jAEGAAWsiBSQAAkACQAJAIAMgBEIAQgAQgAJFDQAgAyAEEP0IIQcgAkIwiKciCEH//wFxIgZB//8BRg0AIAcNAQsgBUEQaiABIAIgAyAEEDMgBSAFKQMQIgEgBSkDGCICIAEgAhDYBSAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRCAAkEATARAIAEgCiADIAkQgAIEQCABIQQMAgsgBUHwAGogASACQgBCABAzIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQMyAFKQNoIgpCMIinQYh/aiEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEDMgBSkDWCIJQjCIp0GIf2ohByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gBCADVK19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEDMgBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/
 
iIQLIQogBEIBhiEEIAZBf2oiBiAHSg0ACyAHIQYLAkAgCiAJfSAEIANUrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQMyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQX9qIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALiQQCAn8EfgJAIAG9IgZCAYYiBVAgBkL///////////8Ag0KAgICAgICA+P8AVnJFBEAgAL0iB0I0iKdB/w9xIgJB/w9HDQELIAAgAaIiACAAow8LIAdCAYYiBCAFVgRAIAZCNIinQf8PcSEDAn4gAkUEQEEAIQIgB0IMhiIEQgBZBEADQCACQX9qIQIgBEIBhiIEQn9VDQALCyAHQQEgAmuthgwBCyAHQv////////8Hg0KAgICAgICACIQLIQQCfiADRQRAQQAhAyAGQgyGIgVCAFkEQANAIANBf2ohAyAFQgGGIgVCf1UNAAsLIAZBASADa62GDAELIAZC/////////weDQoCAgICAgIAIhAshBiACIANKBEADQAJAIAQgBn0iBUIAUw0AIAUiBEIAUg0AIABEAAAAAAAAAACiDwsgBEIBhiEEIAJBf2oiAiADSg0ACyADIQILAkAgBCAGfSIFQgBTDQAgBSIEQgBSDQAgAEQAAAAAAAAAAKIPCwJAIARC/////////wdWBEAgBCEFDAELA0AgAkF/aiECIARCgICAgICAgARUIQMgBEIBhiIFIQQgAw0ACwsgB0KAgICAgICAgIB/g
 
yEEIAJBAU4EfiAFQoCAgICAgIB4fCACrUI0hoQFIAVBASACa62ICyAEhL8PCyAARAAAAAAAAAAAoiAAIAQgBVEbC6MMAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkEDcUUNASAAKAIAIgMgAWohASAAIANrIgBB+KcEKAIARwRAQfSnBCgCACEEIANB/wFNBEAgACgCCCIEIANBA3YiA0EDdEGMqARqRxogBCAAKAIMIgJGBEBB5KcEQeSnBCgCAEF+IAN3cTYCAAwDCyAEIAI2AgwgAiAENgIIDAILIAAoAhghBgJAIAAgACgCDCICRwRAIAQgACgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgAEEUaiIDKAIAIgQNACAAQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQECQCAAIAAoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAMLIAZBEEEUIAYoAhAgAEYbaiACNgIAIAJFDQILIAIgBjYCGCAAKAIQIgMEQCACIAM2AhAgAyACNgIYCyAAKAIUIgNFDQEgAiADNgIUIAMgAjYCGAwBCyAFKAIEIgJBA3FBA0cNAEHspwQgATYCACAFIAJBfnE2AgQgACABQQFyNgIEIAUgATYCAA8LAkAgBSgCBCICQQJxRQRAIAVB/KcEKAIARgRAQfynBCAANgIAQfCnBEHwpwQoAgAgAWoiATYCACAAIAFBAXI2AgQgAEH4pwQoAgBHDQNB7KcEQQA2AgBB+KcEQQA2AgAPCyAFQfinBCgCAEYEQEH4pwQgADYCAEHspwRB7KcEKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LQfSnBCgCACEDIAJBeHEgAWohAQ
 
JAIAJB/wFNBEAgBSgCCCIEIAJBA3YiAkEDdEGMqARqRxogBCAFKAIMIgNGBEBB5KcEQeSnBCgCAEF+IAJ3cTYCAAwCCyAEIAM2AgwgAyAENgIIDAELIAUoAhghBgJAIAUgBSgCDCICRwRAIAMgBSgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgBUEUaiIDKAIAIgQNACAFQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgMEQCACIAM2AhAgAyACNgIYCyAFKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsgACABQQFyNgIEIAAgAWogATYCACAAQfinBCgCAEcNAUHspwQgATYCAA8LIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQf8BTQRAIAFBA3YiAkEDdEGMqARqIQECf0HkpwQoAgAiA0EBIAJ0IgJxRQRAQeSnBCACIANyNgIAIAEMAQsgASgCCAshAyABIAA2AgggAyAANgIMIAAgATYCDCAAIAM2AggPC0EfIQMgAEIANwIQIAFB////B00EQCABQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgMgA0GA4B9qQRB2QQRxIgN0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAIgA3IgBHJrIgJBAXQgASACQRVqdkEBcXJBHGohAwsgACADNgIcIANBAnRBlKoEaiECAkACQEHopwQoAgAiBEEBIAN0IgdxRQRAQeinBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEAQRkgA0E
 
BdmsgA0EfRht0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuFAQECfyAARQRAIAEQnwIPCyABQUBPBEBBhKcEQTA2AgBBAA8LIABBeGpBECABQQtqQXhxIAFBC0kbEIMJIgIEQCACQQhqDwsgARCfAiICRQRAQQAPCyACIABBfEF4IABBfGooAgAiA0EDcRsgA0F4cWoiAyABIAMgAUkbECQaIAAQ/wEgAgvYAwICfwJ+IwBBIGsiAiQAAkAgAUL///////////8AgyIFQoCAgICAgMD/Q3wgBUKAgICAgIDAgLx/fFQEQCABQgSGIABCPIiEIQQgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhBAwCCyAEQoCAgICAgICAQH0hBCAAQoCAgICAgICACIVCAFINASAEQgGDIAR8IQQMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCEEDAELQoCAgICAgID4/wAhBCAFQv///////7//wwBWDQBCACEEIAVCMIinIgNBkfcASQ0AIAJBEGogACABQv///////z+DQoCAgICAgMAAhCIEIANB/4h/ahB7IAIgACAEQYH4ACADaxDPAiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICAgICA
 
f4OEvwuGEQIFfwx+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyELIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQX9qQf3/AU0EQCAHQX9qQf7/AUkNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCERIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIAxC////////P1gEQCAFQbABaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBcWoQe0EQIAZrIQYgBSkDuAEhCyAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQXFqEHsgBiAIakFwaiEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC1ASAFQYABakIAIAUpA5gBfSAEELUBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtQEgBUHgAGogBEIAIAUpA3h9ELUBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELUBIAVBQGsgBEIAIAUpA1h9ELUBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEI
 
AIQtQEgBUEgaiAEQgAgBSkDOH0QtQEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC1ASAFIARCACAFKQMYfRC1ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCf3wiDEL/////D4MiBCACQiCIIgp+Ig0gDEIgiCIMIAJC/////w+DIhB+fCICQiCIIAIgDVStQiCGhCAKIAx+fCACQiCGIgogBCAQfnwiAiAKVK18IAIgBCADQhGIQv////8PgyINfiIQIAwgA0IPhkKAgP7/D4MiDn58IgpCIIYiDyAEIA5+fCAPVK0gDCANfiAKIBBUrUIghiAKQiCIhHx8fCIKIAJUrXwgCkIAUq18fSICQv////8PgyINIAR+IhAgDCANfiIOIAQgAkIgiCIPfnwiAkIghnwiDSAQVK0gDCAPfiACIA5UrUIghiACQiCIhHx8IA1CACAKfSICQiCIIgogBH4iECACQv////8PgyIOIAx+fCICQiCGIg8gBCAOfnwgD1StIAogDH4gAiAQVK1CIIYgAkIgiIR8fHwiAiANVK18IAJCfnwiECACVK18Qn98IgpC/////w+DIgIgC0IChiABQj6IhEL/////D4MiBH4iDSABQh6IQv////8PgyIMIApCIIgiCn58Ig4gDVStIA4gEEIgiCINIAtCHohC///v/w+DQoCAEIQiC358Ig8gDlStfCAKIAt+fCACIAt+IhMgBCAKfnwiDiATVK1CIIYgDkIgiIR8IA8gDkIghnwiDiAPVK18IA4gDCANfiITIBBC/////w+DIhAgBH58Ig8gE1StIA8gAiABQgKGQvz///8PgyITfnwiFSAPVK18fCIPIA5UrXwgDyAKIBN+IgogCyAQfnwiCyAEIA1+fCIEIAIgDH58IgJCIIggAiAEVK0gCyAKVK0gBCALVK18fEIghoR8IgsgD1StfCALIBUgDSATfiIEIAwgEH58IgxCIIggDC
 
AEVK1CIIaEfCIEIBVUrSAEIAJCIIZ8IARUrXx8IgQgC1StfCICQv////////8AWARAIAFCMYYgBEL/////D4MiASADQv////8PgyIMfiILQgBSrX1CACALfSIQIARCIIgiCyAMfiIOIAEgA0IgiCIKfnwiDUIghiIPVK19IAJC/////w+DIAx+IAEgEkL/////D4N+fCAKIAt+fCANIA5UrUIghiANQiCIhHwgBCAUQiCIfiADIAJCIIh+fCACIAp+fCALIBJ+fEIghnx9IRIgBkF/aiEGIBAgD30MAQsgBEIhiCEKIAFCMIYgAkI/hiAEQgGIhCIEQv////8PgyIBIANC/////w+DIgx+IgtCAFKtfUIAIAt9Ig0gASADQiCIIgt+IhAgCiACQh+GhCIOQv////8PgyIPIAx+fCIKQiCGIhNUrX0gBCAUQiCIfiADIAJCIYh+fCACQgGIIgIgC358IA4gEn58QiCGIAsgD34gAkL/////D4MgDH58IAEgEkL/////D4N+fCAKIBBUrUIghiAKQiCIhHx8fSESIA0gE30LIQEgBkGAgAFOBEAgEUKAgICAgIDA//8AhCERQgAhAQwBCyAGQf//AGohByAGQYGAf0wEQAJAIAcNACAEIAFCAYYgA1YgEkIBhiABQj+IhCIBIBRWIAEgFFEbrXwiASAEVK0gAkL///////8/g3wiAkKAgICAgIDAAINQDQAgAiARhCERDAILQgAhAQwBCyAEIAFCAYYgA1ogEkIBhiABQj+IhCIBIBRaIAEgFFEbrXwiASAEVK0gAkL///////8/gyAHrUIwhoR8IBGEIRELIAAgATcDACAAIBE3AwggBUHAAWokAA8LIABCADcDACAAQoCAgICAgOD//wAgESACIAOEUBs3AwggBUHAAWokAAvHAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgIC
 
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
 
CIAAgAUE2IAFBABATIgEQEQR+IABBLxAyBSABC0GNpgEQvQELC/IDAwV/A34DfAJAIAAgARBmDQAgACAAKQMwQQ4QUCIKEAwNACAKpyIGIAEQsgFBBHRBEHEgBi0ABUHvAXFyOgAFAkAgAEEAIAJBf2oQSyICQQN0QRhqEC4iBEUNACAEIAEQDiIBNwMAIAMpAwAQDiEJIAQgAjYCECAEIAk3AwggAkEAIAJBAEobIQcgBEEYaiEIA0AgBSAHRwRAIAggBUEDdGogAyAFQQFqIgVBA3RqKQMAEA43AwAMAQsLIAYgBDYCICAAIAEQ5ggiA0EASA0AAkAgA0UNACAAIAFBMCABQQAQEyIJEAwNASAJQv////8PWARAIAmnIgMgAmtBACADIAJKG60hCwwBCyAJEFNBB0YEQAJAIAkQSiINvUL///////////8Ag0KAgICAgICA+P8AVg0AIA2dIg0gArciDmUNACANIA6hIQwLIAy9An8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgK3vVEEQCACrSELDAILIAwQFiELDAELIAAgCRALCyAAIApBMCALQQEQGhogACABQTYgAUEAEBMiARAMDQAgAEHQpQEgARCaAQR+IAEFIAAgARALIABBLxAyC0G+FRC9ASIBEAwNACAAIApBNiABQQEQGhogCg8LIAAgChALC0KAgICA4AALMAAgAkEATARAIAAgAUKAgICAMEEAQQAQIw8LIAAgASADKQMAIAJBf2ogA0EIahAjC8IBAgF/AX4jAEEgayICJABCgICAgOAAIQYCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQADQCAAIAIgAacgAxBaIgVBAEgNAiAFBEBCgICAgDAhBiACLQAAQRBxBEAgAkEYaiACQRBqIAQbKQMAEA4hBgsgACACEFIMAwsgACABEI0EIgEQDA0CIAEQKgRAQoCAgIAwIQYMAwsgABCO
 
AUUNAAsMAQtBACEDCyAAIAMQEiAAIAEQCyACQSBqJAAgBguVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARAMRQRAIAAgBRBmRQRAIAAgBhA6IgINAgsgACABEAsLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCyAAIAIQEkKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBFFBEAgARAqRQ0BCyAAECdCgICAgOAADwsCQCACECENACACECoNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJgCQQBIGwslAQF+IAAgARApIgEQDARAIAEPCyAAIAEQ+QEhAiAAIAEQCyACC5MBAgF/AX4jAEEgayICJABCgICAgOAAIQUCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQAgACACIAGnIAMQWiIEQQBIDQEgBEUEQEKAgICAECEFDAILIAI1AgAhBSAAIAIQUiAFQgKIQgGDQoCAgIAQhCEFDAELQQAhAwsgACADEBIgACABEAsgAkEgaiQAIAULiAEBAn4gAykDACIFECFFBEBCgICAgBAPCwJAIAAgARApIgQQDEUEQCAEpyECIAUQDiEBA0AgACABEI0EIgEQDEUEQCABECoiAyACIAGnRnINAyAAEI4BRQ0BCwsgACABEAsgACAEEAsLQoCAgIDgAA8LIAAgARALIAAgBBALIANFrUKAgICAEIQLZQEBfkKAgICA4AAhBAJAIAAgAykDABA6IgJFDQAgACABECkiARAMBEAgACACEBIgAQ8LIABBACABpyACEFohAyAAIAIQEiAAIAEQCyADQQBIDQAgA0EAR61CgICAgBCEIQQLIAQLCAAgACABECkLDwAgACABQTdBAEEAELwCC5wCAQV+IwBBEGsiAiQAIAMpAwAhBQJAIAAQP
 
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
 
rELECIQ4gACAGEAsgACANEAsgC0IBfCELIAAgDhCMAkUNAQwDCwsgACAHQX8Q0QMiBUEASA0DIAVFDQQgBEECRgRAIAAgAikDUBDnBCIBEAwNBCAAIAIpA1AQCyACIAE3A1ALIAAgACADKQMAQoCAgIAwQQEgAkHQAGoQIxCMAg0DDAQLIAAgDBALCyAAIAhBARCwARoMAQsLIAIgABCPATcDACAAIAIpA2giEEKAgICAMEEBIAIQIyEBIAAgAikDABALIAEQDEUEQCAAIAEQCwwBCyAAIAoQC0KAgICA4AAhCgsgACAPEAsgACAHEAsgACACKQNQEAsgACAJEAsgACAIEAsgACACKQNgEAsgACAQEAsLIAJB8ABqJAAgCgsJACAFKQMAEA4LFQAgACAFKQMAEA4QkAFCgICAgOAAC6sBAQF+IwBBEGsiAiQAIAUpAwAhBiACIAAgBSkDCEKAgICAMEEAQQAQIyIBNwMIAkAgARAMDQAgACAGQQEgAkEIakEAEIsCIQEgACACKQMIEAsgARAMDQAgAiAAQTNBNCAEG0EAQQBBASADEOIBIgY3AwAgBhAMBEAgACABEAsgAikDACEBDAELIAAgAUH/AEEBIAIQsQIhASAAIAIpAwAQCwsgAkEQaiQAIAEL8QEBAn4jAEEgayICJAAgAykDACEEAkAgACABQoCAgIAwEO8BIgUQDA0AAkAgACAEEDtFBEAgAiAEEA4iBDcDECACIAQQDjcDGAwBCyACIAQ3AwggAiAFNwMAQQAhAwNAIANBAkYNASACQRBqIANBA3RqIABBMkEBIANBAiACEOIBIgQ3AwAgBBAMBEAgA0EBRgRAIAAgAikDEBALCyAAIAUQC0KAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRALIAAgAUH/AEECIAJBEGoQvAIhBSAAIAIpAxAQCyAAIAIpAxgQCwsgAkEgaiQAIAULOQAjAEEQayICJAAg
 
AkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhC8AiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBnRQ0AIAAgAUKAgICAMBDvASIGEAwEQCAGIQUMAQsgACACIAYQuAIhByAAIAYQCwJAIAcQDA0AIAAgASADIAIQsgIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAsgBEEBaiEEDAELCyADRQ0AIAAgBxALDAELIAchBQsgAkEQaiQAIAULbgICfwF+A0ACQAJAIANBAkYNACACIANBA3RqIAAgACkDMCADQS5qEFAiBTcDACAFEAxFDQFBfyEEIANBAUcNACAAIAIpAwAQCwsgBA8LIAEgASgCAEEBajYCACAFpyABNgIgIANBAWohAwwACwALCABCgICAgDAL3wECAX8DfiMAQRBrIgMkACABQQVGBEAgAikDECEEIAAgAikDGBD2ASEBIAMgAikDICIFNwMIIAMCfiAEEBEEQCAFEA4iBCABRQ0BGiAAIAQQkAFCgICAgOAADAELIAAgBEKAgICAMEEBIANBCGoQIwsiBDcDACAEEAwiAQRAIAMgABCPASIENwMAC0KAgICAMCEFIAAgAiABQQN0aikDACIGEBEEfiAEBSAAIAZCgICAgDBBASADECMhBSADKQMACxALIANBEGokACAFDwtBx+MAQaENQa3oAkHR4wAQAAALJgAgACABENIDIAAgASkDEBAmIAAgASkDGBAmIAEQnQIgACABECALgQEBA38CQCABQTIQQSIERQ0AIARBzABqIQMgBEHIAGohBQNAIAMoAgAiAyAFRkUEQCAAIAMpAxAgAhAiIAAgAykDGCACECIgACADKQMgIAIQIiAAIAMpAyggAhAiIANBBGohAwwBCwsgBCgCBEF+cUEERg0AIAAgBEEIaiACEN4DCwsWAQF/IAFBMhBBIgIEQCAAIAIQk
 
QULCyUBAX8gAUEwEEEiAwRAIAAgAykDACACECIgACADKQMIIAIQIgsLJwEBfyABQTAQQSICBEAgACACKQMAECYgACACKQMIECYgACACECALCxYBAX8gAacoAiAiAgRAIAAgAhCSBQsLaQIBfwF+QfCmBCgCAARAEP0EC0HwpgQQvAUiAjYCACACENMEIQJBgKcEIAE2AgBB9KYEIAI2AgAgAiAAIAAQQ0GNCBCaBSIDIAEQnQMEQEH0pgQoAgAgAxALQQAPC0H4pgQgAzcDAEEBCygBAX8gAacoAiAiAgRAIAAgAigCCBDoBCAAIAIpAwAQJiAAIAIQIAsLgAEBBX8gAUEqEEEiBQRAIAVBBGohBgNAIARBAkZFBEAgBiAEQQN0aiIHQQRqIQMDQCADKAIAIgMgB0ZFBEAgACADKQMIIAIQIiAAIAMpAxAgAhAiIAAgAykDGCACECIgA0EEaiEDDAELCyAEQQFqIQQMAQsLIAAgBSkDGCACECILC2kBBn8gAUEqEEEiBARAIARBBGohBQNAIAJBAkZFBEAgBSACQQN0aiIGKAIEIQMDQCADIAZGRQRAIAMoAgQhByAAIAMQswIgByEDDAELCyACQQFqIQIMAQsLIAAgBCkDGBAmIAAgBBAgCwtYAQF/QQAhAgN+IAJBAkYEQEKAgICAMA8LIAUgAkEDdCIEaiIGKQMAEBEEfiAGIAMgBGopAwAQDjcDACACQQFqIQIMAQUgAEGQ4wBBABAVQoCAgIDgAAsLC88CAQN/IwBBEGsiByQAAn4gACABIAVBI2oQZyIDRQRAIARBADYCAEKAgICA4AAMAQsCQCADKQMAIgEQEQ0AIAEgBUEfahBBIgYEQAJAIAMoAgwiCEUEQCAGKAIIIQIMAQsgCCgCFCECIAAoAhAgCBDgAwsgBkEEaiEGA0AgAiAGRgRAIANBADYCDCAAIAMpAwAQCyADQoCAgIAwNwMADAMLIAJBdGooAgAEQC
 
ACKAIEIQIMAQsLIAJBcGoiBiAGKAIAQQFqNgIAIAMgBjYCDCAEQQA2AgAgAygCCCIDRQRAIAIpAxAQDgwDCyAHIAIpAxAiATcDACAFRQRAIAIpAxghAQsgByABNwMIIANBAUYEQCABEA4MAwsgAEECIAcQhQMMAgtBkOIAQaENQdPmAkGa4gAQAAALIARBATYCAEKAgICAMAshASAHQRBqJAAgAQvZAQEFfyMAQRBrIgMkACAAIAEoAhBBBCABKAIUIgBBAXQgAEEBRhsiAEEDdCADQQxqELQBIgQEQCADKAIMQQN2IABqIQJBACEAA0AgACACRkUEQCAEIABBA3RqEG4gAEEBaiEADAELCyACQX9qIQUgAUEIaiEAIAFBBGohBgNAIAYgACgCACIARwRAIABBdGooAgBFBEAgAEEIaiAEIAApAxAQ0wMgBXFBA3RqEE0LIABBBGohAAwBCwsgASACNgIUIAEgBDYCECABIAJBAXQ2AhgLIANBEGokAAt4AQJ+QoCAgIDgACEGAkAgACABIARBA3EiAkEfahBnRQ0AIAAgAkEjahCgASIFEAwNACAAQRAQLiICRQRAIAAgBRALQoCAgIDgAA8LIAEQDiEBIAJBADYCDCACIARBAnU2AgggAiABNwMAIAUgAhCHASAFIQYLIAYLkwICAn8DfiMAQSBrIgUkAEKAgICA4AAhBwJAIAAgASAEQR9qEGciBkUNACADKQMAIQlCgICAgDAhCCACQQJOBEAgAykDCCEICyAAIAkQZg0AIAZBBGohAiAGKAIIIQMDQCACIANGBEBCgICAgDAhBwwCCyADQXRqKAIABEAgAygCBCEDBSADQXBqIgYgBigCAEEBajYCACAFIAMpAxAQDiIHNwMIIARFBEAgAykDGBAOIQcLIAUgATcDECAFIAc3AwAgACAJIAhBAyAFECMhByAAIAUpAwAQCyAERQRAIAAgBSkDCBALCyADKAIEIQMgACg
 
CECAGEOADIAcQDA0CIAAgBxALCwwACwALIAVBIGokACAHC/kBAgJ/AX4gAEKAgICAIBBRIQMgACgCKCADNwMIIAAgAEEJQb4VQQBBAEEAIAMQigIiAzcDMCADEA4hAyAAKAIoIAM3A2ggABA9IQMgACgCKCADNwMYIAAgA0HgmwFBAxAlA0AgACgCKCECIAFBCEZFBEAgACAAIAIpAxgQUSIDQTYgACABQQJ0QYAdaigCABDhBEEDEBoaIAAgA0EzIABBLxAyQQMQGhogACABQQN0aiADNwNYIAFBAWohAQwBCwsgACACKQMIQQIQUCEDIAAoAiggAzcDECAAIAAgAxDXBEEBENYENgIkIAAgAEEkakEAQTBBChDVBBoLMQAgACABIAJBH2oQZyIARQRAQoCAgIDgAA8LIAAoAgwiAEEATgRAIACtDwsgALgQFgtZAQF/IAAgASAEQR9qEGciAkUEQEKAgICA4AAPCyACQQRqIQMgAigCCCEEA34gAyAERgR+QoCAgIAwBSAEQXBqIQUgBCgCBCEEIAAoAhAgAiAFEOkEDAELCwtJACAAIAEgBEEfahBnIgJFBEBCgICAgOAADwsgACACIAMpAwAQ8wIQ8gIiA0UEQEKAgICAEA8LIAAoAhAgAiADEOkEQoGAgIAQCzUAIAAgASAEQR9qEGciAkUEQEKAgICA4AAPCyAAIAIgAykDABDzAhDyAkEAR61CgICAgBCECz4AIAAgASAEQR9qEGciAkUEQEKAgICA4AAPCyAAIAIgAykDABDzAhDyAiIARQRAQoCAgIAwDwsgACkDKBAOC5sBAQJ/IABBMBAuIgNFBEBBAA8LIAMgATYCCCADQgE3AwACQCABKAIABEAgAyACpyIEKAIYNgIMIAQgAzYCGAwBCyACEA4aCyADIAI3AyAgA0EYaiABKAIQIAEoAhRBf2ogAhDTA3FBA3RqEE0gA0EQaiABQQRqEE0gASABKAIMQQFq
 
IgQ2AgwgBCABKAIYTwRAIAAgARCoBwsgAwuaAQEDfkKAgICA4AAhBwJAIAAgASAEQR9qEGciAkUNACADKQMAEPMCIQUCQCACKAIARQ0AIAUQIQ0AIAAQJ0KAgICA4AAPC0KAgICAMCEGIARBAXFFBEAgAykDCCEGCwJAIAAgAiAFEPICIgQEQCAAIAQpAygQCwwBCyAAIAIgBRCxByIERQ0BCyAEIAYQDjcDKCABEA4hBwsgBwswACAFKQMAIgFBKRBBIgIEQCACQQE6ABEgACABEAsgBUKAgICAIDcDAAtCgICAgDALMQEBfyMAQRBrIgIkACACIAE3AwggAEExQQBBAEEBIAJBCGoQ4gEhASACQRBqJAAgAQttAQJ+QoCAgIAwIQECQCAAQoCAgIAwIAIgAxDxBSIEEAwNACAAIAQQtAciARAMDQAgABA9IgUQDA0AIAAgBUGDASAEQQcQGhogACAFQYQBIAFBBxAaGiAFDwsgACAEEAsgACABEAtCgICAgOAAC9oCAgN/An4jAEHQAGsiBiQAQX8hBwJAIAAgBkHIAGogAUHCABCEASIIRQ0AIAYpA0giARARBEAgACAIKAIAIAIgAxAOIAQgBRD4AyEHDAELAkACQCAAIAIQZCIJEAwEQCAAIAEQCwwBCyAIKQMAIQogBiAENwM4IAYgAzcDMCAGIAk3AyggBiAKNwMgIAAgASAIKQMIQQQgBkEgahA2IQEgACAJEAsgARAMDQIgACABEC0iBwRAIAAgBiAIKAIAIAIQWiICQQBIDQEgAkUNAwJAIAYoAgAiAkETcUUEQCAAIAYpAwggAxBYRQ0BDAQLIAJBEXFBEEcNAyAGKQMYEBFFDQMLIAAgBhBSIABBk9wAQQAQFQwBCyAFQYCAAXFFBEBBACEHIAVBgIACcUUNAyAAEPgBRQ0DCyAAQavcAEEAEBULQX8hBwwBCyAAIAYQUgsgBkHQAGokACAHC6ICAgJ/An4jA
 
EFAaiIEJAACQAJAIAAgBEE4aiABQcEAEIQBIgVFDQAgBCkDOCIBEBEEQCAAIAUpAwAgAiADQQAQEyEBDAILIAAgAhBkIgYQDARAIAAgARALDAELIAUpAwAhByAEIAM3AzAgBCAGNwMoIAQgBzcDICAAIAEgBSkDCEEDIARBIGoQNiEBIAAgBhALIAEQDA0AIAAgBCAFKAIAIAIQWiICQQBIDQAgAkUNAQJAAkAgBCgCACICQRNxRQRAIAAgBCkDCCABEFhFDQEMAgsgAkERcUEQRw0BIAQpAxAQEUUNASABEBENAQsgACAEEFIgACABEAsgAEH72wBBABAVDAELIAAgBBBSDAELQoCAgIDgACEBCyAEQUBrJAAgAQv2AQIDfwJ+IwBBQGoiAyQAQX8hBAJAIAAgA0E4aiABQeMAEIQBIgVFDQAgAykDOCIBEBEEQCAAIAUpAwAgAhB3IQQMAQsCQAJAIAAgAhBkIgYQDARAIAAgARALDAELIAUpAwAhByADIAY3AyggAyAHNwMgIAAgASAFKQMIQQIgA0EgahA2IQEgACAGEAsgARAMDQIgACABEC0iBA0CIAAgAyAFKAIAIgQgAhBaIgJBAEgNACACRQ0BIAMoAgAhAiAAIAMQUiACQQFxBEAgBC0ABUEBcQ0CCyAAQePbAEEAEBULQX8hBAwBC0EAIQQLIANBQGskACAEC8gBAQF+AkAgABA9IgUQDA0AIARBgBBxBEAgACAFQcEAIAIQDkEHEBoaCyAEQYAgcQRAIAAgBUHCACADEA5BBxAaGgsgBEGAwABxBEAgACAFQcAAIAEQDkEHEBoaCyAEQYAEcQRAIAAgBUE+IARBAXZBAXGtQoCAgIAQhEEHEBoaCyAEQYAIcQRAIAAgBUE/IARBAnZBAXGtQoCAgIAQhEEHEBoaCyAEQYACcUUNACAAIAVBPSAEQQFxrUKAgICAEIRBBxAaGgsgBQuDBAIDfwN+IwBBQGoiBy
 
QAQX8hCAJAIAAgB0E4aiABQeUAEIQBIglFDQAgBykDOCIKEBEEQCAAIAkpAwAgAiADIAQgBSAGEHUhCAwBCwJAIAAgAhBkIgEQDA0AIAAgAyAEIAUgBhC5ByILEAwEQCAAIAEQCwwBCyAJKQMAIQwgByALNwMwIAcgATcDKCAHIAw3AyAgACAKIAkpAwhBAyAHQSBqEDYhCiAAIAEQCyAAIAsQCyAKEAwNASAAIAoQLUUEQEEAIQggBkGAgAFxRQ0CIABBoNsAQQAQFUF/IQgMAgsgACAHIAkoAgAiCSACEFoiAkEASA0BIAZBgQJxIQgCQAJAIAJFBEAgCEGAAkYNAUEBIQggCS0ABUEBcUUNAQwECwJAIAcoAgAiAiAGEJYDRSAIQYACRkEAIAJBAXEbcg0AAkAgBkGAMHEEQCACQRFxQRBHDQEgBkGAEHEEQCAAIAQgBykDEBBYRQ0DCyAGQYAgcUUNASAAIAUgBykDGBBYDQEMAgsgBkGAwABxRQ0AIAZBAnFFQQAgAkEDcSICQQJGGw0BIAINACAAIAMgBykDCBBYRQ0BCyAGQYAEcUUNAiAHKAIAQRNxQQJHDQILIAAgBxBSCyAAQcDbAEEAEBVBfyEIDAILIAAgBxBSQQEhCAwBCyAAIAoQCwsgB0FAayQAIAgLiAICBH8CfiMAQUBqIgMkAEF/IQUCQCAAIANBOGogAUHkABCEASIERQ0AIAMpAzgiARARBEAgACAEKQMAIAJBABDaASEFDAELIAAgAhBkIgcQDARAIAAgARALDAELIAQpAwAhCCADIAc3AyggAyAINwMgIAAgASAEKQMIQQIgA0EgahA2IQEgACAHEAsgARAMDQAgACABEC0iBkUEQEEAIQUMAQsgACADIAQoAgAgAhBaIgJBAEgNACACBEACQAJAIAMtAABBAXEEQCAAIAQpAwAQngEiAkEASA0BIAINAgsgAEH92gBBABAVCyAAIAMQUgwCCyA
 
AIAMQUgsgBiEFCyADQUBrJAAgBQvJAQECfyAAQfgBEJsCIgEEfyABQQE2AgAgACABQQUQvAEgASAAIAAoAkBBA3QQ5wEiAjYCKCACRQRAIAAgARAgQQAPCyABIAA2AhAgAUEUaiAAQcgAahBNQQAhAiAAKAJAIgBBACAAQQBKGyEAA0AgACACRkUEQCABKAIoIAJBA3RqQoCAgIAgNwMAIAJBAWohAgwBCwsgAUKAgICAIDcDUCABQoCAgIAgNwNIIAFCgICAgCA3A0AgAUHgAWoQbiABEKsHIAEFQQALC+QFAgt/AX4jAEFAaiIFJABBfyELAkAgACAFQThqIANB5wAQhAEiBkUNACAFKQM4IgMQEQRAIAAgASACIAYoAgBBAxCNASELDAELIAAgAyAGKQMIQQEgBhA2Ig8QDA0AIAVBADYCLCAFQQA2AjQgBUEANgIwIAAgBUE0aiAPENgBIQcgBSgCNCEKAkAgBw0AAkAgCkUNACAAIApBA3QQaiIJDQBBACEJDAELAn8CQANAAkAgBCAKRgRAIApBASAKQQFLGyEIQQEhBANAIAQgCEYNAiAJIAQgCSAEQQN0aigCBBDqBCEHIARBAWohBCAHQQBIDQALIABB39kAQQAQFUEADAQLIAAgDyAEEHgiAxAMDQICQCADEJoBDQAgAxDlAw0AIAAgAxALIABBstkAQQAQFUEADAQLIAAgAxA6IQggACADEAsgCEUNAiAJIARBA3RqIgdBADYCACAHIAg2AgQgBEEBaiEEDAELC0EAIAAgBikDABCeASIMQQBIDQEaIAYtABEEQCAAEMECDAELIAAgBUEsaiAFQTBqIAYoAgBBAxCNAQRAIAUoAjAhBCAFKAIsIQgMAwsgBSgCLCEIIAUoAjAhBEEAIQcDQCAEIAdHBEAgBi0AEQRAIAAQwQIMBQsgACAFQQhqIAYoAgAgCCAHQQN0aiINKAIEEFoiDkEASA0EAkAgDkUNACAA
 
IAVBCGoQUiAMBEAgBSgCCEEBcQ0BCyAJIAogDSgCBBDqBCINQX9MBEAgAEH52QBBABAVDAYLIAwNACAJIA1BA3RqQQE2AgALIAdBAWohBwwBCwsCQCAMDQBBACEGA0AgBiAKRg0BIAZBA3QhByAGQQFqIQYgByAJaigCAA0ACyAAQbHaAEEAEBUMAwsgACAIIAQQaCAAIA8QCyABIAk2AgAgAiAKNgIAQQAhCwwDC0EACyEEQQAhCAsgACAIIAQQaCAAIAkgChBoIAAgDxALCyAFQUBrJAAgCwvrAwIEfwJ+IwBB4ABrIgQkAEF/IQUCQCAAIARB2ABqIAJB5gAQhAEiBkUNACAGKAIAIQcgBCkDWCICEBEEQCAAIAEgByADEFohBQwBCyAAIAMQZCIIEAwEQCAAIAIQCwwBCyAGKQMAIQkgBCAINwNIIAQgCTcDQCAAIAIgBikDCEECIARBQGsQNiECIAAgCBALIAIQDA0AAkACQAJAAkAgAhAhDQAgAhARDQAgACACEAsMAQsgACAEIAcgAxBaIgNBf0wNAiADBEAgACAEEFILIAIQEQRAQQAhBSADRQ0EIAQtAABBAXFFDQEgBy0ABUEBcUUNAQwECyAAIAYpAwAQngEiBkF/TA0CIAAgBEEgaiACEOsEIQcgACACEAsgB0EASA0DAkAgAwRAIAQoAgBBgDpBgM4AIAQoAiAiA0EQcRsgA3IQlgNFDQEgA0EBcQ0DIAQoAgAiBUEBcQ0BIANBEnENAyAFQQJxDQEMAwsgBkUNACAELQAgQQFxDQILIAAgBEEgahBSCyAAQbfYAEEAEBVBfyEFDAILAkAgAQRAIAEgBCkDIDcDACABIAQpAzg3AxggASAEKQMwNwMQIAEgBCkDKDcDCAwBCyAAIARBIGoQUgtBASEFDAELIAAgAhALCyAEQeAAaiQAIAULJQEBfyABQSkQQSIDBEAgACADKQMAIAIQIiAAIAMpAwggAhAiC
 
wsnAQF/IAFBKRBBIgIEQCAAIAIpAwAQJiAAIAIpAwgQJiAAIAIQIAsLFgAgACADKQMAIAMpAwggAykDEBDuAwurAQICfwN+IwBBEGsiBCQAQoCAgIDgACEGAkAgACAEQQxqIAMpAwAQjwIiBUUNACAAIAUgBCgCDEGQyAAQ7wMhASAAIAUQNwJAIAEQDCACQQJIcg0AIAAgAykDCCIIEDtFDQAgABA9IgcQDARAIAAgARALDAILIAAgB0EvIAFBBxAaQX9KBEAgACAHQS8gCBDsBCEGCyAAIAcQCwwBCyABIQYLIARBEGokACAGC70CAQN+IwBBEGsiAyQAIAQCfwJAAkAgACABQScQZyICRQRAQoCAgIAwIQFCgICAgDAhBgwBCyACKAIYBEBCgICAgDAhAUEBDAMLQoCAgIAwIQYgACACKQMAIgggAikDCCIHENYBIgEQDA0AIAEQKgRAIAJBATYCGEKAgICAMCEBQQEMAwsgAigCEARAIAAgACABQgAQcRA+IgYQDA0BIAYQ9AEEQCAAIANBCGogACAIQdUAIAhBABATEK0BQQBIDQIgACAIQdUAAn4gB6cgAykDCCACKAIUEPYCIgdCgICAgAh8Qv////8PWARAIAdC/////w+DDAELIAe5EBYLEElBf0wNAgsgACAGEAsMAgsgAkEBNgIYDAELIAAgARALIAAgBhALQoCAgIDgACEBC0EACzYCACADQRBqJAAgAQsGACABEA4LowYCBH8KfiMAQTBrIgQkAAJAIAEQIUUEQCAAECdCgICAgOAAIQEMAQtCgICAgDAhCQJAAkAgACADKQMAECwiDxAMBEBCgICAgDAhCkKAgICAMCEBQoCAgIAwIQxCgICAgDAhEAwBCyAAIAEgACkDSBDvASIQEAwEQEKAgICAMCEKQoCAgIAwIQFCgICAgDAhDAwBCwJAAkAgACAAIAFB7QAgAUEAEBMQPiIMEAwNACAMpyICQfUAQQ
 
AQ1QEhBiACQfkAQQAQ1QFBf0wEQCAAQb4VIAxBvdMAEL0BIgwQDA0BCyAEIAw3AyggBCABNwMgIAAgEEECIARBIGoQrwEiChAMDQEgABBOIgEQDA0CAkAgAykDCCIIEBEEQCAEQX82AhwMAQsgACAEQRxqIAgQxQFBAEgNAyAEKAIcDQAMBAsCQCAPpyIHKAIEQf////8HcSIFBEAgBkF/c0EfdiEGIAWtIRFBACECA0AgAq0hCyACIQMDQCADIAVPDQMgACAKQdUAIAOtIg4QSUEASA0GIAAgCRALIAAgCiAPENYBIgkQDA0GAkAgCRAqDQAgACAEQRBqIAAgCkHVACAKQQAQExCtAQ0HIAQpAxAiCCARVQRAIAQgETcDECARIQgLIAggC1ENACAAIAcgAiADEJkBIgsQDA0HIAAgASANIAsQbUEASA0HIA1CAXwiCyAENQIcUQ0IIAAgBEEIaiAJEEANByAIpyECQgEhCCANIAQpAwgiDkIBIA5CAVUbfCENA0AgCyANUQ0DIAAgACAJIAgQcRA+Ig4QDA0IIAAgASALIA4QbUEASA0IIAhCAXwhCCALQgF8IgsgBDUCHFINAAsMCAsgByAOIAYQ9gKnIQMMAAsACwALIAAgCiAPENYBIgkQDA0DIAkQKkUNBEEAIQILIAAgByAFIAIgAiAFSxsgBRCZASIIEAwNAiAAIAEgDSAIEG1Bf0oNAwwCC0KAgICAMCEKC0KAgICAMCEBCyAAIAEQC0KAgICA4AAhAQsgACAPEAsgACAQEAsgACAKEAsgACAMEAsgACAJEAsLIARBMGokACABC5kCAQR+An4CQCABECFFBEAgABAnDAELQoCAgIAwIQYCQAJAIAAgAykDABAsIgcQDARAQoCAgIAwIQQMAQsgACABQdUAIAFBABATIgQQDA0AIAAgBEIAEFhFBEAgACABQdUAQgAQSUEASA0BCyAAIAEgBxDWASIFEAwNASAAIAF
 
B1QAgAUEAEBMiBhAMDQECQCAAIAYgBBBYBEAgACAEEAsMAQsgACABQdUAIAQQSUEATg0AQoCAgIAwIQQMAgsgACAHEAsgACAGEAtC/////w8gBRAqDQMaIAAgBUHXACAFQQAQEyEBIAAgBRALIAEPC0KAgICAMCEFCyAAIAUQCyAAIAcQCyAAIAYQCyAAIAQQCwtCgICAgOAACwu0AwIBfwV+IwBBIGsiAiQAAkACQCABECFFBEAgABAnDAELQoCAgIAwIQYCQCAAIAMpAwAQLCIJEAwEQEKAgICAMCEFQoCAgIAwIQdCgICAgDAhCAwBCwJAAkAgACABIAApA0gQ7wEiCBAMBEBCgICAgDAhBQwBCyAAIAAgAUHtACABQQAQExA+IgUQDEUNAQtCgICAgDAhBwwBCyACIAU3AxggAiABNwMQIAAgCEECIAJBEGoQrwEiBxAMDQAgACACQQhqIAAgAUHVACABQQAQExCtAQ0AIAAgB0HVAAJ+IAIpAwgiAUKAgICACHxC/////w9YBEAgAUL/////D4MMAQsgAbkQFgsQSUEASA0AIABBJxCgASIGEAwNACAAQSAQLiIDRQ0AIAMgCTcDCCADIAc3AwAgAyAFpyIEQecAQQAQ1QFBf3NBH3Y2AhAgBEH1AEEAENUBIQQgA0EANgIYIAMgBEF/c0EfdjYCFCAGIAMQhwEgACAIEAsgACAFEAsMAgsgACAJEAsgACAIEAsgACAFEAsgACAHEAsgACAGEAsLQoCAgIDgACEGCyACQSBqJAAgBgulAwICfwV+IwBBEGsiAiQAAkACQCABECFFBEAgABAnDAELQoCAgIAwIQYCQAJAIAAgAykDABAsIggQDA0AIAAgACABQe4AIAFBABATEC0iA0EASA0AAkAgA0UEQCAAIAEgCBDWASEHDAELIAAgACABQe8AIAFBABATEC0iA0EASA0BIAAgAUHVAEIAEElBAEgNASAAEE4iBxAM
 
DQIgCKchBANAIAAgBhALIAAgASAIENYBIgYQDA0DIAYQKkUEQCAAIAAgBkIAEHEQPiIJEAwNBCAJEPQBIQUgACAHIAogCRCMAUEASA0EIApCAXwhCiAFRQ0BIAAgAkEIaiAAIAFB1QAgAUEAEBMQrQFBAEgNBCAAIAFB1QACfiAEIAIpAwggAxD2AiIJQoCAgIAIfEL/////D1gEQCAJQv////8PgwwBCyAJuRAWCxBJQX9MDQQMAQsLIAqnDQAgACAHEAtCgICAgCAhBwsgACAGEAsgACAIEAsMAwtCgICAgDAhBwsgACAHEAsgACAGEAsgACAIEAsLQoCAgIDgACEHCyACQRBqJAAgBwuwAgEEfyMAQRBrIgQkAAJ/QX8gACgCMA0AGgJAIAAoAigiAiAAKAIsSARAIAAoAgQhAgwBCyACIAJBAXVqQR9qQW9xIQUgACgCACECAkACQCAAKAIEIgMgAEEIakYEQCACQQAgBUEDdCAEQQxqELQBIgJFDQEgAiADKQMANwMAIAIgAykDGDcDGCACIAMpAxA3AxAgAiADKQMINwMIIAQoAgwhAyAAIAI2AgQgACADQQN2IAVqNgIsDAMLIAIgAyAFQQN0IARBDGoQtAEiAg0BCyAAEPAEIAAoAgAgARALIABBfzYCMEF/DAILIAQoAgwhAyAAIAI2AgQgACADQQN2IAVqNgIsCyAAIAAoAigiAEEBajYCKCACIABBA3RqIAE3AwBBAAshAiAEQRBqJAAgAgvXBAIMfwN+IwBBMGsiAyQAQoCAgIDgACERAkAgACABQQEQ2QEiBEUNACAAIANBCGpBABBCGgJAIAAgAhAsIg8QDA0AAkAgBCgCBEEQaiILLQAAIgVBIXEiDEUEQCADQgA3AyAMAQsgACABQdUAIAFBABATIgIQDA0BIAAgA0EgaiACEK0BDQELQQAhBAJAIAstAAEiBkEBSQ0AIAAgBkEDdBAuIgcNAEEAIQcMA
 
QsgBUEQcSENIAVBAXEhDiAPpyIGQRBqIQkgBikCBCICp0EfdiEKIAMpAyAhEAJAA0AgECACQv////8Hg1UNAQJAIAcgCyAJIBCnIAKnQf////8HcSAKIAAQgAYiBUEBRwRAIAVBAEgNASAMRUEAIAVBAkcbDQMgACABQdUAQgAQSUEASA0EDAMLIAcoAgAhCCADIAcoAgQgCWsgCnUiBTYCLCADIAWsNwMgIAQgCCAJayAKdSIISARAIANBCGogBiAEIAgQVw0ECyAORQRAIAAgAUHVACAFIgStEElBAE4NAwwECyAFIQQCQCAFIAhHDQACQAJAIA1FDQAgBigCBCIEQX9KDQAgCCAEQf////8HcUkNAQsgAyAIQQFqIgQ2AiwMAQsgBiADQSxqENcBGiADKAIsIQQLIAMgBKwiEDcDICAGKQIEIQIgBSEEDAELCyAAQcXSAEEAEEQMAQsgA0EIaiAGIAQgBigCBEH/////B3EQVw0AIAAgDxALIAAgBxAZIANBCGoQOCERDAELIAAgDxALIAAgBxAZIANBCGoQRQsgA0EwaiQAIBELYQICfwF+IAAgAUE8IAFBABATIgQQDARAQX8PCyAAIAQgACkDSBBYIQMgACAEEAsCQCADRQ0AQX8hAiAAIAFBhgEgAUEAEBMiARAMDQAgAUEwQQAQ/wMhAiAAIAEQCwsgAgvgCgIFfwx+IwBBkAFrIgIkACADKQMIIRMCQCABECFFBEAgABAnQoCAgIDgACERDAELIAAgAkHIAGpBABBCGiACQRBqIgRBADYCMCAEQoCAgIDAADcDKCAEIAA2AgAgBCAEQQhqNgIEQoCAgIAwIQ1CgICAgOAAIRECQAJAIAAgAykDABAsIg4QDARAQoCAgIAwIQxCgICAgDAhCkKAgICAMCELQoCAgIAwIRAMAQtCgICAgDAhEAJAIAAgExA7IgdFBEAgACATECwiEBAMDQEgEKchBQsgACAAIAFB7g
 
AgAUEAEBMQLSIEQQBIDQAgBARAIAAgACABQe8AIAFBABATEC0iBkEASA0BIAAgAUHVAEIAEElBAEgNAQsCQCAFRSAERXINACAFKQIEQv////8Hg0IAUg0AIAAgARDLB0UNACAAIAEgDhDKByERDAELIA6nIQMgBEUhBUKAgICAMCELA0ACQAJ/AkACQAJAIAAgASAOENYBIgkQDA0AIAkQKg0EIAUgAkEQaiAJEMkHQQBIIgRyBEBBAkEEIAQbDAQLIAAgCxALIAAgACAJQgAQcRA+IgsQDA0AIAsQ9AFFDQIgACACQeAAaiAAIAFB1QAgAUEAEBMQrQFBf0oNAQtCgICAgDAhDEKAgICAMCEKDAYLIAAgAUHVAAJ+IAMgAikDYCAGEPYCIglCgICAgAh8Qv////8PWARAIAlC/////w+DDAELIAm5EBYLEEkiBEEATg0AIARBHnZBAnEMAQtBAAshBEKAgICAMCEMQoCAgIAwIQogBA4FAQUDBQAFCwtBACEGQQAhBUKAgICAMCEMQoCAgIAwIQoDQCAFIAIoAjhIBEAgACACQQxqIAIoAhQgBUEDdGopAwAiDxDYAUEASA0DIAAgCxALIAAgACAPQgAQcRA+IgsQDA0DIAAgAiAAIA9B1wAgD0EAEBMQrQENAwJAIAIpAwAiCSADKQIEQv////8HgyIBVQRAIAIgATcDACABIQkMAQsgCUJ/VQ0AQgAhCSACQgA3AwALIAAgChALIAAQTiIKEAwNAyAAIApCACALEA4iCxBtQQBIDQMgAigCDCIEQQEgBEEBSxsiBK0hFEIBIQEDQCABIBRSBEAgACAPIAEQcSISEAwNBSASEBFFBEAgACASED4iEhAMDQYLIAAgCiABIBIQbSEIIAFCAXwhASAIQQBODQEMBQsLIAAgDRALIAAgD0GHASAPQQAQEyINEAwNAwJAIAcEQCAAIAogFCAJQv////8PgxBtQQBIDQUgACAKIAR
 
BAWqtIA4QDhBtQQBIDQUCQCANEBENACAAIAogBEECaq0gDRAOIgEQbUEATg0AIAEhDQwGCyACIAo3A2ggAkKAgICAMDcDYCAAIAwQCyAAIAAgE0ECIAJB4ABqQQAQjwMQPiEMDAELQoCAgIAwIQEgDRARRQRAIAAgDRApIgEQDA0FCyACIBA3A4gBIAIgATcDgAEgAiAKNwN4IAIgDjcDaCACIAs3A2AgAiAJQv////8PgzcDcCAAIAwQCyAAIAJB4ABqEPEEIQwgACABEAsLIAwQDA0DIAkgBqxZBEAgAkHIAGogAyAGIAmnEFcaIAJByABqIAwQiQEaIAunKQIEQv////8HgyAJfKchBgsgBUEBaiEFDAELCyACQcgAaiADIAYgAygCBEH/////B3EQVxogAkHIAGoQOCERDAILQoCAgIAwIQxCgICAgDAhCkKAgICAMCELCyACQcgAahBFCyACQRBqEPAEIAAgEBALIAAgCxALIAAgChALIAAgDBALIAAgDRALIAAgDhALCyACQZABaiQAIBELkgEAIwBBIGsiAiQAAn4CQCABECFFBEAgABAnDAELIAAgAkEIakEAEEIaIAJBCGpBLxA8GgJAIAJBCGogACABQewAIAFBABATEIoBDQAgAkEIakEvEDwaIAJBCGogACABQe0AIAFBABATEIoBDQAgAkEIahA4DAILIAJBCGoQRQtCgICAgOAACyEBIAJBIGokACABC6YBAQN/IABBAjoAaCAAQdgAaiECIABB4ABqIQMDQCADIAAoAmQiAUcEQCABQXxqLQAAQQ5xBEAgARBHIAEgAhBNDAIFIAAgAUF4ahDCBQwCCwALCyAAQQA6AGggACgCXCEBAkADQCABIAJHBEAgAUF8ai0AAEEOcQ0CIAEoAgQhAyAAIAFBeGoQICADIQEMAQsLIAIQbg8LQf85QaENQYctQeA6EAAACz8BAX5CgICAgOAAIQQgACABIAMpAwAQ
 
1gEiARAMBH5CgICAgOAABSABECohAiAAIAEQCyACRa1CgICAgBCECwuAAgEDfgJAIAAgAUEBENkBIgJFDQAgAykDCCEGAkACQCAAIAMpAwAiBEEAENkBIgMEQCAGEBFFBEAgAEHn0gBBABAVQoCAgIDgAA8LIAM1AgBCgICAgJB/hBAOIQQgAzUCBEKAgICAkH+EEA4hBQwBC0KAgICAMCEFAn4gBBARBEAgAEEvEDIMAQsgACAEECwLIgQQDA0BIAAgBCAGEPQDIgUQDA0BCyAAIAI1AgBCgICAgJB/hBALIAAgAjUCBEKAgICAkH+EEAsgAiAFPgIEIAIgBD4CACAAIAFB1QBCABBJQQBIDQEgARAODwsgACAEEAsgACAFEAsLQoCAgIDgAAtrAQF/IAFC/////29YBEAgABAnQoCAgIDgAA8LAn4gACABQQAQ2QEiA0UEQEKAgICAMCAAIAEgACgCKCkDkAEQWA0BGiAAQRIQkQNCgICAgOAADwsgAiADKAIELQAQcUEAR61CgICAgBCECwvHAwEHfyMAQSBrIgUkAAJAAkACQAJAAkAgAUL/////b1gEQCAAECcMAQsgACABIAAoAigpA5ABEFgNAiAAIAFBARDZASICDQELQoCAgIDgACEBDAMLIAIoAgAiBykCBKciAkH/////B3EiAw0BCyAAQcDSABByIQEMAQsgACAFQQhqIAMgAkEfdhCfAxogBygCBEH/////B3EhCEEAIQADQAJAAkAgACAISARAIABBAWohAkF/IQYCQAJ/AkACQAJAAkACQAJAAkAgByAAEDEiA0Glf2oOAwMBAgALIAIhAAJAIANBdmoOBAQLCwUACyADQS9HDQcgBEUNBUEBIQRBLyEDDAcLQdwAIQMgAiAITg0GIABBAmohACAHIAIQMSEGDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAhOcg0GIABBAmogAiAHIAIQMUHdAEYiAhshA
 
EHdAEF/IAIbIQZBASEEDAcLQe4ADAILQfIADAELQQAhBEEvCyEGQdwAIQMLIAIhAAwCCyAFQQhqEDghAQwDCyACIQBBASEECyAFQQhqIAMQkgEaIAZBAEgNACAFQQhqIAYQkgEaDAALAAsgBUEgaiQAIAEL2AICA38BfiMAQRBrIgQkAAJAIAFC/////29YBEAgABAnQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQe4AIAFBABATEC0iAkEASA0AIAIEfyAEQecAOgAIIARBCWoFIARBCGoLIQIgACAAIAFBj88AEMUCEC0iA0EASA0AIAMEQCACQekAOgAAIAJBAWohAgsgACAAIAFBms8AEMUCEC0iA0EASA0AIAMEQCACQe0AOgAAIAJBAWohAgsgACAAIAFBpM8AEMUCEC0iA0EASA0AIAMEQCACQfMAOgAAIAJBAWohAgsgACAAIAFB7wAgAUEAEBMQLSIDQQBIDQAgAwRAIAJB9QA6AAAgAkEBaiECCyAAIAAgAUGzzwAQxQIQLSIDQQBIDQAgACAEQQhqIAMEfyACQfkAOgAAIAJBAWoFIAILIARBCGprEPwBIQULIARBEGokACAFC4EBAgJ/AX4jAEEgayIDJABCgICAgOAAIQUCQCAAIANBCGogAhBCDQBBACEAIAJBACACQQBKGyECAkADQCAAIAJGDQEgAEECdCEEIABBAWohACADQQhqIAEgBGooAgAQvgFFDQALIANBCGoQRQwBCyADQQhqEDghBQsgA0EgaiQAIAULowEBBn8jAEEQayIEJABBfyEDAkAgACACECwiAhAMDQAgACACpyIHKAIEQf////8HcSIIQQEQS0ECdBAuIgVFBEAgACACEAsgAUEANgIADAELIARBADYCDEEAIQMDQCAGIAhORQRAIAUgA0ECdGogByAEQQxqENcBNgIAIANBAWohAyAEKAIMIQYMAQsLIAAgAhALIAEgBTYCAA
 
sgBEEQaiQAIAMLtgICA38BfiMAQRBrIgQkAAJAIAAgARBfIgEQDA0AIAAgBEEIaiABENUHIQYgACABEAtCgICAgOAAIQEgBkEASA0AAkAgAkUNACADKQMAIgcQEQ0AAkAgACAEQQxqIAcQjwIiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIFQb1/akH/AXFBAUsNACAEKAIMIAJBA2ogAkECaiADGyACa0EBakYNAgsgACACEDcgAEHAzgAQaQsgACAEKAIIEBkMAgsgACACEDcgBSADQQF0akG9f2ohBQsgBEEEaiAEKAIIIgMgBiAFIAAoAhAQwgkhAiAAIAMQGSACQQBIDQAgACAEKAIEIAIQ1AchASAAIAQoAgQQGQsgBEEQaiQAIAELoAEBBH8gAEHUAGohASAAQdAAaiECAkADQCACIAEoAgAiAUcEQCABQXhqIgMoAgBBAEwNAiABQXxqIgQgBC0AAEEPcToAACAAIANBBxCQBCABQQRqIQEMAQsLIABB5ABqIQEgAEHgAGohAgNAIAEoAgAiASACRkUEQCAAIAFBeGpBCBCQBCABQQRqIQEMAQsLDwtB1jlBoQ1B0SxB9zkQAAALugECA38BfgJAAkAgAhBdRQ0AIAIQeSEHIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACAHIAqnIggoAgRB/////wdxTw0AAkBBBCAGEJYDRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB/Ug0AIAOnIgkpAgRC/////weDQgFSDQAgCCAHEDEgCUEAEDFGDQILIAAgBkHZFxB2DwsgACABIAIgAyAEIAUgBkGAgAhyEHUhAgsgAgsdAAJ/IAIQXQRAQQAgAhB5IAEQiQRJDQEaC0EBCwugAQEDfwJAIAMQXUUNACACpykDICICQoCAgIBwg0KAgICAkH9SDQAgAxB5IgM
 
gAqciBSgCBCIGQf////8HcU8NAEEBIQQgAUUNAAJ/IAZBf0wEQCAFIANBAXRqLwEQDAELIAMgBWotABALIQMgAUEENgIAIAAgA0H//wNxEJoDIQIgAUKAgICAMDcDGCABQoCAgIAwNwMQIAEgAjcDCAsgBAuEAQEGfyAAQeAAaiIEEG4gAEHQAGohBSAAKAJUIQICQANAIAUgAiIBRwRAIAFBfGoiAy0AAEEQTw0CIAEoAgQhAiAAIAFBeGoiBkEGEJAEIAMgAy0AAEEPcUEQcjoAACAGKAIADQEgARBHIAEgBBBNDAELCw8LQZw5QaENQa4sQak5EAAAC9YBAgV/An4gASkDSCEHQX8hBSAAIAApAzBBDRBQIggQDEUEQCAIpyICIAenIgM2AiAgAyADKAIAQQFqNgIAIAJCADcCJAJAAkACQCADKAI8IgRFDQAgACAEQQJ0EGoiBEUNASACIAQ2AiRBACECA0AgAiADKAI8Tg0BIAMoAiQgAkEDdGotAAAiBkEBcQRAIAAgBkEDdkEBcRDVAyIGRQ0DIAQgAkECdGogBjYCAAsgAkEBaiECDAALAAsgASAINwNIQQAhBQwBCyAIIQcLIAAgBxALCyAFC2gBAn8gAacoAhAiAyADKAIYIAJxQX9zQQJ0aigCACEAIAMQKCEDA0ACQCAARQRAQQAhAAwBCyAAQQN0IANqIgRBeGohACAEQXxqKAIAIAJGDQAgACgCAEH///8fcSEADAELCyAAQQBHC08BAn8jAEEQayIDJAACQCADQQxqIAEgAhD1BCIBQQBIBEBBfyEBDAELIAMoAgwiAkEBdkEAIAJBAXFrcyEECyAAIAQ2AgAgA0EQaiQAIAEL7AEBBX8gAkEAIAJBAEobIQUDQCADIAVGRQRAIAQgASADQQF0ai8BAHIhBCADQQFqIQMMAQsLAkACQCAAKAIIIAJqIgYgACgCDCIHSgRAQX8hAyAAIAYgBBDLAkUNAQwC
 
CyAEQYACSA0AIAAoAhANAEF/IQMgACAHENwDDQELAkAgACgCEEUEQEEAIQMDQCADIAVGDQIgACgCBCAAKAIIIANqaiABIANBAXRqLQAAOgAQIANBAWohAwwACwALIAAoAgQgACgCCEEBdGpBEGogASACQQF0ECQaCyAAIAAoAgggAmo2AghBACEDCyADC3gCAX8BfgJAIAEQXQ0AQQAgACgCECgCOCABQQJ0aigCACkCBCIDQoCAgICAgICAQINCgICAgICAgICAf1IgA0KAgICA8P///z+DUCADQv//////////v39WcRsNACADp0F/c0EfdkEBIANC/////weDUBshAgsgAgt4AgF/An5CgICAgOAAIQMgACABQeoAIAFBABATIgQQDEUEQCAAQTAQoAEiAxAMBEAgACAEEAsgAw8LIABBEBBqIgJFBEAgACADEAsgACAEEAtCgICAgOAADwsgARAOIQEgAiAENwMIIAIgATcDACADIAIQhwELIAML7wECAn8CfgJAAkAgAikCBCIFp0H/////B3EgASkCBCIGp0H/////B3FqIgNBgICAgARPBEAgAEH0DUEAEEQMAQsgACADIAUgBoSnQR92IgQQ+gEiAA0BC0KAgICA4AAPCwJAIARFBEAgAEEQaiABQRBqIAEoAgRB/////wdxECQiBCABKAIEQf////8HcWogAkEQaiACKAIEQf////8HcRAkGiADIARqQQA6AAAMAQsgAEEQaiIDIAEgASgCBEH/////B3EQ9gQgAyABKAIEQQF0aiACIAIoAgRB/////wdxEPYECyAArUKAgICAkH+EC+ACAgF/An4jAEEgayIFJAACQAJAIAAgAUElEGciAkUNAAJAIAIpAwAiARARRQRAAkACQCABpyIDLwEGQWtqQf//A3FBCE0EQCADEKsBRQ0BIAAQcAwFCyAAIAVBHGogARDYAQ0EIAUoAhwhBgwBCyAFIAMoAigiBjYCH
 
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
 
AIAAgAq1CgICAgHCEECYLQQAhAiABECghAwNAIAIgASgCIE9FBEAgACADKAIEEPIBIAJBAWohAiADQQhqIQMMAQsLIAEQnQIgACABELcCECAPC0HwL0GhDUGtIkGKMBAAAAtEAQJ/IAJBACACQQBKGyEEA0AgAyAERgRAQQAPCyADQQF0IQIgA0EBaiEDIAAgAmovAQAgASACai8BAGsiAkUNAAsgAgsvAQF/A0AgASADRkUEQCAAIANBAXRqLwEAIAJBhwJsaiECIANBAWohAwwBCwsgAgtjAAJAAn8CQCABRQRAIAINAQwDCyACRQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQwDC0EAIAAoAgQgAmogACgCCEsNARogASACENYFDwsgACACEIgFCw8LQQALJgAgAQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEN4DCwscAQF/IAFBKBBBIgIEQCAAIAIQ5gMgACACECALCyUBAX8gAacoAiAiAwRAIAAgAykDACACECIgACADKQMIIAIQIgsLJwEBfyABpygCICICBEAgACACKQMAECYgACACKQMIECYgACACECALCx4BAX8gAacoAiAiAgRAIAAgAikDABAmIAAgAhAgCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDBBUUNACACKAIMIgNFDQAgACADEOADIAIpAwAhAQsgACABECYgACACECALC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECILIAAgAykDGCACECIgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBcGohBCACQXRq
 
KAIARQRAAkAgAygCAARAIAQQiQUMAQsgACACKQMQECYLIAAgAikDGBAmCyAAIAQQICAGIQIMAQsLIAAgAygCEBAgIAAgAxAgCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIgsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEMEFBH4gAhBHIAI1AgxCgICAgHCEBSABCxAmIAAgAhAgCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK0ASIDRQ0AIAAoArwBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEFAAsgACACECALCykBAX8gACABpyICNQIkQoCAgICQf4QQJiAAIAI1AiBCgICAgJB/hBAmCxEAIAAgAacoAiApAwAgAhAiCxkBAX8gACABpygCICICKQMAECYgACACECALQQEDfwJAIAFBDxBBIgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECIgA0EBaiEDDAALAAsLQwEDfyABQQ8QQSIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJiACQQFqIQIMAQsLIAAgAxAgCwtJAQJ/IAAgAacoAiAiBCkDACACECIgACAEKQMIIAIQIgNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQIiADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECYgACACKQMIECYDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAmIANBAWohAwwBCwsgACACECALjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECILIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALI
 
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
 
AIACcC5sBAgF/AX4gAL1C////////////AIMiAr8hAAJ8IAJCIIinIgFBwdyY/wNNBEBEAAAAAAAA8D8gAUGAgMDyA0kNARogABCiAiIAIACiIABEAAAAAAAA8D+gIgAgAKCjRAAAAAAAAPA/oA8LIAFBwdyYhARNBEAgABCiBCIARAAAAAAAAPA/IACjoEQAAAAAAADgP6IPCyAAEOoFCwsFACAAmwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABDnBSEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARChBCECIAErAwAgASsDCCACQQFxEOcFIQALIAFBEGokACAAC7wCAwN/A34BfCMAQSBrIgIkACAAvUL///////////8AgyIFIAG9Qv///////////wCDIgYgBSAGVBsiB78hAAJAIAdCNIinIgNB/w9GDQAgBSAGIAUgBlYbIgW/IQECQCAHUA0AIAVCNIinIgRB/w9GDQAgBCADa0HBAE4EQCABIACgIQAMAgsCfCAEQf4LTwRAIABEAAAAAAAAMBSiIQAgAUQAAAAAAAAwFKIhAUQAAAAAAACwawwBC0QAAAAAAADwPyADQbwESw0AGiAARAAAAAAAALBroiEAIAFEAAAAAAAAsGuiIQFEAAAAAAAAMBQLIQggAkEYaiACQRBqIAEQ6QUgAkEIaiACIAAQ6QUgCCACKwMAIAIrAxCgIAIrAwigIAIrAxign6IhAAwBCyABIQALIAJBIGokACAAC60DAgV/AX4gAb1C////////////AINCgICAgICAgPj/AFhBACAAvUL///////////8Ag0KBgICAgICA+P8AVBtFBEAgACABoA8LIAG9IgdCIIinIgJBgIDAgHxqIAenIgVyRQRAIAAQoAQPCyAHQj6Ip0ECcSIGIAC9IgdCP4in
 
ciEDAkACQCAHQiCIp0H/////B3EiBCAHp3JFBEACQCADQQJrDgICAAMLRBgtRFT7IQnADwsgAkH/////B3EiAiAFckUEQEQYLURU+yH5PyAApg8LAkAgAkGAgMD/B0YEQCAEQYCAwP8HRw0BIANBA3RBkJwEaisDAA8LIARBgIDA/wdHQQAgAkGAgIAgaiAETxtFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCgBAshAAJAAkACQCADDgMFAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RBsJwEaisDAA8LRBgtRFT7IQlAIQALIAALxwEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABDSAgwBCyAAIAChIAJBgIDA/wdPDQAaAkACQAJAAkAgACABEKEEQQNxDgMAAQIDCyABKwMAIAErAwgQ0gIMAwsgASsDACABKwMIQQEQ0wKaDAILIAErAwAgASsDCBDSApoMAQsgASsDACABKwMIQQEQ0wILIQAgAUEQaiQAIAALQAEBfiMAQRBrIgIkAEKAgICA4AAhBCAAIAJBCGogAykDABDCAUUEQCAAIAEgAikDCBD/AiEECyACQRBqJAAgBAu8DgIQfwJ8IwBBsARrIgYkACACIAJBfWpBGG0iBEEAIARBAEobIg1BaGxqIQhB9IUEKAIAIgkgA0F/aiIHakEATgRAIAMgCWohBCANIAdrIQIDQCAGQcACaiAFQQN0aiACQQBIBHxEAAAAAAAAAAAFIAJBAnRBgIYEaigCALcLOQMAIAJBAWohAiAFQQFqIgUgBEcNAAsLIAhBaGohCkEAIQQgCUEAIAlBAEobIQUgA0EBS
 
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
 
CAFIAk3AwAgACAKIAFBAiAFECMiDhAMDQEgACAJEAsgACAMEAsLIAAgDhALIAAgBSkDGBALDAELCyAAIAUpAxgQCyAAIAkQCyAAIAwQCwwBC0KAgICAMCEICyACRQ0BCyAIECEEQCAAIAhBARCwARoLIAAgCxALIAAgCBALIAAgChALIAAgARALDAELIAEhDQsgBUEgaiQAIA0LgwIDAn8BfgF8IAC9IgNCIIinQf////8HcSIBQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiECAkAgAUH//z9NBEBBk/H9ywIhAiAARAAAAAAAAFBDor0iA0IgiKdB/////wdxIgFFDQELIAAgA0KAgICAgICAgIB/gyABQQNuIAJqrUIghoS/IgQgBKIgBCAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIASivUKAgICACHxCgICAgHyDvyIAIACioyIEIAChIAAgAKAgBKCjIACiIACgIQALIAALsgEDAX8BfgF8IAC9IgJC////////////AIO/IQACQCACQjSIp0H/D3EiAUGZCE8EQCAAENECRO85+v5CLuY/oCEADAELIAFBgAhPBEAgACAAoEQAAAAAAADwPyAAIACiRAAAAAAAAPA/oJ8gAKCjoBDRAiEADAELIAFB5QdJDQAgACAAoiIDIANEAAAAAAAA8D+gn0QAAAAAAADwP6CjIACgEKQDIQALIAAgAJogAkJ/VRsLyAEBAX8CQAJAIAAgAXNBA3ENACABQQNxBEADQCAAIAEtAAAiAjoAACACRQ0DIABBAWohACABQQFqIgFBA3ENAAsLIAEoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENAANAIAAgAjYCACABKAIEIQIgAEEEaiEAIAFBBGohASACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLIA
 
AgAS0AACICOgAAIAJFDQADQCAAIAEtAAEiAjoAASAAQQFqIQAgAUEBaiEBIAINAAsLC9kBAQJ/AkAgAUH/AXEiAwRAIABBA3EEQANAIAAtAAAiAkUgAiABQf8BcUZyDQMgAEEBaiIAQQNxDQALCwJAIAAoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENACADQYGChAhsIQMDQCACIANzIgJBf3MgAkH//ft3anFBgIGChHhxDQEgACgCBCECIABBBGohACACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLA0AgACICLQAAIgMEQCACQQFqIQAgAyABQf8BcUcNAQsLIAIPCyAAEEMgAGoPCyAACyYBAX8DQCABRQRAQQAPCyAAIAFBf2oiAWoiAi0AAEEvRw0ACyACC/IIAQJ/IwBBoARrIgIkAEF+IQMCQEGQvwIgARCkBCIBQQBIDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUFeag4TAAcBAgYQDg0RDwwICRIEAwULChMLQX8hA0EAIABBAEGAARCBAUUNExoMFAtBfyEDQQAgAEEAQYCAxAAQgQFFDRIaDBMLIAJChoCAgPAANwMIIAJCgICAgBA3AwAgACACEIABDBELIAJCg4CAgPAANwMgIAJCgYCAgBA3AxggAkKAgICAgIAENwMQIAAgAkEQahCAAQwQCyACQUBrQoOAgIDwADcDACACQoGAgIAwNwM4IAJCgICAgMAANwMwIAAgAkEwahCAAQwPCyACQoOAgIDwADcDYCACQoGAgIDAADcDWCACQoCAgIAgNwNQIAAgAkHQAGoQgAEMDgsgAkEHNgKQASACQoOAgIAwNwOIASACQoOAgIAQNwOAASACQoGAgIDAADcDeCACQoCAgIDgATcDcCAAIAJB8ABqEIABDA0LIAJCg4CAgPAANwPIASACQoGAgIAgNwPAASACQoOAgIA
 
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
 
AAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgF/An4gAL0iAkI0iKdB/w9xIgFB/gdNBEAgAkKAgICAgICAgIB/gyEDIAFB/gdHIAJCgICAgICAgPC/f1FyRQRAIANCgICAgICAgPg/hL8PCyADvw8LIAFBsghNBHwgAkI/hyACfEIBQbMIIAFrrYYiAkIBiHxCACACfYO/BSAACwsvACAARAAAAAAAAAAAYiABRAAAAAAAAAAAYnJFBEAgAb0gAL2Evw8LIAAgARCBCQsvACAARAAAAAAAAAAAYiABRAAAAAAAAAAAYnJFBEAgAb0gAL2Dvw8LIAAgARCACQu6AwIFfwJ8IwBBEGsiBiQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAWDAELAkAgAykDACIBQv////8PWARAIAJBASACQQFKGyEJIAGnIQdBASEFA0AgBSAJRwRAIAMgBUEDdGopAwAiAUKAgICAEFoEQCAGIAe3OQMIDAQFIAGnIQgCfyAEBEAgByAIEEsMAQsgByAIELEBCyEHIAVBAWohBQwCCwALCyAHrQwCC0KAgICA4AAgACAGQQhqIAEQSA0BGkEBIQULIAUgAiAFIAJKGyECA0AgAiAFRwRAQoCAgIDgACAAIAYgAyAFQQN0aikDABBIDQIaAkAgBisDCCILvUL///////////8Ag0KAgICAgICA+P8AVg0AIAYrAwAiCr1C////////////AINCgYCAgICAgPj/AFoEQCAGIAo5AwgMAQsgBARAIAYgCyAKEKMKOQMIDAELIAYgCyAKEKIKOQMICyAFQQFqIQUMAQsLIAYrAwgiCr0CfyAKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAoQFgshASAGQRBqJAAgAQvQAQECfyMAQRBrIgIkAAJ+IAAgAUEmEGciA0UEQCAEQQA2AgBC
 
gICAgOAADAELAkAgAykDACIBEBFFBEAgAiADKAIMIgU2AgwgBSABpyIGKAIEQf////8HcUkNASAAIAEQCyADQoCAgIAwNwMACyAEQQE2AgBCgICAgDAMAQsgBiACQQxqENcBIQcgAyACKAIMNgIMIARBADYCACAHQf//A00EQCAAIAdB//8DcRCaAwwBCyAAIAYgBUEBdGpBEGpBAhCMBAshASACQRBqJAAgAQudAQEDfyABKAIAIgJBAUgEQEEADwsgAkF/aiEEAkACQCAAKAIEQX9MBEAgACAEQQF0ai8BECIDQYD4A3FBgLgDRyACQQJIcg0BIAAgAkF+aiICQQF0ai8BECIAQYDQAGpB//8DcUGACEsNASADQf8HcSAAQf8HcUEKdHJBgIAEaiEDDAILIAAgBGotABAhAwsgBCECCyABIAI2AgAgAwvZAgICfwJ+IwBBIGsiAiQAQoCAgIDgACEHAkAgACABEF8iARAMDQAgACACQQhqQQcQQhogAkEIakE8EDwaIAJBCGogBEEDdCIFQcDCAWooAgAiBhCIARpBnj0gBHZBAXFFBEAgAkEIakEgEDwaIAJBCGogBUHEwgFqKAIAEIgBGiACQQhqQcHDARCIARogACADKQMAEF8iCBAMBEAgACABEAsgAkEIahBFDAILIAinIQNBACEEA0AgBCADKAIEQf////8HcU9FBEACQCADIAQQMSIFQSJGBEAgAkEIakHEwwEQiAEaDAELIAJBCGogBRCSARoLIARBAWohBAwBCwsgACAIEAsgAkEIakEiEDwaCyACQQhqQT4QPBogAkEIaiABEIoBGiACQQhqQcvDARCIARogAkEIaiAGEIgBGiACQQhqQT4QPBogAkEIahA4IQcLIAJBIGokACAHC4oBAQJ/IwBBEGsiAiQAIAIgATYCDANAIAAgAkEMahCmCiIDEPUFDQALAkAgAxD3BUUEQEEAIQMMAQtBASEDIAIgAUEBa
 
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
 
4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZ1bmN0aW9uKQoAICBieXRlY29kZQAgIHBjMmxpbmUAJS0yMHMgJThsbGQKAEMgZnVuY3Rpb25zAGFycmF5cwAgIGZhc3QgYXJyYXlzACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZhc3QgYXJyYXkpCgAgIGVsZW1lbnRzAGJpbmFyeSBvYmplY3RzAG91dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5
 
dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wGwLgAAgC8AAEAwAACgMAAA8DAAAEAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0L8jBjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY
 
3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3
 
RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXk
 
gSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQA
 
cy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAA
 
AADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbG
 
V4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV
 
3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5v
 
dCBhIG9iamVjdABzdHJpbmcgZXhwZWN0ZWQAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB2YWx1ZSBpcyBub3QgaXRlcmFibGUAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQBKU19OZXdTeW1ib2xGcm9tQXRvbQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAbm90IGEgc3ltYm9sAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAWwBdAGdldCAAc2V0IABwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBwYXJlbnQgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIG51bGwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGpzX29wX2RlZmluZV9jbGFzcwByZWNlaXZlciBpcyBub3QgYW4gb2JqZWN0AHNldHRlciBpcyBmb3JiaWRkZW4AaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AaW52YWxpZCAnaW4nIG9wZXJhbmQAbm90IGEgY29uc3RydWN0b3IAICAgIGF0ICVzADolZAA8YW5vbnltb3VzPgAgKCVzACAobmF0aXZlKQBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAC4ALi4AYnl0ZWNvZGUgZnVuY3Rpb24gZXhwZWN0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAGNpcmN1bGFyIHJlZmVyZW5jZQBnZXQgJXMAc2V0ICVzAGNhbm5vd
 
CBjb252ZXJ0IHRvIG9iamVjdABub3JtYWxpemUAQbDOAAv1ARknAAADAAAAAAAAAHQAAABiYWQgbm9ybWFsaXphdGlvbiBmb3JtAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzACVzAGZsYWdzAHNvdXJjZQBnbG9iYWwAaWdub3JlQ2FzZQBtdWx0aWxpbmUAZG90QWxsAHVuaWNvZGUAc3RpY2t5AGV4ZWMAY29tcGlsZQB0ZXN0AHRvU3RyaW5nAFtTeW1ib2wucmVwbGFjZV0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wuc3BsaXRdAEGw0AAL4AN7JwAAAQEAAHUAAAAAAAAAgScAAAEBAAB2AAAAAAAAAIgnAAABAgEAdwAAAAAAAACPJwAAAQICAHcAAAAAAAAAmicAAAECBAB3AAAAAAAAAKQnAAABAggAdwAAAAAAAACrJwAAAQIQAHcAAAAAAAAAsycAAAECIAB3AAAAAAAAALonAAADAAAAAQAAADAAAAC/JwAAAwAAAAIAAAB4AAAAxycAAAMAAAABAAAAeQAAAMwnAAADAAAAAAAAAHoAAADVJwAAAwAAAAIAAAB7AAAA5icAAAMAAAABAAAAfAAAAPUnAAADAAAAAQAAAH0AAAAHKAAAAwAAAAEAAAB+AAAAFygAAAMAAAACAAAAfwAAACg/OikAb3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFJlZ0V4cCBleGVjIG1ldGhvZCBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbABub3QgYSBzdHJpbmcAeQBbU3ltYm9sLnNwZWNpZXNdAL8pAAABAQAAgAAAAAAAAABuZXh0AFtTeW1ib2wudG9TdHJpbmdUYWddAF
 
JlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAQaDUAAvXCuApAAADAAAAAAwAAIEAAADlKQAAAQMAAPopAAAAAAAAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudAB1bmV4cGVjdGVkIGNoYXJhY3RlcgBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAZXhwZWN0aW5nIHByb3BlcnR5IG5hbWUAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAGV4cGVjdGluZyAnJWMnACAAXHUlMDR4AEFycmF5IGxvbyBsb25nAEpTT04AAAAAAAAAAJQrAAADCAAAwCsAAAMAAABwYXJzZQBzdHJpbmdpZnkAsCsAAAMAAAACAAAAggAAALYrAAADAAAAAwAAAIMAAADlKQAAAQMAAJQrAAAAAAAAcHJveHk6IGluY29uc2lzdGVudCBpc0V4dGVuc2libGUAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBwcm94eTogaW5jb25zaXN0ZW50IGdldE93blByb3BlcnR5RGVzY3JpcHRvcgBpbnZhbGlkIGdldHRlcgBpbnZhbGlkIHNldHRlcgBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBwcm94eTogZHVwbGljYXR
 
lIHByb3BlcnR5AHByb3h5OiB0YXJnZXQgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50IGluIHByb3h5IG93bktleXMAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGRlZmluZVByb3BlcnR5IGV4Y2VwdGlvbgBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgaGFzAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgc2V0AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AHJldm9jYWJsZQBGLgAAAwAAAAIAAACEAAAAc2V0AGdldABoYXMAZGVsZXRlAGNsZWFyAHNpemUAZm9yRWFjaAB2YWx1ZXMAa2V5cwBlbnRyaWVzAFtTeW1ib2wuaXRlcmF0b3JdAE1hcABgLgAAAwAAAAIBAACFAAAAZC4AAAMAAAABAQAAhgAAAGguAAADAAAAAQEAAIcAAABsLgAAAwAAAAEBAACIAAAAcy4AAAMAAAAAAQAAiQAAAHkuAAABAgAAigAAAAAAAAB+LgAAAwAAAAEBAACLAAAAhi4AAAMABAAAAQAAjAAAAI0uAAADAAAAAAEAAIwAAACSLgAAAwAIAAABAACMAAAAmi4AAAMJAACSLgAA/////+UpAAABAwAArC4AAAAAAABhZGQAU2V0AEGA3wALtwFwLwAAAwABAAEBAACFAAAAaC4AAAMAAQABAQAAhwAAAGwuAAADAAEAAQEAAIgAAABzLgAAAwABAAABAACJAAAAeS4AAAECAQCKAAAAAAAAAH4uAAADAAEAAQEA
 
AIsAAACGLgAAAwABAAABAACMAAAAjS4AAAMJAACGLgAA/////5ouAAADCQAAhi4AAP////+SLgAAAwAJAAABAACMAAAA5SkAAAEDAAB0LwAAAAAAAFdlYWtNYXAAQcDgAAtXYC4AAAMAAgACAQAAhQAAAGQuAAADAAIAAQEAAIYAAABoLgAAAwACAAEBAACHAAAAbC4AAAMAAgABAQAAiAAAAOUpAAABAwAAMDAAAAAAAABXZWFrU2V0AEGg4QALggNwLwAAAwADAAEBAACFAAAAaC4AAAMAAwABAQAAhwAAAGwuAAADAAMAAQEAAIgAAADlKQAAAQMAAJAwAAAAAAAATWFwIEl0ZXJhdG9yAAAAAOApAAADAAAAAAwAAI0AAADlKQAAAQMAAOAwAAAAAAAAcyAhPSBOVUxMAGpzX21hcF9pdGVyYXRvcl9uZXh0AFNldCBJdGVyYXRvcgAAAAAA4CkAAAMAAQAADAAAjQAAAOUpAAABAwAALzEAAAAAAABzZXQvYWRkIGlzIG5vdCBhIGZ1bmN0aW9uAAAAAAAAAL8pAAABAQAAgAAAAAAAAAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJvbWlzZSBzZWxmIHJlc29sdXRpb24AYXJnYyA9PSA1AHByb21pc2VfcmVhY3Rpb25fam9iAGFyZ2MgPT0gMwBqc19wcm9taXNlX3Jlc29sdmVfdGhlbmFibGVfam9iAHRoZW4AY2F0Y2gAZmluYWxseQBBsOQAC2YQMgAAAwAAAAIAAACOAAAAFTIAAAMAAAABAAAAjwAAABsyAAADAAAAAQAAAJAAAADlKQAAAQMAACwOAAAAAAAAcmVzb2x2ZQByZWplY3QAYWxsAGFsbFNldHRsZWQAYW55AHJhY2UAQaDlAAvWAXAyAAADAAAAAQEAAJEAAAB4MgAAAwABAAEBAACRAAAAfzIAAAMAAAABAQAAkgAAAIMyA
 
AADAAEAAQEAAJIAAACOMgAAAwACAAEBAACSAAAAkjIAAAMAAAABAAAAkwAAAL8pAAABAQAAgAAAAAAAAAByZWplY3RlZABmdWxmaWxsZWQAYXN5bmMgAGZ1bmN0aW9uACBhbm9ueW1vdXMoAAopIHsKAAp9KQAAAAAAAAAA5SkAAAEDAAA0DgAAAAAAAFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0AQYDnAAuTCGAzAAADAAAAAAAAAJQAAAByZXR1cm4AdGhyb3cAAAAA4CkAAAMAAAABAQAAlQAAAJAzAAADAAEAAQEAAJUAAACXMwAAAwACAAEBAACVAAAAbm90IGFuIEFzeW5jLWZyb20tU3luYyBJdGVyYXRvcgBBc3luY0dlbmVyYXRvcgAA4CkAAAMAAAABAQAAlgAAAJAzAAADAAEAAQEAAJYAAACXMwAAAwACAAEBAACWAAAA5SkAAAEDAADwMwAAAAAAAG5vdCBhbiBBc3luY0dlbmVyYXRvciBvYmplY3QASlNfSXNVbmRlZmluZWQoZnVuY19yZXQpAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dABzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24Acy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwAA5SkAAAEDAABCDgAAAAAAAHZhbHVlT2YAW1N5bWJvbC50b1ByaW1pdGl2ZV0AdG9VVENTdHJpbmcAdG9HTVRTdHJpbmcAdG9JU09TdHJpbmcAdG9EYXRlU3RyaW5nAHRvVGltZVN0cmluZwB0b0xvY2
 
FsZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAGdldFRpbWV6b25lT2Zmc2V0AGdldFRpbWUAZ2V0WWVhcgBnZXRGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBnZXRNb250aABnZXRVVENNb250aABnZXREYXRlAGdldFVUQ0RhdGUAZ2V0SG91cnMAZ2V0VVRDSG91cnMAZ2V0TWludXRlcwBnZXRVVENNaW51dGVzAGdldFNlY29uZHMAZ2V0VVRDU2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAZ2V0VVRDTWlsbGlzZWNvbmRzAGdldERheQBnZXRVVENEYXkAc2V0VGltZQBzZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAHNldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBzZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAc2V0SG91cnMAc2V0VVRDSG91cnMAc2V0RGF0ZQBzZXRVVENEYXRlAHNldE1vbnRoAHNldFVUQ01vbnRoAHNldFllYXIAc2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAdG9KU09OAEGg7wALtgZgNQAAAwAAAAAAAACXAAAAzCcAAAMAEwAAAQAAmAAAAGg1AAADAAAAAQAAAJkAAAB9NQAAAwADAAABAACYAAAAiTUAAAMJAAB9NQAA/////5U1AAADACMAAAEAAJgAAAChNQAAAwARAAABAACYAAAArjUAAAMAEgAAAQAAmAAAALs1AAADADMAAAEAAJgAAADKNQAAAwAxAAABAACYAAAA3TUAAAMAMgAAAQAAmAAAAPA1AAADAAAAAAAAAJoAAAACNgAAAwAAAAAAAACXAAAACjYAAAMAAQEAAQAAmwAAABI2AAADAAEAAAEAAJsAAAAeNgAAAwAAAAABAACbAAAALTYAAAMAEQAAAQAAmwAAADY
 
2AAADABAAAAEAAJsAAABCNgAAAwAhAAABAACbAAAASjYAAAMAIAAAAQAAmwAAAFU2AAADADEAAAEAAJsAAABeNgAAAwAwAAABAACbAAAAajYAAAMAQQAAAQAAmwAAAHU2AAADAEAAAAEAAJsAAACDNgAAAwBRAAABAACbAAAAjjYAAAMAUAAAAQAAmwAAAJw2AAADAGEAAAEAAJsAAACsNgAAAwBgAAABAACbAAAAvzYAAAMAcQAAAQAAmwAAAMY2AAADAHAAAAEAAJsAAADQNgAAAwAAAAEAAACcAAAA2DYAAAMAcQYBAQAAnQAAAOg2AAADAHAGAQEAAJ0AAAD7NgAAAwBxBQIBAACdAAAABjcAAAMAcAUCAQAAnQAAABQ3AAADAHEEAwEAAJ0AAAAfNwAAAwBwBAMBAACdAAAALTcAAAMAcQMEAQAAnQAAADY3AAADAHADBAEAAJ0AAABCNwAAAwAxAgEBAACdAAAASjcAAAMAMAIBAQAAnQAAAFU3AAADADEBAgEAAJ0AAABeNwAAAwAwAQIBAACdAAAAajcAAAMAAAABAAAAngAAAHI3AAADADEAAwEAAJ0AAAB+NwAAAwAwAAMBAACdAAAAjTcAAAMAAAABAAAAnwAAAG5vdCBhIERhdGUgb2JqZWN0AERhdGUgdmFsdWUgaXMgTmFOAEludmFsaWQgRGF0ZQAlLjNzLCAlMDJkICUuM3MgJTAqZCAAQeD1AAsVU3VuTW9uVHVlV2VkVGh1RnJpU2F0AEGA9gALogFKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMAJS4zcyAlLjNzICUwMmQgJTAqZAAlMDRkACUrMDdkAC0lMDJkLSUwMmRUACUwMmQvJTAyZC8lMCpkACUwMmQ6JTAyZDolMDJkIEdNVAAlMDJkJTAyZAAlMDJkOiUwMmQ6JTAyZC4lMDNkWgAlMDJkOiUwMmQ6JTAyZCAlY00A
 
QbD3AAtkHwAAABwAAAAfAAAAHgAAAB8AAAAeAAAAHwAAAB8AAAAeAAAAHwAAAB4AAAAfAAAAaW52YWxpZCBoaW50AG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAbm93AFVUQwBBoPgAC7AsDTwAAAMAAAAAAAAAoAAAALArAAADAAAAAQAAAKEAAAARPAAAAwAAAAcAAACiAAAAc2YgIT0gTlVMTABfX0pTX0V2YWxJbnRlcm5hbABKU19WQUxVRV9HRVRfVEFHKHNmLT5jdXJfZnVuYykgPT0gSlNfVEFHX09CSkVDVABqc19jbGFzc19oYXNfYnl0ZWNvZGUocC0+Y2xhc3NfaWQpAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIG51bWJlciBsaXRlcmFsACUuKnMAdXNlIHN0cmljdAB1c2Ugc3RyaXAAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAGZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAaW52YWxpZ
 
CByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQB0b28gbWFueSBhcmd1bWVudHMAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdG
 
VtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACguLi5hKXtzdXBlciguLi5hKTt9ACgpe30AZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAHlpZWxkIGluIGRlZmF1bHQgZXhwcmVzc2lvbgCam5ydnqChoq2ur59jYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAYXdhaXQgaW4gZGVmYXVsdCBleHByZXNzaW9uAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9
 
kZQBjYW5ub3QgZGVsZXRlIGEgcHJpdmF0ZSBjbGFzcyBmaWVsZABpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AHVwZGF0ZV9sYWJlbABscy0+cmVmX2NvdW50ID49IDAAaW52YWxpZCBwcm9wZXJ0eSBuYW1lAGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHB1dF9sdmFsdWUAc2V0X29iamVjdF9uYW1lACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGlkZW50aWZpZXIgZXhwZWN0ZWQAaW52YWxpZCBleHBvcnQg
 
c3ludGF4AGZyb20gY2xhdXNlIGV4cGVjdGVkACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAGV4cGVjdGluZyAnYXMnAGludmFsaWQgaW1wb3J0IGJpbmRpbmcAZHVwbGljYXRlIGltcG9ydCBiaW5kaW5nAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAHJldHVybiBub3QgaW4gYSBmdW5jdGlvbgBsaW5lIHRlcm1pbmF0b3Igbm90IGFsbG93ZWQgYWZ0ZXIgdGhyb3cAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAGR1cGxpY2F0ZSBkZWZhdWx0AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBpbnZhbGlkIGtleXdvcmQ6IHdpdGgAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAYSBkZWNsYXJhdGlvbiBpbiB0aGUgaGVhZCBvZiBhIGZvci0lcyBsb29wIGNhbid0IGhhdmUgYW4gaW5pdGlhbGl6ZXIAb2YAa
 
W4AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AY29udGludWUgbXVzdCBiZSBpbnNpZGUgbG9vcABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABicmVhay9jb250aW51ZSBsYWJlbCBub3QgZm91bmQAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAY3Bvb2xfaWR4ID49IDAAanNfY3JlYXRlX2Z1bmN0aW9uAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABhZGRfZXZhbF92YXJpYWJsZXMAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdAByZXNvbHZlX3ZhcmlhYmxlcwBsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AGJjX2J1Zltwb3NdID09IE9QX2xhYmVsAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgB2YXJfa2luZCAhPSBKU19WQVJfTk9STUFMAHJlc29sdmVfc2NvcGVfcHJpdmF0ZV9maWVsZAB2YXJfa2luZCA9PSBKU19WQVJfUFJJVkFURV9TRVRURVIAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABza2lwX2RlYWRfY29kZQByZXNvbHZlX2xhYmVscwBscy0+YWRkciA9PSAtMQBkaWZmID09IChpbnQxNl90KWRpZmYAZGlmZiA9PSAoaW50OF90KWRpZmYAbGFiZWxfc2xvdHNbaV0uZmlyc3RfcmVsb2MgPT0gTlVMTABmaW5kX2p1bXBfdGFyZ2V0AGludmFsaWQgb3Bjb2RlIC
 
hvcD0lZCwgcGM9JWQpAGJ5dGVjb2RlIGJ1ZmZlciBvdmVyZmxvdyAob3A9JWQsIHBjPSVkKQBzdGFjayB1bmRlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAdW5jb25zaXN0ZW50IHN0YWNrIHNpemU6ICVkICVkIChwYz0lZCkAbmFtZQBtZXNzYWdlAAAAAADMJwAAAwAAAAAAAACjAAAAz00AAAMDAABuDgAAAAAAANRNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNTZWFsZWQAaXNGcm96ZW4AX19nZXRDbGFzcwBmcm9tRW50cmllcwAAAAAAAABaTgAAAwAAAAIAAACkAAAAYU4AAAMAAAABAQAApQAAAHBOAAADAAAAAgAAAKYAAAB/TgAAAwAAAAMBAACnAAAAjk4AAAMAAAACAAAAqAAAAJ9OAAADAAAAAQAAAKkAAACzTgAAAwAAAAEAAACqAAAAjS4AAAMAAAABAQAAqwAAAIYuAAADAAEAAQEAAKsAAACSLgAAAwACAAEBAACrAAAAyU4AAAMAAAABAQAArAAAANZOAAADAAAAAQEAAK0AAAD
 
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
 
AAAAAAAb3V0IG9mIGJvdW5kAGludmFsaWQgYnl0ZU9mZnNldABpbnZhbGlkIGJ5dGVMZW5ndGgAAAEAAAACAAAAAQAAAAQAAAABAAAAAQAAAAgAAAAQAAAAAQAAACAAQYTcAQttAgAAAAAAAAABAAAAAQAAAAEAAADhUgAA7FIAAPxSAABQAQAAUQEAAFABAABSAQAAUwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFgBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAAAfDwcDAQBBgN0BC7oCgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQcTfAQuRBBAAAAD+//+H/v//BwAAAAAQAP8D/v//h/7//wdleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHN0YWNrIG92ZXJmbG93AHN5bnRheCBlcnJvcgBub3RoaW5nIHRvIHJlcGVhdABpbnZhbGlkIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cAB0b28gbWFueSBjYXB0dX
 
JlcwBleHBlY3RpbmcgZ3JvdXAgbmFtZQBncm91cCBuYW1lIG5vdCBkZWZpbmVkAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA0HEAAJBvAADgcQAAAQAwADoAQeDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGV
 
jX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBsOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50
 
gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4EECCwRAxGlsSARpoEjEvABYBLxgWQAIwFjABMRYwgTEWMAEyFgCBMhYAATMWQIYzFjCBNhYwATcWMIE3FjABOBZAAjkWQII6FjACPxZAZEAWQIR1FkACeRYAJoAWAIGTFgCBlhZALiBTQBxAU0AOkVNAPplTQIS8UzCBvlNACr9TQILFUzCBxlNABMhTAQHKU0AUy1MwAdVTMIHVUzAB1lMwgdZTMAHXUzAB2FMwgdhTMAHZUzGB2VNADNpTQALhUzEB4lMwgeJTMAHjU0CE41NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB/AZqgfzEoAIIBKBSCMSRYggEkbIIxM0CGATNghjEgUIwBIGCMMSAgtwEgMLcxIoD0ASKR9ABB4PIBC+MDA
 
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
 
AmJYE8jgELgj4+PEZeCQL+JpIBCvIBA4YBAlIRBJIlFVhAMg6cTgECkgUI8H4lBcIFAmIpAroK0jp6JjoOsirSJKqONgIkhq4CLgq+NO4CL0YsoQJ+LhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSINgS2iJQIWEuoaYiUP0ALYz0ICKgWBMqoFUxSIvOYadg0CTgkWIsUH/toOxOI2AlSCORU8wkA4BBEEEhoiJQaGNRdWG7DSJUpWJbAUFQO8AQcCMAgujEvoGAIQJAPAKAHAMAPQNAEoQIBoYIHQbIN0gAAyoAFqqIBr/AK0OATgSIcEVIeUZIaodIYzRQUrhIfABDgAAAABBZGxhbSxBZGxtAEFob20sQWhvbQBBbmF0b2xpYW5fSGllcm9nbHlwaHMsSGx1dwBBcmFiaWMsQXJhYgBBcm1lbmlhbixBcm1uAEF2ZXN0YW4sQXZzdABCYWxpbmVzZSxCYWxpAEJhbXVtLEJhbXUAQmFzc2FfVmFoLEJhc3MAQmF0YWssQmF0awBCZW5nYWxpLEJlbmcAQmhhaWtzdWtpLEJoa3MAQm9wb21vZm8sQm9wbwBCcmFobWksQnJhaABCcmFpbGxlLEJyYWkAQnVnaW5lc2UsQnVnaQBCdWhpZCxCdWhkAENhbmFkaWFuX0Fib3JpZ2luYWwsQ2FucwBDYXJpYW4sQ2FyaQBDYXVjYXNpYW5fQWxiYW5pYW4sQWdoYgBDaGFrbWEsQ2FrbQBDaGFtLENoYW0AQ2hlcm9rZWUsQ2hlcgBDaG9yYXNtaWFuLENocnMAQ29tbW9uLFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZX
 
NlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbml
 
jaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxh
 
LFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEHwngILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHABiHABgXABgnAGgnADgXAAhHABkXAJgY4Ah
 
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
 
gAAAAIqjjYAAQIqjowSAAECKo4AAAACKo7AXEsAAwEiljsAEQEvnl0AAQEvzs0tAABDbixVbmFzc2lnbmVkAEx1LFVwcGVyY2FzZV9MZXR0ZXIATGwsTG93ZXJjYXNlX0xldHRlcgBMdCxUaXRsZWNhc2VfTGV0dGVyAExtLE1vZGlmaWVyX0xldHRlcgBMbyxPdGhlcl9MZXR0ZXIATW4sTm9uc3BhY2luZ19NYXJrAE1jLFNwYWNpbmdfTWFyawBNZSxFbmNsb3NpbmdfTWFyawBOZCxEZWNpbWFsX051bWJlcixkaWdpdABObCxMZXR0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEHwvgILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPE
 
FTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2F
 
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
 
8l4FafJcAZHwvAYB8gYCAfAMWhHzBBJB8AwGUfB8F/H6sAQC+ENEAvqxHCb4QOQ2+LIcpviwCLb6QNy6+kP9JvhC8ab4AAAAAAAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsg
 
ACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGzEY0CuxENEgsTCRSNFJIUUBVpFW8VdRV7FYcVkxUrAJ4VthW6Fb4VwhXGFcoV3hXiFUYWXxaFFosWSRdPF1QXdBd0GHoYDhnQGXQafBqaGp8asxq9GsMa1xrcGuIa8BogGy0bNRs5G08bxhvYG9ob3BtkMR0cHxwhHCMcJRwnHEUcUxxYHGEcahx8HIUcihyqHMUcxxzJHMsczRzPHNEc0xzzHPUc9xz5HPscAh0EHQYdCB0XHRkdGx0dHR8dIR0jHSUdJx0pHSsdLR0vHTEdMx03HfQDOR0HIjsdAiI9HUUd9ANHHQciSR0CIksdUx30A1UdByJXHQIiWR1hHfQDYx0HImUdAiJnHW8d9ANxHQcicx0CInUdfx2BHYMdhR2HHYkdjx2sHS0GtB3AHSwG0B1AHkweXx5xHoQehh6KHpAelh6YHpwenh6mHqkeqx6xHrMetTC5HhEfJx8rHy0fMh9/H5AfkSChIKcgoSG/IgBB8OcCC9JHIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBi
 
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
 
A5WVnYWxKBEwEJgFTASenN6trAlKrSIz0ZsqOyIzRbjJO5VOcn5yfUVnRkYdVSFn2YWl2hX8/hrqH+IiPkAJqG23ZcN5zPYRqkfGZgk51UwRrG3Ithh6eUF3rb82FZInJYtiBH4jKXhdnam38cs6Qhk+3Ud5SxGTTahBy53YBgAaGXIbvjTKXb5v6nYx4f3mgfcmDBJN/ntaK31gEX2B8foBicsp4woz3lthYYlwTatptD28vfTd+S5bSUouA3FHMURx6vn3xg3WWgIvPYgJq/oo5TudbEmCHc3B1F1P7eL9PqV8NTsxseGUifcNTXlgBd0mEqoq6a7CPiGz+YuWCoGNlda5OaVHJUYFo53xvgtKKz5H1UkJUc1nsXsVl/m8qea2VapqXns6em1LGZndrYo90XpBhAGKaZCNvSXGJdMp59H1vgCaP7oQjkEqTF1KjUr1UyHDCiKqKyV71X3tjrms+fHVz5E75Vudbul0cYLJzaXSaf0aANJL2lkiXGJiLT655tJG4luFghk7aUO5bP1yZZQJqznFCdvyEfJCNn4hmLpaJUntn82dBbZxuCXRZdWt4EH1emG1RLmJ4litQGV3qbSqPi19EYRdoh3OGlilSD1RlXBNmTmeoaOVsBnTidXl/z4jhiMyR4pY/U7puHVTQcZh0+oWjllecn56XZ8tt6IHLeiB7knzAcplwWIvATjaDOlIHUqZe02LWfIVbHm20ZjuPTIhNlouJ015AUcBVAAAAAFpYAAB0ZgAAAADeUSpzynY8eV55ZXmPeVaXvny9fwAAEoYAAPiKAAAAADiQ/ZDvmPyYKJm0nd6Qt5auT+dQTVHJUuRSUVOdVQZWaFZAWKhYZFxuXJRgaGGOYfJhT2XiZZFmhWh3bRpuIm9ucStyInSReD55SXlIeVB5VnldeY15jnlAeoF6wHv0fQl+QX5yfwWA7YF5gnmCV4QQiZaJAYs5i9OMCI22jziQ45b/lzuYdWDuQhiC
 
AiZOtVFoUYBPRVGAUcdS+lKdVVVVmVXiVVpYs1hEWVRZYlooW9Je2V5pX61f2GBOYQhhjmFgYfJhNGLEYxxkUmRWZXRmF2cbZ1ZneWu6a0Ft227LbiJvHnBucad3NXKvcipzcXQGdTt1HXYfdsp223b0dkp3QHfMeLF6wHt7fFt99H0+fwWAUoPvg3mHQYmGiZaJv4r4isuKAYv+iu2KOYuKiwiNOI9ykJmRdpJ8luOWVpfbl/+XC5g7mBKbnJ9KKEQo1TOdOxhAOUBJUtBc035Dn46fKqACZmZmaWZsZmZpZmZsfwF0cwB0ZQUPEQ8ADwYZEQ8I2QW0BQAAAADyBbcF0AUSAAMECwwNGBrpBcEF6QXCBUn7wQVJ+8IF0AW3BdAFuAXQBbwF2AW8Bd4FvAXgBbwF4wW8BbkFLQMuAy8DMAMxAxwAGAYiBisG0AXcBXEGAAAKCgoKDQ0NDQ8PDw8JCQkJDg4ODggICAgzMzMzNTU1NRMTExMSEhISFRUVFRYWFhYcHBsbHR0XFycnICA4ODg4Pj4+PkJCQkJAQEBASUlKSkpKT09QUFBQTU1NTWFhYmJJBmRkZGR+fn19f38ugoJ8fICAh4eHhwAAJgYAAQABAK8ArwAiACIAoQChAKAAoACiAKIAqgCqAKoAIwAjACPMBgAAAAAmBgAGAAcAHwAjACQCBgIHAggCHwIjAiQEBgQHBAgEHwQjBCQFBgUfBSMFJAYHBh8HBgcfCAYIBwgfDQYNBw0IDR8PBw8fEAYQBxAIEB8RBxEfEh8TBhMfFAYUHxsGGwcbCBsfGyMbJBwHHB8cIxwkHQEdBh0HHQgdHh0fHSMdJB4GHgceCB4fHiMeJB8GHwcfCB8fHyMfJCAGIAcgCCAfICMgJCEGIR8hIyEkJAYkByQIJB8kIyQkCkoLSiNKIABMBlEGUQb/AB8mBgALAAwAHwAgACMAJAILAgwCHwIgAiMCJAQLBAwEHyYGBCAEIwQkB
 
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";if(!T(U)){var
 ka=U;U=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){try{if(v)return new Uint8Array(v);var 
a=U;if(T(a))try{var c=ma(a.slice(37)),d=new 
Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting 
base64 string to bytes failed.");}else e=void 0;var f
 =e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){w(g);}}function 
na(){return v||"function"!==typeof 
fetch?Promise.resolve().then(la):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed 
to load wasm binary file at '"+U+"'";return a.arrayBuffer();}).catch(function(){return la();});}function 
V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 
0===c.A?P.get(d)():P.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function oa(a){var 
c=ca(a)+1,d=K(c);D(a,E,d,c);return d;}function pa(){}var qa=[null,[],[]];function ra(){function 
a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!sa){sa=!0;var c=new 
Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var 
f=e.getTimezoneOffset(),g=Math.max(c,f);M[ta()>>2]=60*g;M[ua()>>2]=Number(c!=f);d=a(d);e=a(e);d=da(d);e=da(e);f<c?(M[X()>>2]=d,M[X()+4>>2]=e):(M[X()>>2]=e,M[X()+4>>2]=d);}}var
 sa;pa=(a,c
 ,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return 
e?oa(e):null;}catch(e){return b.HEAPU8[d]=1,oa(e.message);}};var ma="function"===typeof 
atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var 
e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var 
f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var 
g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var 
k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var
 
m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return
 c;};fa.push({B:function(){va();}});var wa={b:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: 
"+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},c:function(){w();},i:pa,h:function
 (a,c){a=H(a);let 
d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},f:function(a,c,d){E.copyWithin(a,c,c+d);},g:function(){w("OOM");},e:function(a,c,d,e){for(var
 f=0,g=0;g<d;g++){for(var k=M[c+8*g>>2],m=M[c+(8*g+4)>>2],z=0;z<m;z++){var 
l=E[k+z],p=qa[a];0===l||10===l?((1===a?aa:u)(ba(p,0)),p.length=0):p.push(l);}f+=m;}M[e>>2]=f;return 
0;},d:function(a){var c=Date.now();M[a>>2]=c/1E3|0;M[a+4>>2]=c%1E3*1E3|0;return 
0;},j:function(a,c){ra();a=new 
Date(1E3*M[a>>2]);M[c>>2]=a.getSeconds();M[c+4>>2]=a.getMinutes();M[c+8>>2]=a.getHours();M[c+12>>2]=a.getDate();M[c+16>>2]=a.getMonth();M[c+20>>2]=a.getFullYear()-1900;M[c+24>>2]=a.getDay();var
 d=new 
Date(a.getFullYear(),0,1);M[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;M[c+36>>2]=-(60*a.getTimezoneOffset());var
 e=new 
Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;M[c+32>>2]=a;a=M[X()+(a?4:0)>>2];M[c+40>>2]=a;return
 c;},k:functi
 on(a){a=H(a);window.console.log(a);},a:x,l:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: 
${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function 
a(f){b.asm=f.exports;P=b.asm.m;Q--;b.monitorRunDependencies&&b.monitorRunDependencies(Q);0==Q&&(null!==R&&(clearInterval(R),R=null),S&&(f=S,S=null,f()));}function
 c(f){a(f.instance);}function d(f){return na().then(function(g){return 
WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: 
"+g);w(g);});}var 
e={a:wa};Q++;b.monitorRunDependencies&&b.monitorRunDependencies(Q);if(b.instantiateWasm)try{return 
b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: 
"+f),!1;}(function(){return v||"function"!==typeof 
WebAssembly.instantiateStreaming||T(U)||"function"!==typeof 
fetch?d(c):fetch(U,{credentials:"same-origin"}).then(function(f){return 
WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+
 g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(n);return{};})();var 
va=b.___wasm_call_ctors=function(){return(va=b.___wasm_call_ctors=b.asm.n).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.o).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.p).apply(null,arguments);};b._init=function(){return(b._init=b.asm.q).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.r).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.s).apply(null,arguments);};var
 
K=b._malloc=function(){return(K=b._malloc=b.asm.t).apply(null,arguments);},X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},ua=b.__get_daylight=function(){return(ua=b.__get_daylight=b.asm.v).apply(null,arguments);},ta=b.__get_timezone=function(){return(ta=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(
 
null,arguments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var
 f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return 
B(a,c,d,arguments,e);};};var Y;S=function xa(){Y||Z();Y||(S=xa);};function Z(){function 
a(){if(!Y&&(Y=!0,b.calledRun=!0,!y)){V(fa);V(ha);h(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof
 b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var 
c=b.postRun.shift();ia.unshift(c);}V(ia);}}if(!(0<Q)){if(b.preRun)for("function"==typeof 
b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);0<Q||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof
 b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.
 pop()();noExitRuntime=!0;Z();return Module.ready;};}();var _default=Module;exports.default=_default;
+
+/***/ }),
+/* 2 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+class SandboxSupportBase {
+  constructor(win) {
+    this.win = win;
+    this.timeoutIds = new Map();
+    this.commFun = null;
+  }
+
+  destroy() {
+    this.commFunc = null;
+    this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));
+    this.timeoutIds = null;
+  }
+
+  exportValueToSandbox(val) {
+    throw new Error("Not implemented");
+  }
+
+  importValueFromSandbox(val) {
+    throw new Error("Not implemented");
+  }
+
+  createErrorForSandbox(errorMessage) {
+    throw new Error("Not implemented");
+  }
+
+  callSandboxFunction(name, args) {
+    try {
+      args = this.exportValueToSandbox(args);
+      this.commFun(name, args);
+    } catch (e) {
+      this.win.console.error(e);
+    }
+  }
+
+  createSandboxExternals() {
+    const externals = {
+      setTimeout: (callbackId, nMilliseconds) => {
+        if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
+          return;
+        }
+
+        const id = this.win.setTimeout(() => {
+          this.timeoutIds.delete(callbackId);
+          this.callSandboxFunction("timeoutCb", {
+            callbackId,
+            interval: false
+          });
+        }, nMilliseconds);
+        this.timeoutIds.set(callbackId, id);
+      },
+      clearTimeout: id => {
+        this.win.clearTimeout(this.timeoutIds.get(id));
+        this.timeoutIds.delete(id);
+      },
+      setInterval: (callbackId, nMilliseconds) => {
+        if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
+          return;
+        }
+
+        const id = this.win.setInterval(() => {
+          this.callSandboxFunction("timeoutCb", {
+            callbackId,
+            interval: true
+          });
+        }, nMilliseconds);
+        this.timeoutIds.set(callbackId, id);
+      },
+      clearInterval: id => {
+        this.win.clearInterval(this.timeoutIds.get(id));
+        this.timeoutIds.delete(id);
+      },
+      alert: cMsg => {
+        if (typeof cMsg !== "string") {
+          return;
+        }
+
+        this.win.alert(cMsg);
+      },
+      prompt: (cQuestion, cDefault) => {
+        if (typeof cQuestion !== "string" || typeof cDefault !== "string") {
+          return null;
+        }
+
+        return this.win.prompt(cQuestion, cDefault);
+      },
+      parseURL: cUrl => {
+        const url = new this.win.URL(cUrl);
+        const props = ["hash", "host", "hostname", "href", "origin", "password", "pathname", "port", 
"protocol", "search", "searchParams", "username"];
+        return Object.fromEntries(props.map(name => [name, url[name].toString()]));
+      },
+      send: data => {
+        if (!data) {
+          return;
+        }
+
+        const event = new this.win.CustomEvent("updatefromsandbox", {
+          detail: this.importValueFromSandbox(data)
+        });
+        this.win.dispatchEvent(event);
+      }
+    };
+    Object.setPrototypeOf(externals, null);
+    return (name, args) => {
+      try {
+        const result = externals[name](...args);
+        return this.exportValueToSandbox(result);
+      } catch (error) {
+        throw this.createErrorForSandbox(error?.toString() ?? "");
+      }
+    };
+  }
+
+}
+
+{
+  exports.SandboxSupportBase = SandboxSupportBase;
+}
+
+/***/ })
+/******/       ]);
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/       
+/******/       // The require function
+/******/       function __w_pdfjs_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       // no module.id needed
+/******/                       // no module.loaded needed
+/******/                       exports: {}
+/******/               };
+/******/       
+/******/               // Execute the module function
+/******/               __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
+/******/       
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/       
+/************************************************************************/
+/******/       // module exports must be returned from runtime so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       return __w_pdfjs_require__(0);
+/******/ })()
+;
+});
+//# sourceMappingURL=pdf.sandbox.js.map
\ No newline at end of file
diff --git a/third-party/pdfjs/build/pdf.worker.js b/third-party/pdfjs/build/pdf.worker.js
index 58bdf7c19..9589a7121 100644
--- a/third-party/pdfjs/build/pdf.worker.js
+++ b/third-party/pdfjs/build/pdf.worker.js
@@ -30,125 +30,39 @@
        else
                root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory();
 })(this, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/       // The module cache
-/******/       var installedModules = {};
-/******/
-/******/       // The require function
-/******/       function __w_pdfjs_require__(moduleId) {
-/******/
-/******/               // Check if module is in cache
-/******/               if(installedModules[moduleId]) {
-/******/                       return installedModules[moduleId].exports;
-/******/               }
-/******/               // Create a new module (and put it into the cache)
-/******/               var module = installedModules[moduleId] = {
-/******/                       i: moduleId,
-/******/                       l: false,
-/******/                       exports: {}
-/******/               };
-/******/
-/******/               // Execute the module function
-/******/               modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
-/******/
-/******/               // Flag the module as loaded
-/******/               module.l = true;
-/******/
-/******/               // Return the exports of the module
-/******/               return module.exports;
-/******/       }
-/******/
-/******/
-/******/       // expose the modules object (__webpack_modules__)
-/******/       __w_pdfjs_require__.m = modules;
-/******/
-/******/       // expose the module cache
-/******/       __w_pdfjs_require__.c = installedModules;
-/******/
-/******/       // define getter function for harmony exports
-/******/       __w_pdfjs_require__.d = function(exports, name, getter) {
-/******/               if(!__w_pdfjs_require__.o(exports, name)) {
-/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/               }
-/******/       };
-/******/
-/******/       // define __esModule on exports
-/******/       __w_pdfjs_require__.r = function(exports) {
-/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/               }
-/******/               Object.defineProperty(exports, '__esModule', { value: true });
-/******/       };
-/******/
-/******/       // create a fake namespace object
-/******/       // mode & 1: value is a module id, require it
-/******/       // mode & 2: merge all properties of value into the ns
-/******/       // mode & 4: return value when already ns object
-/******/       // mode & 8|1: behave like require
-/******/       __w_pdfjs_require__.t = function(value, mode) {
-/******/               if(mode & 1) value = __w_pdfjs_require__(value);
-/******/               if(mode & 8) return value;
-/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/               var ns = Object.create(null);
-/******/               __w_pdfjs_require__.r(ns);
-/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/               if(mode & 2 && typeof value != 'string') for(var key in value) 
__w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/               return ns;
-/******/       };
-/******/
-/******/       // getDefaultExport function for compatibility with non-harmony modules
-/******/       __w_pdfjs_require__.n = function(module) {
-/******/               var getter = module && module.__esModule ?
-/******/                       function getDefault() { return module['default']; } :
-/******/                       function getModuleExports() { return module; };
-/******/               __w_pdfjs_require__.d(getter, 'a', getter);
-/******/               return getter;
-/******/       };
-/******/
-/******/       // Object.prototype.hasOwnProperty.call
-/******/       __w_pdfjs_require__.o = function(object, property) { return 
Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/       // __webpack_public_path__
-/******/       __w_pdfjs_require__.p = "";
-/******/
-/******/
-/******/       // Load entry module and return exports
-/******/       return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
+return /******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ([
 /* 0 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-Object.defineProperty(exports, "WorkerMessageHandler", {
+}));
+Object.defineProperty(exports, "WorkerMessageHandler", ({
   enumerable: true,
   get: function () {
     return _worker.WorkerMessageHandler;
   }
-});
+}));
 
 var _worker = __w_pdfjs_require__(1);
 
-const pdfjsVersion = '2.6.347';
-const pdfjsBuild = '3be9c65f';
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
 
 /***/ }),
 /* 1 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.WorkerMessageHandler = exports.WorkerTask = void 0;
+}));
+exports.WorkerTask = exports.WorkerMessageHandler = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -156,13 +70,13 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _pdf_manager = __w_pdfjs_require__(6);
 
-var _writer = __w_pdfjs_require__(27);
+var _writer = __w_pdfjs_require__(46);
 
 var _is_node = __w_pdfjs_require__(4);
 
-var _message_handler = __w_pdfjs_require__(46);
+var _message_handler = __w_pdfjs_require__(48);
 
-var _worker_stream = __w_pdfjs_require__(47);
+var _worker_stream = __w_pdfjs_require__(49);
 
 var _core_utils = __w_pdfjs_require__(8);
 
@@ -231,7 +145,7 @@ class WorkerMessageHandler {
     var WorkerTasks = [];
     const verbosity = (0, _util.getVerbosityLevel)();
     const apiVersion = docParams.apiVersion;
-    const workerVersion = '2.6.347';
+    const workerVersion = '2.7.570';
 
     if (apiVersion !== workerVersion) {
       throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version 
"${workerVersion}".`);
@@ -247,8 +161,8 @@ class WorkerMessageHandler {
       throw new Error("The `Array.prototype` contains unexpected enumerable properties: " + 
enumerableProperties.join(", ") + "; thus breaking e.g. `for...in` iteration of `Array`s.");
     }
 
-    if (typeof ReadableStream === "undefined" || typeof Promise.allSettled === "undefined") {
-      throw new Error("The browser/environment lacks native support for critical " + "functionality used by 
the PDF.js library (e.g. " + "`ReadableStream` and/or `Promise.allSettled`); " + "please use an 
ES5-compatible build instead.");
+    if (typeof ReadableStream === "undefined") {
+      throw new Error("The browser/environment lacks native support for critical " + "functionality used by 
the PDF.js library (e.g. `ReadableStream`); " + "please use an `es5`-build instead.");
     }
 
     var docId = docParams.docId;
@@ -530,6 +444,16 @@ class WorkerMessageHandler {
     handler.on("GetJavaScript", function wphSetupGetJavaScript(data) {
       return pdfManager.ensureCatalog("javaScript");
     });
+    handler.on("GetDocJSActions", function wphSetupGetDocJSActions(data) {
+      return pdfManager.ensureCatalog("jsActions");
+    });
+    handler.on("GetPageJSActions", function ({
+      pageIndex
+    }) {
+      return pdfManager.getPage(pageIndex).then(function (page) {
+        return page.jsActions;
+      });
+    });
     handler.on("GetOutline", function wphSetupGetOutline(data) {
       return pdfManager.ensureCatalog("documentOutline");
     });
@@ -542,6 +466,9 @@ class WorkerMessageHandler {
     handler.on("GetMetadata", function wphSetupGetMetadata(data) {
       return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata")]);
     });
+    handler.on("GetMarkInfo", function wphSetupGetMarkInfo(data) {
+      return pdfManager.ensureCatalog("markInfo");
+    });
     handler.on("GetData", function wphSetupGetData(data) {
       pdfManager.requestLoadedStream();
       return pdfManager.onLoadedStream().then(function (stream) {
@@ -559,23 +486,34 @@ class WorkerMessageHandler {
         return page.getAnnotationsData(intent);
       });
     });
+    handler.on("GetFieldObjects", function (data) {
+      return pdfManager.ensureDoc("fieldObjects");
+    });
+    handler.on("HasJSActions", function (data) {
+      return pdfManager.ensureDoc("hasJSActions");
+    });
+    handler.on("GetCalculationOrderIds", function (data) {
+      return pdfManager.ensureDoc("calculationOrderIds");
+    });
     handler.on("SaveDocument", function ({
       numPages,
       annotationStorage,
       filename
     }) {
       pdfManager.requestLoadedStream();
-      const promises = [pdfManager.onLoadedStream()];
-      const document = pdfManager.pdfDocument;
+      const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), 
pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")];
 
       for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {
         promises.push(pdfManager.getPage(pageIndex).then(function (page) {
           const task = new WorkerTask(`Save: page ${pageIndex}`);
-          return page.save(handler, task, annotationStorage);
+          startWorkerTask(task);
+          return page.save(handler, task, annotationStorage).finally(function () {
+            finishWorkerTask(task);
+          });
         }));
       }
 
-      return Promise.all(promises).then(([stream, ...refs]) => {
+      return Promise.all(promises).then(function ([stream, acroForm, xref, startXRef, ...refs]) {
         let newRefs = [];
 
         for (const ref of refs) {
@@ -586,18 +524,29 @@ class WorkerMessageHandler {
           return stream.bytes;
         }
 
-        const xref = document.xref;
+        const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || [];
+        let xfaDatasets = null;
+
+        if (Array.isArray(xfa)) {
+          for (let i = 0, ii = xfa.length; i < ii; i += 2) {
+            if (xfa[i] === "datasets") {
+              xfaDatasets = xfa[i + 1];
+            }
+          }
+        } else {
+          (0, _util.warn)("Unsupported XFA type.");
+        }
+
         let newXrefInfo = Object.create(null);
 
         if (xref.trailer) {
-          const _info = Object.create(null);
-
+          const infoObj = Object.create(null);
           const xrefInfo = xref.trailer.get("Info") || null;
 
-          if (xrefInfo) {
+          if (xrefInfo instanceof _primitives.Dict) {
             xrefInfo.forEach((key, value) => {
               if ((0, _util.isString)(key) && (0, _util.isString)(value)) {
-                _info[key] = (0, _util.stringToPDFString)(value);
+                infoObj[key] = (0, _util.stringToPDFString)(value);
               }
             });
           }
@@ -607,15 +556,21 @@ class WorkerMessageHandler {
             encrypt: xref.trailer.getRaw("Encrypt") || null,
             newRef: xref.getNewRef(),
             infoRef: xref.trailer.getRaw("Info") || null,
-            info: _info,
+            info: infoObj,
             fileIds: xref.trailer.getRaw("ID") || null,
-            startXRef: document.startXRef,
+            startXRef,
             filename
           };
         }
 
         xref.resetNewRef();
-        return (0, _writer.incrementalUpdate)(stream.bytes, newXrefInfo, newRefs);
+        return (0, _writer.incrementalUpdate)({
+          originalData: stream.bytes,
+          xrefInfo: newXrefInfo,
+          newRefs,
+          xref,
+          datasetsRef: xfaDatasets
+        });
       });
     });
     handler.on("GetOperatorList", function wphSetupRenderPage(data, sink) {
@@ -652,7 +607,7 @@ class WorkerMessageHandler {
           sink.error(reason);
         });
       });
-    }, this);
+    });
     handler.on("GetTextContent", function wphExtractText(data, sink) {
       var pageIndex = data.pageIndex;
 
@@ -748,41 +703,45 @@ if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "unde
 
 /***/ }),
 /* 2 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.arrayByteLength = arrayByteLength;
 exports.arraysToBytes = arraysToBytes;
 exports.assert = assert;
 exports.bytesToString = bytesToString;
 exports.createPromiseCapability = createPromiseCapability;
+exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.encodeToXmlString = encodeToXmlString;
 exports.escapeString = escapeString;
 exports.getModificationDate = getModificationDate;
 exports.getVerbosityLevel = getVerbosityLevel;
 exports.info = info;
 exports.isArrayBuffer = isArrayBuffer;
 exports.isArrayEqual = isArrayEqual;
+exports.isAscii = isAscii;
 exports.isBool = isBool;
 exports.isNum = isNum;
-exports.isString = isString;
 exports.isSameOrigin = isSameOrigin;
-exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.isString = isString;
+exports.objectFromEntries = objectFromEntries;
+exports.objectSize = objectSize;
 exports.removeNullCharacters = removeNullCharacters;
 exports.setVerbosityLevel = setVerbosityLevel;
 exports.shadow = shadow;
 exports.string32 = string32;
 exports.stringToBytes = stringToBytes;
 exports.stringToPDFString = stringToPDFString;
+exports.stringToUTF16BEString = stringToUTF16BEString;
 exports.stringToUTF8String = stringToUTF8String;
+exports.unreachable = unreachable;
 exports.utf8StringToString = utf8StringToString;
 exports.warn = warn;
-exports.unreachable = unreachable;
-exports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError 
= exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = 
exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = 
exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = 
exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = 
exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = 
exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = 
exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = 
exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = 
exports.BaseException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag 
= exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = 
exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = 
exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = 
exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.createObjectURL = 
exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = 
exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = 
exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
 
 __w_pdfjs_require__(3);
 
@@ -915,6 +874,36 @@ const AnnotationBorderStyleType = {
   UNDERLINE: 5
 };
 exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
+const AnnotationActionEventType = {
+  E: "Mouse Enter",
+  X: "Mouse Exit",
+  D: "Mouse Down",
+  U: "Mouse Up",
+  Fo: "Focus",
+  Bl: "Blur",
+  PO: "PageOpen",
+  PC: "PageClose",
+  PV: "PageVisible",
+  PI: "PageInvisible",
+  K: "Keystroke",
+  F: "Format",
+  V: "Validate",
+  C: "Calculate"
+};
+exports.AnnotationActionEventType = AnnotationActionEventType;
+const DocumentActionEventType = {
+  WC: "WillClose",
+  WS: "WillSave",
+  DS: "DidSave",
+  WP: "WillPrint",
+  DP: "DidPrint"
+};
+exports.DocumentActionEventType = DocumentActionEventType;
+const PageActionEventType = {
+  O: "PageOpen",
+  C: "PageClose"
+};
+exports.PageActionEventType = PageActionEventType;
 const StreamType = {
   UNKNOWN: "UNKNOWN",
   FLATE: "FLATE",
@@ -1323,6 +1312,14 @@ function string32(value) {
   return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
 }
 
+function objectSize(obj) {
+  return Object.keys(obj).length;
+}
+
+function objectFromEntries(iterable) {
+  return Object.assign(Object.create(null), Object.fromEntries(iterable));
+}
+
 function isLittleEndian() {
   const buffer8 = new Uint8Array(4);
   buffer8[0] = 1;
@@ -1354,14 +1351,11 @@ const IsEvalSupportedCached = {
 
 };
 exports.IsEvalSupportedCached = IsEvalSupportedCached;
-const rgbBuf = ["rgb(", 0, ",", 0, ",", 0, ")"];
+const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
 
 class Util {
-  static makeCssRgb(r, g, b) {
-    rgbBuf[1] = r;
-    rgbBuf[3] = g;
-    rgbBuf[5] = b;
-    return rgbBuf.join("");
+  static makeHexColor(r, g, b) {
+    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
   }
 
   static transform(m1, m2) {
@@ -1483,7 +1477,31 @@ function stringToPDFString(str) {
 }
 
 function escapeString(str) {
-  return str.replace(/([\(\)\\])/g, "\\$1");
+  return str.replace(/([()\\\n\r])/g, match => {
+    if (match === "\n") {
+      return "\\n";
+    } else if (match === "\r") {
+      return "\\r";
+    }
+
+    return `\\${match}`;
+  });
+}
+
+function isAscii(str) {
+  return /^[\x00-\x7F]*$/.test(str);
+}
+
+function stringToUTF16BEString(str) {
+  const buf = ["\xFE\xFF"];
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.charCodeAt(i);
+    buf.push(String.fromCharCode(char >> 8 & 0xff));
+    buf.push(String.fromCharCode(char & 0xff));
+  }
+
+  return buf.join("");
 }
 
 function stringToUTF8String(str) {
@@ -1520,8 +1538,8 @@ function isArrayEqual(arr1, arr2) {
   });
 }
 
-function getModificationDate(date = new Date(Date.now())) {
-  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), 
(date.getUTCDate() + 1).toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), 
date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
+function getModificationDate(date = new Date()) {
+  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), 
date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), 
date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
   return buffer.join("");
 }
 
@@ -1576,12 +1594,62 @@ const createObjectURL = function createObjectURLClosure() {
 }();
 
 exports.createObjectURL = createObjectURL;
+const XMLEntities = {
+  0x3c: "&lt;",
+  0x3e: "&gt;",
+  0x26: "&amp;",
+  0x22: "&quot;",
+  0x27: "&apos;"
+};
+
+function encodeToXmlString(str) {
+  const buffer = [];
+  let start = 0;
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.codePointAt(i);
+
+    if (0x20 <= char && char <= 0x7e) {
+      const entity = XMLEntities[char];
+
+      if (entity) {
+        if (start < i) {
+          buffer.push(str.substring(start, i));
+        }
+
+        buffer.push(entity);
+        start = i + 1;
+      }
+    } else {
+      if (start < i) {
+        buffer.push(str.substring(start, i));
+      }
+
+      buffer.push(`&#x${char.toString(16).toUpperCase()};`);
+
+      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
+        i++;
+      }
+
+      start = i + 1;
+    }
+  }
+
+  if (buffer.length === 0) {
+    return str;
+  }
+
+  if (start < str.length) {
+    buffer.push(str.substring(start, str.length));
+  }
+
+  return buffer.join("");
+}
 
 /***/ }),
 /* 3 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
 var _is_node = __w_pdfjs_require__(4);
@@ -1590,37 +1658,35 @@ var _is_node = __w_pdfjs_require__(4);
 
 /***/ }),
 /* 4 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.isNodeJS = void 0;
 const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw 
&& !(process.versions.electron && process.type && process.type !== "browser");
 exports.isNodeJS = isNodeJS;
 
 /***/ }),
 /* 5 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.clearPrimitiveCaches = clearPrimitiveCaches;
-exports.isEOF = isEOF;
 exports.isCmd = isCmd;
 exports.isDict = isDict;
+exports.isEOF = isEOF;
 exports.isName = isName;
 exports.isRef = isRef;
 exports.isRefsEqual = isRefsEqual;
 exports.isStream = isStream;
-exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF 
= void 0;
+exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF = exports.Dict = exports.Cmd 
= void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -1772,7 +1838,16 @@ var Dict = function DictClosure() {
       }
     }
   };
-  Dict.empty = new Dict(null);
+
+  Dict.empty = function () {
+    const emptyDict = new Dict(null);
+
+    emptyDict.set = (key, value) => {
+      (0, _util.unreachable)("Should not call `set` on the empty dictionary.");
+    };
+
+    return emptyDict;
+  }();
 
   Dict.merge = function ({
     xref,
@@ -1884,8 +1959,8 @@ var Ref = function RefClosure() {
 exports.Ref = Ref;
 
 class RefSet {
-  constructor() {
-    this._set = new Set();
+  constructor(parent = null) {
+    this._set = new Set(parent && parent._set);
   }
 
   has(ref) {
@@ -1900,6 +1975,16 @@ class RefSet {
     this._set.delete(ref.toString());
   }
 
+  forEach(callback) {
+    for (const ref of this._set.values()) {
+      callback(ref);
+    }
+  }
+
+  clear() {
+    this._set.clear();
+  }
+
 }
 
 exports.RefSet = RefSet;
@@ -1981,14 +2066,13 @@ function clearPrimitiveCaches() {
 
 /***/ }),
 /* 6 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.NetworkPdfManager = exports.LocalPdfManager = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -2188,14 +2272,13 @@ exports.NetworkPdfManager = NetworkPdfManager;
 
 /***/ }),
 /* 7 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.ChunkedStreamManager = exports.ChunkedStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -2815,26 +2898,31 @@ exports.ChunkedStreamManager = ChunkedStreamManager;
 
 /***/ }),
 /* 8 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.getLookupTableFactory = getLookupTableFactory;
+}));
+exports.collectActions = collectActions;
+exports.escapePDFName = escapePDFName;
+exports.getArrayLookupTableFactory = getArrayLookupTableFactory;
 exports.getInheritableProperty = getInheritableProperty;
-exports.toRomanNumerals = toRomanNumerals;
+exports.getLookupTableFactory = getLookupTableFactory;
+exports.isWhiteSpace = isWhiteSpace;
 exports.log2 = log2;
+exports.parseXFAPath = parseXFAPath;
 exports.readInt8 = readInt8;
 exports.readUint16 = readUint16;
 exports.readUint32 = readUint32;
-exports.isWhiteSpace = isWhiteSpace;
+exports.toRomanNumerals = toRomanNumerals;
 exports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
+var _primitives = __w_pdfjs_require__(5);
+
 function getLookupTableFactory(initializer) {
   let lookup;
   return function () {
@@ -2848,6 +2936,25 @@ function getLookupTableFactory(initializer) {
   };
 }
 
+function getArrayLookupTableFactory(initializer) {
+  let lookup;
+  return function () {
+    if (initializer) {
+      let arr = initializer();
+      initializer = null;
+      lookup = Object.create(null);
+
+      for (let i = 0, ii = arr.length; i < ii; i += 2) {
+        lookup[arr[i]] = arr[i + 1];
+      }
+
+      arr = null;
+    }
+
+    return lookup;
+  };
+}
+
 class MissingDataException extends _util.BaseException {
   constructor(begin, end) {
     super(`Missing data [${begin}, ${end})`);
@@ -2950,16 +3057,149 @@ function isWhiteSpace(ch) {
   return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;
 }
 
+function parseXFAPath(path) {
+  const positionPattern = /(.+)\[([0-9]+)\]$/;
+  return path.split(".").map(component => {
+    const m = component.match(positionPattern);
+
+    if (m) {
+      return {
+        name: m[1],
+        pos: parseInt(m[2], 10)
+      };
+    }
+
+    return {
+      name: component,
+      pos: 0
+    };
+  });
+}
+
+function escapePDFName(str) {
+  const buffer = [];
+  let start = 0;
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.charCodeAt(i);
+
+    if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || 
char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char 
=== 0x25) {
+      if (start < i) {
+        buffer.push(str.substring(start, i));
+      }
+
+      buffer.push(`#${char.toString(16)}`);
+      start = i + 1;
+    }
+  }
+
+  if (buffer.length === 0) {
+    return str;
+  }
+
+  if (start < str.length) {
+    buffer.push(str.substring(start, str.length));
+  }
+
+  return buffer.join("");
+}
+
+function _collectJS(entry, xref, list, parents) {
+  if (!entry) {
+    return;
+  }
+
+  let parent = null;
+
+  if ((0, _primitives.isRef)(entry)) {
+    if (parents.has(entry)) {
+      return;
+    }
+
+    parent = entry;
+    parents.put(parent);
+    entry = xref.fetch(entry);
+  }
+
+  if (Array.isArray(entry)) {
+    for (const element of entry) {
+      _collectJS(element, xref, list, parents);
+    }
+  } else if (entry instanceof _primitives.Dict) {
+    if ((0, _primitives.isName)(entry.get("S"), "JavaScript") && entry.has("JS")) {
+      const js = entry.get("JS");
+      let code;
+
+      if ((0, _primitives.isStream)(js)) {
+        code = (0, _util.bytesToString)(js.getBytes());
+      } else {
+        code = js;
+      }
+
+      code = (0, _util.stringToPDFString)(code);
+
+      if (code) {
+        list.push(code);
+      }
+    }
+
+    _collectJS(entry.getRaw("Next"), xref, list, parents);
+  }
+
+  if (parent) {
+    parents.remove(parent);
+  }
+}
+
+function collectActions(xref, dict, eventType) {
+  const actions = Object.create(null);
+
+  if (dict.has("AA")) {
+    const additionalActions = dict.get("AA");
+
+    for (const key of additionalActions.getKeys()) {
+      const action = eventType[key];
+
+      if (!action) {
+        continue;
+      }
+
+      const actionDict = additionalActions.getRaw(key);
+      const parents = new _primitives.RefSet();
+      const list = [];
+
+      _collectJS(actionDict, xref, list, parents);
+
+      if (list.length > 0) {
+        actions[action] = list;
+      }
+    }
+  }
+
+  if (dict.has("A")) {
+    const actionDict = dict.get("A");
+    const parents = new _primitives.RefSet();
+    const list = [];
+
+    _collectJS(actionDict, xref, list, parents);
+
+    if (list.length > 0) {
+      actions.Action = list;
+    }
+  }
+
+  return (0, _util.objectSize)(actions) > 0 ? actions : null;
+}
+
 /***/ }),
 /* 9 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFDocument = exports.Page = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -2978,9 +3218,9 @@ var _crypto = __w_pdfjs_require__(22);
 
 var _parser = __w_pdfjs_require__(11);
 
-var _operator_list = __w_pdfjs_require__(26);
+var _operator_list = __w_pdfjs_require__(44);
 
-var _evaluator = __w_pdfjs_require__(28);
+var _evaluator = __w_pdfjs_require__(27);
 
 const DEFAULT_USER_UNIT = 1.0;
 const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
@@ -2999,7 +3239,8 @@ class Page {
     globalIdFactory,
     fontCache,
     builtInCMapCache,
-    globalImageCache
+    globalImageCache,
+    nonBlendModesSet
   }) {
     this.pdfManager = pdfManager;
     this.pageIndex = pageIndex;
@@ -3009,6 +3250,7 @@ class Page {
     this.fontCache = fontCache;
     this.builtInCMapCache = builtInCMapCache;
     this.globalImageCache = globalImageCache;
+    this.nonBlendModesSet = nonBlendModesSet;
     this.evaluatorOptions = pdfManager.evaluatorOptions;
     this.resourcesPromise = null;
     const idCounters = {
@@ -3206,7 +3448,7 @@ class Page {
     const pageListPromise = dataPromises.then(([contentStream]) => {
       const opList = new _operator_list.OperatorList(intent, sink);
       handler.send("StartRenderPage", {
-        transparency: partialEvaluator.hasBlendModes(this.resources),
+        transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet),
         pageIndex: this.pageIndex,
         intent
       });
@@ -3230,7 +3472,7 @@ class Page {
       const opListPromises = [];
 
       for (const annotation of annotations) {
-        if (isAnnotationRenderable(annotation, intent)) {
+        if (isAnnotationRenderable(annotation, intent) && !annotation.isHidden(annotationStorage)) {
           opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms, 
annotationStorage).catch(function (reason) {
             (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: 
"${reason}".`);
             return null;
@@ -3301,7 +3543,9 @@ class Page {
   }
 
   get annotations() {
-    return (0, _util.shadow)(this, "annotations", this._getInheritableProperty("Annots") || []);
+    const annots = this._getInheritableProperty("Annots");
+
+    return (0, _util.shadow)(this, "annotations", Array.isArray(annots) ? annots : []);
   }
 
   get _parsedAnnotations() {
@@ -3322,6 +3566,11 @@ class Page {
     return (0, _util.shadow)(this, "_parsedAnnotations", parsedAnnotations);
   }
 
+  get jsActions() {
+    const actions = (0, _core_utils.collectActions)(this.xref, this.pageDict, _util.PageActionEventType);
+    return (0, _util.shadow)(this, "jsActions", actions);
+  }
+
 }
 
 exports.Page = Page;
@@ -3537,9 +3786,18 @@ class PDFDocument {
 
   _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {
     const RECURSION_LIMIT = 10;
+
+    if (!Array.isArray(fields)) {
+      return false;
+    }
+
     return fields.every(field => {
       field = this.xref.fetchIfRef(field);
 
+      if (!(field instanceof _primitives.Dict)) {
+        return false;
+      }
+
       if (field.has("Kids")) {
         if (++recursionDepth > RECURSION_LIMIT) {
           (0, _util.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached");
@@ -3558,6 +3816,7 @@ class PDFDocument {
 
   get formInfo() {
     const formInfo = {
+      hasFields: false,
       hasAcroForm: false,
       hasXfa: false
     };
@@ -3568,11 +3827,11 @@ class PDFDocument {
     }
 
     try {
-      const xfa = acroForm.get("XFA");
-      const hasXfa = Array.isArray(xfa) && xfa.length > 0 || (0, _primitives.isStream)(xfa) && !xfa.isEmpty;
-      formInfo.hasXfa = hasXfa;
       const fields = acroForm.get("Fields");
       const hasFields = Array.isArray(fields) && fields.length > 0;
+      formInfo.hasFields = hasFields;
+      const xfa = acroForm.get("XFA");
+      formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || (0, _primitives.isStream)(xfa) && 
!xfa.isEmpty;
       const sigFlags = acroForm.get("SigFlags");
 
       const hasOnlyDocumentSignatures = !!(sigFlags & 0x1) && this._hasOnlyDocumentSignatures(fields);
@@ -3583,7 +3842,7 @@ class PDFDocument {
         throw ex;
       }
 
-      (0, _util.info)("Cannot fetch form information.");
+      (0, _util.warn)(`Cannot fetch form information: "${ex}".`);
     }
 
     return (0, _util.shadow)(this, "formInfo", formInfo);
@@ -3725,7 +3984,8 @@ class PDFDocument {
         globalIdFactory: this._globalIdFactory,
         fontCache: catalog.fontCache,
         builtInCMapCache: catalog.builtInCMapCache,
-        globalImageCache: catalog.globalImageCache
+        globalImageCache: catalog.globalImageCache,
+        nonBlendModesSet: catalog.nonBlendModesSet
       });
     });
   }
@@ -3748,30 +4008,115 @@ class PDFDocument {
     return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _primitives.clearPrimitiveCaches)();
   }
 
+  _collectFieldObjects(name, fieldRef, promises) {
+    const field = this.xref.fetchIfRef(fieldRef);
+
+    if (field.has("T")) {
+      const partName = (0, _util.stringToPDFString)(field.get("T"));
+
+      if (name === "") {
+        name = partName;
+      } else {
+        name = `${name}.${partName}`;
+      }
+    }
+
+    if (!promises.has(name)) {
+      promises.set(name, []);
+    }
+
+    promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, 
this._localIdFactory).then(annotation => annotation && annotation.getFieldObject()).catch(function (reason) {
+      (0, _util.warn)(`_collectFieldObjects: "${reason}".`);
+      return null;
+    }));
+
+    if (field.has("Kids")) {
+      const kids = field.get("Kids");
+
+      for (const kid of kids) {
+        this._collectFieldObjects(name, kid, promises);
+      }
+    }
+  }
+
+  get fieldObjects() {
+    if (!this.formInfo.hasFields) {
+      return (0, _util.shadow)(this, "fieldObjects", Promise.resolve(null));
+    }
+
+    const allFields = Object.create(null);
+    const fieldPromises = new Map();
+
+    for (const fieldRef of this.catalog.acroForm.get("Fields")) {
+      this._collectFieldObjects("", fieldRef, fieldPromises);
+    }
+
+    const allPromises = [];
+
+    for (const [name, promises] of fieldPromises) {
+      allPromises.push(Promise.all(promises).then(fields => {
+        fields = fields.filter(field => !!field);
+
+        if (fields.length > 0) {
+          allFields[name] = fields;
+        }
+      }));
+    }
+
+    return (0, _util.shadow)(this, "fieldObjects", Promise.all(allPromises).then(() => allFields));
+  }
+
+  get hasJSActions() {
+    return (0, _util.shadow)(this, "hasJSActions", this.fieldObjects.then(fieldObjects => {
+      return fieldObjects !== null && Object.values(fieldObjects).some(fieldObject => 
fieldObject.some(object => object.actions !== null)) || !!this.catalog.jsActions;
+    }));
+  }
+
+  get calculationOrderIds() {
+    const acroForm = this.catalog.acroForm;
+
+    if (!acroForm || !acroForm.has("CO")) {
+      return (0, _util.shadow)(this, "calculationOrderIds", null);
+    }
+
+    const calculationOrder = acroForm.get("CO");
+
+    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {
+      return (0, _util.shadow)(this, "calculationOrderIds", null);
+    }
+
+    const ids = calculationOrder.filter(_primitives.isRef).map(ref => ref.toString());
+
+    if (ids.length === 0) {
+      return (0, _util.shadow)(this, "calculationOrderIds", null);
+    }
+
+    return (0, _util.shadow)(this, "calculationOrderIds", ids);
+  }
+
 }
 
 exports.PDFDocument = PDFDocument;
 
 /***/ }),
 /* 10 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = void 0;
+}));
+exports.XRef = exports.ObjectLoader = exports.FileSpec = exports.Catalog = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _primitives = __w_pdfjs_require__(5);
 
-var _parser = __w_pdfjs_require__(11);
-
 var _core_utils = __w_pdfjs_require__(8);
 
+var _parser = __w_pdfjs_require__(11);
+
 var _crypto = __w_pdfjs_require__(22);
 
 var _colorspace = __w_pdfjs_require__(23);
@@ -3796,6 +4141,7 @@ class Catalog {
     this.builtInCMapCache = new Map();
     this.globalImageCache = new _image_utils.GlobalImageCache();
     this.pageKidsCountCache = new _primitives.RefSetCache();
+    this.nonBlendModesSet = new _primitives.RefSet();
   }
 
   get version() {
@@ -3879,6 +4225,52 @@ class Catalog {
     return (0, _util.shadow)(this, "metadata", metadata);
   }
 
+  get markInfo() {
+    let markInfo = null;
+
+    try {
+      markInfo = this._readMarkInfo();
+    } catch (ex) {
+      if (ex instanceof _core_utils.MissingDataException) {
+        throw ex;
+      }
+
+      (0, _util.warn)("Unable to read mark info.");
+    }
+
+    return (0, _util.shadow)(this, "markInfo", markInfo);
+  }
+
+  _readMarkInfo() {
+    const obj = this._catDict.get("MarkInfo");
+
+    if (!(0, _primitives.isDict)(obj)) {
+      return null;
+    }
+
+    const markInfo = Object.assign(Object.create(null), {
+      Marked: false,
+      UserProperties: false,
+      Suspects: false
+    });
+
+    for (const key in markInfo) {
+      if (!obj.has(key)) {
+        continue;
+      }
+
+      const value = obj.get(key);
+
+      if (!(0, _util.isBool)(value)) {
+        continue;
+      }
+
+      markInfo[key] = value;
+    }
+
+    return markInfo;
+  }
+
   get toplevelPagesDict() {
     const pagesObj = this._catDict.get("Pages");
 
@@ -4581,7 +4973,7 @@ class Catalog {
   get openAction() {
     const obj = this._catDict.get("OpenAction");
 
-    let openAction = null;
+    const openAction = Object.create(null);
 
     if ((0, _primitives.isDict)(obj)) {
       const destDict = new _primitives.Dict(this.xref);
@@ -4597,27 +4989,15 @@ class Catalog {
       });
 
       if (Array.isArray(resultObj.dest)) {
-        if (!openAction) {
-          openAction = Object.create(null);
-        }
-
         openAction.dest = resultObj.dest;
       } else if (resultObj.action) {
-        if (!openAction) {
-          openAction = Object.create(null);
-        }
-
         openAction.action = resultObj.action;
       }
     } else if (Array.isArray(obj)) {
-      if (!openAction) {
-        openAction = Object.create(null);
-      }
-
       openAction.dest = obj;
     }
 
-    return (0, _util.shadow)(this, "openAction", openAction);
+    return (0, _util.shadow)(this, "openAction", (0, _util.objectSize)(openAction) > 0 ? openAction : null);
   }
 
   get attachments() {
@@ -4643,12 +5023,12 @@ class Catalog {
     return (0, _util.shadow)(this, "attachments", attachments);
   }
 
-  get javaScript() {
+  _collectJavaScript() {
     const obj = this._catDict.get("Names");
 
     let javaScript = null;
 
-    function appendIfJavaScriptDict(jsDict) {
+    function appendIfJavaScriptDict(name, jsDict) {
       const type = jsDict.get("S");
 
       if (!(0, _primitives.isName)(type, "JavaScript")) {
@@ -4663,11 +5043,11 @@ class Catalog {
         return;
       }
 
-      if (!javaScript) {
-        javaScript = [];
+      if (javaScript === null) {
+        javaScript = Object.create(null);
       }
 
-      javaScript.push((0, _util.stringToPDFString)(js));
+      javaScript[name] = (0, _util.stringToPDFString)(js);
     }
 
     if (obj && obj.has("JavaScript")) {
@@ -4678,7 +5058,7 @@ class Catalog {
         const jsDict = names[name];
 
         if ((0, _primitives.isDict)(jsDict)) {
-          appendIfJavaScriptDict(jsDict);
+          appendIfJavaScriptDict(name, jsDict);
         }
       }
     }
@@ -4686,10 +5066,38 @@ class Catalog {
     const openAction = this._catDict.get("OpenAction");
 
     if ((0, _primitives.isDict)(openAction) && (0, _primitives.isName)(openAction.get("S"), "JavaScript")) {
-      appendIfJavaScriptDict(openAction);
+      appendIfJavaScriptDict("OpenAction", openAction);
     }
 
-    return (0, _util.shadow)(this, "javaScript", javaScript);
+    return javaScript;
+  }
+
+  get javaScript() {
+    const javaScript = this._collectJavaScript();
+
+    return (0, _util.shadow)(this, "javaScript", javaScript ? Object.values(javaScript) : null);
+  }
+
+  get jsActions() {
+    const js = this._collectJavaScript();
+
+    let actions = (0, _core_utils.collectActions)(this.xref, this._catDict, _util.DocumentActionEventType);
+
+    if (!actions && js) {
+      actions = Object.create(null);
+    }
+
+    if (actions && js) {
+      for (const [key, val] of Object.entries(js)) {
+        if (key in actions) {
+          actions[key].push(val);
+        } else {
+          actions[key] = [val];
+        }
+      }
+    }
+
+    return (0, _util.shadow)(this, "jsActions", actions);
   }
 
   fontFallback(id, handler) {
@@ -4711,6 +5119,7 @@ class Catalog {
     (0, _primitives.clearPrimitiveCaches)();
     this.globalImageCache.clear(manuallyTriggered);
     this.pageKidsCountCache.clear();
+    this.nonBlendModesSet.clear();
     const promises = [];
     this.fontCache.forEach(function (promise) {
       promises.push(promise);
@@ -4719,7 +5128,7 @@ class Catalog {
       for (const {
         dict
       } of translatedFonts) {
-        delete dict.translated;
+        delete dict.cacheKey;
       }
 
       this.fontCache.clear();
@@ -4948,8 +5357,20 @@ class Catalog {
         url,
         dest;
 
-    if (!(0, _primitives.isDict)(action) && destDict.has("Dest")) {
-      action = destDict.get("Dest");
+    if (!(0, _primitives.isDict)(action)) {
+      if (destDict.has("Dest")) {
+        action = destDict.get("Dest");
+      } else {
+        action = destDict.get("AA");
+
+        if ((0, _primitives.isDict)(action)) {
+          if (action.has("D")) {
+            action = action.get("D");
+          } else if (action.has("U")) {
+            action = action.get("U");
+          }
+        }
+      }
     }
 
     if ((0, _primitives.isDict)(action)) {
@@ -5510,16 +5931,14 @@ var XRef = function XRefClosure() {
         }
       }
 
-      var i, ii;
-
-      for (i = 0, ii = xrefStms.length; i < ii; ++i) {
+      for (let i = 0, ii = xrefStms.length; i < ii; ++i) {
         this.startXRefQueue.push(xrefStms[i]);
         this.readXRef(true);
       }
 
       let trailerDict;
 
-      for (i = 0, ii = trailers.length; i < ii; ++i) {
+      for (let i = 0, ii = trailers.length; i < ii; ++i) {
         stream.pos = trailers[i];
         const parser = new _parser.Parser({
           lexer: new _parser.Lexer(stream),
@@ -5539,10 +5958,24 @@ var XRef = function XRefClosure() {
           continue;
         }
 
-        let rootDict;
-
         try {
-          rootDict = dict.get("Root");
+          const rootDict = dict.get("Root");
+
+          if (!(rootDict instanceof _primitives.Dict)) {
+            continue;
+          }
+
+          const pagesDict = rootDict.get("Pages");
+
+          if (!(pagesDict instanceof _primitives.Dict)) {
+            continue;
+          }
+
+          const pagesCount = pagesDict.get("Count");
+
+          if (!Number.isInteger(pagesCount)) {
+            continue;
+          }
         } catch (ex) {
           if (ex instanceof _core_utils.MissingDataException) {
             throw ex;
@@ -5551,10 +5984,6 @@ var XRef = function XRefClosure() {
           continue;
         }
 
-        if (!(0, _primitives.isDict)(rootDict) || !rootDict.has("Pages")) {
-          continue;
-        }
-
         if (dict.has("ID")) {
           return dict;
         }
@@ -6233,14 +6662,13 @@ exports.ObjectLoader = ObjectLoader;
 
 /***/ }),
 /* 11 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.Parser = exports.Linearization = exports.Lexer = void 0;
 
 var _stream = __w_pdfjs_require__(12);
@@ -7577,15 +8005,14 @@ exports.Linearization = Linearization;
 
 /***/ }),
 /* 12 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = 
exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = 
exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0;
+}));
+exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = 
exports.PredictorStream = exports.NullStream = exports.LZWStream = exports.FlateStream = 
exports.DecryptStream = exports.DecodeStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -7738,6 +8165,10 @@ var DecodeStream = function DecodeStreamClosure() {
   }
 
   DecodeStream.prototype = {
+    get length() {
+      (0, _util.unreachable)("Should not access DecodeStream.length");
+    },
+
     get isEmpty() {
       while (!this.eof && this.bufferLength === 0) {
         this.readBlock();
@@ -8879,14 +9310,13 @@ exports.NullStream = NullStream;
 
 /***/ }),
 /* 13 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.CCITTFaxStream = void 0;
 
 var _primitives = __w_pdfjs_require__(5);
@@ -8946,14 +9376,13 @@ exports.CCITTFaxStream = CCITTFaxStream;
 
 /***/ }),
 /* 14 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.CCITTFaxDecoder = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -9651,14 +10080,13 @@ exports.CCITTFaxDecoder = CCITTFaxDecoder;
 
 /***/ }),
 /* 15 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.Jbig2Stream = void 0;
 
 var _primitives = __w_pdfjs_require__(5);
@@ -9735,14 +10163,13 @@ exports.Jbig2Stream = Jbig2Stream;
 
 /***/ }),
 /* 16 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.Jbig2Image = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -11943,14 +12370,13 @@ exports.Jbig2Image = Jbig2Image;
 
 /***/ }),
 /* 17 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.ArithmeticDecoder = void 0;
 const QeTable = [{
   qe: 0x5601,
@@ -12297,14 +12723,13 @@ exports.ArithmeticDecoder = ArithmeticDecoder;
 
 /***/ }),
 /* 18 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.JpegStream = void 0;
 
 var _stream = __w_pdfjs_require__(12);
@@ -12404,14 +12829,13 @@ exports.JpegStream = JpegStream;
 
 /***/ }),
 /* 19 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.JpegImage = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -13417,7 +13841,7 @@ var JpegImage = function JpegImageClosure() {
               break;
             }
 
-            if (offset >= data.length - 1) {
+            if (!nextFileMarker || offset >= data.length - 1) {
               (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an 
EOI marker (0xFFD9).");
               break markerLoop;
             }
@@ -13650,14 +14074,13 @@ exports.JpegImage = JpegImage;
 
 /***/ }),
 /* 20 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.JpxStream = void 0;
 
 var _stream = __w_pdfjs_require__(12);
@@ -13737,14 +14160,13 @@ exports.JpxStream = JpxStream;
 
 /***/ }),
 /* 21 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.JpxImage = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -14134,7 +14556,7 @@ var JpxImage = function JpxImageClosure() {
 
               if (unsupported.length > 0) {
                 doNotRecover = true;
-                throw new Error("Unsupported COD options (" + unsupported.join(", ") + ")");
+                (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`);
               }
 
               if (context.mainHeader) {
@@ -14178,6 +14600,9 @@ var JpxImage = function JpxImageClosure() {
               parseTilePackets(context, data, position, length);
               break;
 
+            case 0xff53:
+              (0, _util.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");
+
             case 0xff55:
             case 0xff57:
             case 0xff58:
@@ -14185,9 +14610,6 @@ var JpxImage = function JpxImageClosure() {
               length = (0, _core_utils.readUint16)(data, position);
               break;
 
-            case 0xff53:
-              throw new Error("Codestream code 0xFF53 (COC) is not implemented");
-
             default:
               throw new Error("Unknown codestream code: " + code.toString(16));
           }
@@ -14198,7 +14620,7 @@ var JpxImage = function JpxImageClosure() {
         if (doNotRecover || this.failOnCorruptedImage) {
           throw new JpxError(e.message);
         } else {
-          (0, _util.warn)("JPX: Trying to recover from: " + e.message);
+          (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`);
         }
       }
 
@@ -16073,15 +16495,14 @@ exports.JpxImage = JpxImage;
 
 /***/ }),
 /* 22 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = 
exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher 
= exports.AES128Cipher = void 0;
+}));
+exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.calculateSHA512 = 
exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.ARCFourCipher = 
exports.AES256Cipher = exports.AES128Cipher = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -17700,14 +18121,13 @@ exports.CipherTransformFactory = CipherTransformFactory;
 
 /***/ }),
 /* 23 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.ColorSpace = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -18768,15 +19188,14 @@ const LabCS = function LabCSClosure() {
 
 /***/ }),
 /* 24 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.GlobalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = 
exports.LocalColorSpaceCache = exports.LocalImageCache = void 0;
+}));
+exports.LocalTilingPatternCache = exports.LocalImageCache = exports.LocalGStateCache = 
exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.GlobalImageCache = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -18932,6 +19351,35 @@ class LocalGStateCache extends BaseLocalCache {
 
 exports.LocalGStateCache = LocalGStateCache;
 
+class LocalTilingPatternCache extends BaseLocalCache {
+  set(name, ref = null, data) {
+    if (!name) {
+      throw new Error('LocalTilingPatternCache.set - expected "name" argument.');
+    }
+
+    if (ref) {
+      if (this._imageCache.has(ref)) {
+        return;
+      }
+
+      this._nameRefMap.set(name, ref);
+
+      this._imageCache.put(ref, data);
+
+      return;
+    }
+
+    if (this._imageMap.has(name)) {
+      return;
+    }
+
+    this._imageMap.set(name, data);
+  }
+
+}
+
+exports.LocalTilingPatternCache = LocalTilingPatternCache;
+
 class GlobalImageCache {
   static get NUM_PAGES_THRESHOLD() {
     return (0, _util.shadow)(this, "NUM_PAGES_THRESHOLD", 2);
@@ -19024,14 +19472,13 @@ exports.GlobalImageCache = GlobalImageCache;
 
 /***/ }),
 /* 25 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getQuadPoints = getQuadPoints;
 exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = 
void 0;
 
@@ -19039,17 +19486,19 @@ var _util = __w_pdfjs_require__(2);
 
 var _obj = __w_pdfjs_require__(10);
 
+var _core_utils = __w_pdfjs_require__(8);
+
+var _default_appearance = __w_pdfjs_require__(26);
+
 var _primitives = __w_pdfjs_require__(5);
 
 var _colorspace = __w_pdfjs_require__(23);
 
-var _core_utils = __w_pdfjs_require__(8);
-
-var _operator_list = __w_pdfjs_require__(26);
+var _operator_list = __w_pdfjs_require__(44);
 
 var _stream = __w_pdfjs_require__(12);
 
-var _writer = __w_pdfjs_require__(27);
+var _writer = __w_pdfjs_require__(46);
 
 class AnnotationFactory {
   static create(xref, ref, pdfManager, idFactory) {
@@ -19173,7 +19622,7 @@ function getQuadPoints(dict, rect) {
 
   const quadPoints = dict.getArray("QuadPoints");
 
-  if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {
+  if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {
     return null;
   }
 
@@ -19186,7 +19635,7 @@ function getQuadPoints(dict, rect) {
       const x = quadPoints[j];
       const y = quadPoints[j + 1];
 
-      if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {
+      if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) {
         return null;
       }
 
@@ -19197,7 +19646,22 @@ function getQuadPoints(dict, rect) {
     }
   }
 
-  return quadPointsLists;
+  return quadPointsLists.map(quadPointsList => {
+    const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, 
quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], 
[Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]);
+    return [{
+      x: minX,
+      y: maxY
+    }, {
+      x: maxX,
+      y: maxY
+    }, {
+      x: minX,
+      y: minY
+    }, {
+      x: maxX,
+      y: minY
+    }];
+  });
 }
 
 function getTransformMatrix(rect, bbox, matrix) {
@@ -19222,6 +19686,12 @@ class Annotation {
     this.setColor(dict.getArray("C"));
     this.setBorderStyle(dict);
     this.setAppearance(dict);
+    this._streams = [];
+
+    if (this.appearance) {
+      this._streams.push(this.appearance);
+    }
+
     this.data = {
       annotationFlags: this.flags,
       borderStyle: this.borderStyle,
@@ -19233,6 +19703,7 @@ class Annotation {
       rect: this.rectangle,
       subtype: params.subtype
     };
+    this._fallbackFontDict = null;
   }
 
   _hasFlag(flags, flag) {
@@ -19240,14 +19711,28 @@ class Annotation {
   }
 
   _isViewable(flags) {
-    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, 
_util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);
+    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, 
_util.AnnotationFlag.NOVIEW);
   }
 
   _isPrintable(flags) {
-    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, 
_util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN);
+    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, 
_util.AnnotationFlag.INVISIBLE);
+  }
+
+  isHidden(annotationStorage) {
+    const data = annotationStorage && annotationStorage[this.data.id];
+
+    if (data && "hidden" in data) {
+      return data.hidden;
+    }
+
+    return this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN);
   }
 
   get viewable() {
+    if (this.data.quadPoints === null) {
+      return false;
+    }
+
     if (this.flags === 0) {
       return true;
     }
@@ -19256,6 +19741,10 @@ class Annotation {
   }
 
   get printable() {
+    if (this.data.quadPoints === null) {
+      return false;
+    }
+
     if (this.flags === 0) {
       return false;
     }
@@ -19417,10 +19906,11 @@ class Annotation {
         stream: appearance,
         task,
         resources,
-        operatorList: opList
+        operatorList: opList,
+        fallbackFontDict: this._fallbackFontDict
       }).then(() => {
         opList.addOp(_util.OPS.endAnnotation, []);
-        appearance.reset();
+        this.reset();
         return opList;
       });
     });
@@ -19430,6 +19920,16 @@ class Annotation {
     return null;
   }
 
+  getFieldObject() {
+    return null;
+  }
+
+  reset() {
+    for (const stream of this._streams) {
+      stream.reset();
+    }
+  }
+
 }
 
 exports.Annotation = Annotation;
@@ -19593,6 +20093,68 @@ class MarkupAnnotation extends Annotation {
     this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
   }
 
+  _setDefaultAppearance({
+    xref,
+    extra,
+    strokeColor,
+    fillColor,
+    blendMode,
+    pointsCallback
+  }) {
+    let minX = Number.MAX_VALUE;
+    let minY = Number.MAX_VALUE;
+    let maxX = Number.MIN_VALUE;
+    let maxY = Number.MIN_VALUE;
+    const buffer = ["q"];
+
+    if (extra) {
+      buffer.push(extra);
+    }
+
+    if (strokeColor) {
+      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);
+    }
+
+    if (fillColor) {
+      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);
+    }
+
+    for (const points of this.data.quadPoints) {
+      const [mX, MX, mY, MY] = pointsCallback(buffer, points);
+      minX = Math.min(minX, mX);
+      maxX = Math.max(maxX, MX);
+      minY = Math.min(minY, mY);
+      maxY = Math.max(maxY, MY);
+    }
+
+    buffer.push("Q");
+    const formDict = new _primitives.Dict(xref);
+    const appearanceStreamDict = new _primitives.Dict(xref);
+    appearanceStreamDict.set("Subtype", _primitives.Name.get("Form"));
+    const appearanceStream = new _stream.StringStream(buffer.join(" "));
+    appearanceStream.dict = appearanceStreamDict;
+    formDict.set("Fm0", appearanceStream);
+    const gsDict = new _primitives.Dict(xref);
+
+    if (blendMode) {
+      gsDict.set("BM", _primitives.Name.get(blendMode));
+    }
+
+    const stateDict = new _primitives.Dict(xref);
+    stateDict.set("GS0", gsDict);
+    const resources = new _primitives.Dict(xref);
+    resources.set("ExtGState", stateDict);
+    resources.set("XObject", formDict);
+    const appearanceDict = new _primitives.Dict(xref);
+    appearanceDict.set("Resources", resources);
+    const bbox = this.data.rect = [minX, minY, maxX, maxY];
+    appearanceDict.set("BBox", bbox);
+    this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do");
+    this.appearance.dict = appearanceDict;
+
+    this._streams.push(this.appearance, appearanceStream);
+  }
+
 }
 
 exports.MarkupAnnotation = MarkupAnnotation;
@@ -19605,26 +20167,47 @@ class WidgetAnnotation extends Annotation {
     this.ref = params.ref;
     data.annotationType = _util.AnnotationType.WIDGET;
     data.fieldName = this._constructFieldName(dict);
+    data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);
     const fieldValue = (0, _core_utils.getInheritableProperty)({
       dict,
       key: "V",
       getArray: true
     });
     data.fieldValue = this._decodeFormValue(fieldValue);
+    const defaultFieldValue = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DV",
+      getArray: true
+    });
+    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);
     data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || "");
-    data.defaultAppearance = (0, _core_utils.getInheritableProperty)({
+    const defaultAppearance = (0, _core_utils.getInheritableProperty)({
       dict,
       key: "DA"
     }) || params.acroForm.get("DA") || "";
+    data.defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : "";
+    data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(data.defaultAppearance);
     const fieldType = (0, _core_utils.getInheritableProperty)({
       dict,
       key: "FT"
     });
     data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
-    this.fieldResources = (0, _core_utils.getInheritableProperty)({
+    const localResources = (0, _core_utils.getInheritableProperty)({
       dict,
       key: "DR"
-    }) || params.acroForm.get("DR") || _primitives.Dict.empty;
+    });
+    const acroFormResources = params.acroForm.get("DR");
+    const appearanceResources = this.appearance && this.appearance.dict.get("Resources");
+    this._fieldResources = {
+      localResources,
+      acroFormResources,
+      appearanceResources,
+      mergedResources: _primitives.Dict.merge({
+        xref: params.xref,
+        dictArray: [localResources, appearanceResources, acroFormResources],
+        mergeSubDicts: true
+      })
+    };
     data.fieldFlags = (0, _core_utils.getInheritableProperty)({
       dict,
       key: "Ff"
@@ -19635,10 +20218,12 @@ class WidgetAnnotation extends Annotation {
     }
 
     data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
+    data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN);
 
     if (data.fieldType === "Sig") {
       data.fieldValue = null;
       this.setFlags(_util.AnnotationFlag.HIDDEN);
+      data.hidden = true;
     }
   }
 
@@ -19719,7 +20304,7 @@ class WidgetAnnotation extends Annotation {
       return evaluator.getOperatorList({
         stream,
         task,
-        resources: this.fieldResources,
+        resources: this._fieldResources.mergedResources,
         operatorList
       }).then(function () {
         operatorList.addOp(_util.OPS.endAnnotation, []);
@@ -19729,7 +20314,9 @@ class WidgetAnnotation extends Annotation {
   }
 
   async save(evaluator, task, annotationStorage) {
-    if (this.data.fieldValue === annotationStorage[this.data.id]) {
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
+
+    if (value === this.data.fieldValue || value === undefined) {
       return null;
     }
 
@@ -19739,18 +20326,24 @@ class WidgetAnnotation extends Annotation {
       return null;
     }
 
-    const dict = evaluator.xref.fetchIfRef(this.ref);
+    const {
+      xref
+    } = evaluator;
+    const dict = xref.fetchIfRef(this.ref);
 
     if (!(0, _primitives.isDict)(dict)) {
       return null;
     }
 
     const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
-    const newRef = evaluator.xref.getNewRef();
-    const AP = new _primitives.Dict(evaluator.xref);
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value
+    };
+    const newRef = xref.getNewRef();
+    const AP = new _primitives.Dict(xref);
     AP.set("N", newRef);
-    const value = annotationStorage[this.data.id];
-    const encrypt = evaluator.xref.encrypt;
+    const encrypt = xref.encrypt;
     let originalTransform = null;
     let newTransform = null;
 
@@ -19760,13 +20353,13 @@ class WidgetAnnotation extends Annotation {
       appearance = newTransform.encryptString(appearance);
     }
 
-    dict.set("V", value);
+    dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));
     dict.set("AP", AP);
     dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    const appearanceDict = new _primitives.Dict(evaluator.xref);
+    const appearanceDict = new _primitives.Dict(xref);
     appearanceDict.set("Length", appearance.length);
     appearanceDict.set("Subtype", _primitives.Name.get("Form"));
-    appearanceDict.set("Resources", this.fieldResources);
+    appearanceDict.set("Resources", this._getSaveFieldResources(xref));
     appearanceDict.set("BBox", bbox);
     const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`];
     (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);
@@ -19778,10 +20371,12 @@ class WidgetAnnotation extends Annotation {
     bufferNew.push("\nendstream\nendobj\n");
     return [{
       ref: this.ref,
-      data: bufferOriginal.join("")
+      data: bufferOriginal.join(""),
+      xfa
     }, {
       ref: newRef,
-      data: bufferNew.join("")
+      data: bufferNew.join(""),
+      xfa: null
     }];
   }
 
@@ -19792,7 +20387,11 @@ class WidgetAnnotation extends Annotation {
       return null;
     }
 
-    const value = annotationStorage[this.data.id];
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
+
+    if (value === undefined) {
+      return null;
+    }
 
     if (value === "") {
       return "";
@@ -19802,10 +20401,16 @@ class WidgetAnnotation extends Annotation {
     const hPadding = defaultPadding;
     const totalHeight = this.data.rect[3] - this.data.rect[1];
     const totalWidth = this.data.rect[2] - this.data.rect[0];
-    const fontInfo = await this._getFontData(evaluator, task);
-    const [font, fontName] = fontInfo;
-    let fontSize = fontInfo[2];
-    fontSize = this._computeFontSize(font, fontName, fontSize, totalHeight);
+
+    if (!this.data.defaultAppearance) {
+      this.data.defaultAppearance = "/Helvetica 0 Tf 0 g";
+      this.data.defaultAppearanceData = (0, 
_default_appearance.parseDefaultAppearance)(this.data.defaultAppearance);
+    }
+
+    const font = await this._getFontData(evaluator, task);
+
+    const fontSize = this._computeFontSize(font, totalHeight);
+
     let descent = font.descent;
 
     if (isNaN(descent)) {
@@ -19816,19 +20421,21 @@ class WidgetAnnotation extends Annotation {
     const defaultAppearance = this.data.defaultAppearance;
     const alignment = this.data.textAlignment;
 
-    if (this.data.comb) {
-      return this._getCombAppearance(defaultAppearance, value, totalWidth, hPadding, vPadding);
-    }
-
     if (this.data.multiLine) {
       return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, 
alignment, hPadding, vPadding);
     }
 
+    const encodedString = font.encodeString(value).join("");
+
+    if (this.data.comb) {
+      return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding);
+    }
+
     if (alignment === 0 || alignment > 2) {
-      return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, 
_util.escapeString)(value)}) Tj` + " ET Q EMC";
+      return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, 
_util.escapeString)(encodedString)}) Tj` + " ET Q EMC";
     }
 
-    const renderedText = this._renderText(value, font, fontSize, totalWidth, alignment, hPadding, vPadding);
+    const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, 
vPadding);
 
     return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC";
   }
@@ -19836,37 +20443,50 @@ class WidgetAnnotation extends Annotation {
   async _getFontData(evaluator, task) {
     const operatorList = new _operator_list.OperatorList();
     const initialState = {
-      fontSize: 0,
       font: null,
-      fontName: null,
 
       clone() {
         return this;
       }
 
     };
-    await evaluator.getOperatorList({
-      stream: new _stream.StringStream(this.data.defaultAppearance),
-      task,
-      resources: this.fieldResources,
-      operatorList,
-      initialState
-    });
-    return [initialState.font, initialState.fontName, initialState.fontSize];
+    const {
+      fontName,
+      fontSize
+    } = this.data.defaultAppearanceData;
+    await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName, fontSize], null, 
operatorList, task, initialState, null);
+    return initialState.font;
   }
 
-  _computeFontSize(font, fontName, fontSize, height) {
-    if (fontSize === null || fontSize === 0) {
-      const em = font.charsToGlyphs("M", true)[0].width / 1000;
-      const capHeight = 0.7 * em;
-      fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight)));
-      let fontRegex = new RegExp(`/${fontName}\\s+[0-9\.]+\\s+Tf`);
+  _computeFontSize(font, height) {
+    let fontSize = this.data.defaultAppearanceData.fontSize;
 
-      if (this.data.defaultAppearance.search(fontRegex) === -1) {
-        fontRegex = new RegExp(`/${fontName}\\s+Tf`);
+    if (!fontSize) {
+      const {
+        fontColor,
+        fontName
+      } = this.data.defaultAppearanceData;
+      let capHeight;
+
+      if (font.capHeight) {
+        capHeight = font.capHeight;
+      } else {
+        const glyphs = font.charsToGlyphs(font.encodeString("M").join(""));
+
+        if (glyphs.length === 1 && glyphs[0].width) {
+          const em = glyphs[0].width / 1000;
+          capHeight = 0.7 * em;
+        } else {
+          capHeight = 0.7;
+        }
       }
 
-      this.data.defaultAppearance = this.data.defaultAppearance.replace(fontRegex, `/${fontName} ${fontSize} 
Tf`);
+      fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight)));
+      this.data.defaultAppearance = (0, _default_appearance.createDefaultAppearance)({
+        fontSize,
+        fontName,
+        fontColor
+      });
     }
 
     return fontSize;
@@ -19896,6 +20516,59 @@ class WidgetAnnotation extends Annotation {
     return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;
   }
 
+  _getSaveFieldResources(xref) {
+    const {
+      localResources,
+      appearanceResources,
+      acroFormResources
+    } = this._fieldResources;
+    const fontNameStr = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName.name;
+
+    if (!fontNameStr) {
+      return localResources || _primitives.Dict.empty;
+    }
+
+    for (const resources of [localResources, appearanceResources]) {
+      if (resources instanceof _primitives.Dict) {
+        const localFont = resources.get("Font");
+
+        if (localFont instanceof _primitives.Dict && localFont.has(fontNameStr)) {
+          return resources;
+        }
+      }
+    }
+
+    if (acroFormResources instanceof _primitives.Dict) {
+      const acroFormFont = acroFormResources.get("Font");
+
+      if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontNameStr)) {
+        const subFontDict = new _primitives.Dict(xref);
+        subFontDict.set(fontNameStr, acroFormFont.getRaw(fontNameStr));
+        const subResourcesDict = new _primitives.Dict(xref);
+        subResourcesDict.set("Font", subFontDict);
+        return _primitives.Dict.merge({
+          xref,
+          dictArray: [subResourcesDict, localResources],
+          mergeSubDicts: true
+        });
+      }
+    }
+
+    return localResources || _primitives.Dict.empty;
+  }
+
+  getFieldObject() {
+    if (this.data.fieldType === "Sig") {
+      return {
+        id: this.data.id,
+        value: null,
+        type: "signature"
+      };
+    }
+
+    return null;
+  }
+
 }
 
 class TextWidgetAnnotation extends WidgetAnnotation {
@@ -19932,12 +20605,13 @@ class TextWidgetAnnotation extends WidgetAnnotation {
     this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null;
   }
 
-  _getCombAppearance(defaultAppearance, text, width, hPadding, vPadding) {
+  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {
     const combWidth = (width / this.data.maxLen).toFixed(2);
     const buf = [];
+    const positions = font.getCharPositions(text);
 
-    for (const character of text) {
-      buf.push(`(${(0, _util.escapeString)(character)}) Tj`);
+    for (const [start, end] of positions) {
+      buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`);
     }
 
     const renderedComb = buf.join(` ${combWidth} 0 Td `);
@@ -19963,46 +20637,55 @@ class TextWidgetAnnotation extends WidgetAnnotation {
   }
 
   _splitLine(line, font, fontSize, width) {
-    if (line.length <= 1) {
+    line = font.encodeString(line).join("");
+    const glyphs = font.charsToGlyphs(line);
+
+    if (glyphs.length <= 1) {
       return [line];
     }
 
+    const positions = font.getCharPositions(line);
     const scale = fontSize / 1000;
-    const whitespace = font.charsToGlyphs(" ", true)[0].width * scale;
     const chunks = [];
-    let lastSpacePos = -1,
+    let lastSpacePosInStringStart = -1,
+        lastSpacePosInStringEnd = -1,
+        lastSpacePos = -1,
         startChunk = 0,
         currentWidth = 0;
 
-    for (let i = 0, ii = line.length; i < ii; i++) {
-      const character = line.charAt(i);
-
-      if (character === " ") {
-        if (currentWidth + whitespace > width) {
-          chunks.push(line.substring(startChunk, i));
-          startChunk = i;
-          currentWidth = whitespace;
+    for (let i = 0, ii = glyphs.length; i < ii; i++) {
+      const [start, end] = positions[i];
+      const glyph = glyphs[i];
+      const glyphWidth = glyph.width * scale;
+
+      if (glyph.unicode === " ") {
+        if (currentWidth + glyphWidth > width) {
+          chunks.push(line.substring(startChunk, start));
+          startChunk = start;
+          currentWidth = glyphWidth;
+          lastSpacePosInStringStart = -1;
           lastSpacePos = -1;
         } else {
-          currentWidth += whitespace;
+          currentWidth += glyphWidth;
+          lastSpacePosInStringStart = start;
+          lastSpacePosInStringEnd = end;
           lastSpacePos = i;
         }
       } else {
-        const charWidth = font.charsToGlyphs(character, false)[0].width * scale;
-
-        if (currentWidth + charWidth > width) {
-          if (lastSpacePos !== -1) {
-            chunks.push(line.substring(startChunk, lastSpacePos + 1));
-            startChunk = i = lastSpacePos + 1;
-            lastSpacePos = -1;
+        if (currentWidth + glyphWidth > width) {
+          if (lastSpacePosInStringStart !== -1) {
+            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));
+            startChunk = lastSpacePosInStringEnd;
+            i = lastSpacePos + 1;
+            lastSpacePosInStringStart = -1;
             currentWidth = 0;
           } else {
-            chunks.push(line.substring(startChunk, i));
-            startChunk = i;
-            currentWidth = charWidth;
+            chunks.push(line.substring(startChunk, start));
+            startChunk = start;
+            currentWidth = glyphWidth;
           }
         } else {
-          currentWidth += charWidth;
+          currentWidth += glyphWidth;
         }
       }
     }
@@ -20014,6 +20697,24 @@ class TextWidgetAnnotation extends WidgetAnnotation {
     return chunks;
   }
 
+  getFieldObject() {
+    return {
+      id: this.data.id,
+      value: this.data.fieldValue,
+      defaultValue: this.data.defaultFieldValue,
+      multiline: this.data.multiLine,
+      password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),
+      charLimit: this.data.maxLen,
+      comb: this.data.comb,
+      editable: !this.data.readOnly,
+      hidden: this.data.hidden,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      actions: this.data.actions,
+      type: "text"
+    };
+  }
+
 }
 
 class ButtonWidgetAnnotation extends WidgetAnnotation {
@@ -20024,6 +20725,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
     this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
     this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
     this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.isTooltipOnly = false;
 
     if (this.data.checkBox) {
       this._processCheckBox(params);
@@ -20042,7 +20744,12 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
     }
 
     if (annotationStorage) {
-      const value = annotationStorage[this.data.id] || false;
+      const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
+
+      if (value === undefined) {
+        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+      }
+
       let appearance;
 
       if (value) {
@@ -20074,12 +20781,17 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
       return this._saveRadioButton(evaluator, task, annotationStorage);
     }
 
-    return super.save(evaluator, task, annotationStorage);
+    return null;
   }
 
   async _saveCheckbox(evaluator, task, annotationStorage) {
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
+
+    if (value === undefined) {
+      return null;
+    }
+
     const defaultValue = this.data.fieldValue && this.data.fieldValue !== "Off";
-    const value = annotationStorage[this.data.id];
 
     if (defaultValue === value) {
       return null;
@@ -20091,6 +20803,11 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
       return null;
     }
 
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value: value ? this.data.exportValue : ""
+    };
+
     const name = _primitives.Name.get(value ? this.data.exportValue : "Off");
 
     dict.set("V", name);
@@ -20108,13 +20825,19 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
     buffer.push("\nendobj\n");
     return [{
       ref: this.ref,
-      data: buffer.join("")
+      data: buffer.join(""),
+      xfa
     }];
   }
 
   async _saveRadioButton(evaluator, task, annotationStorage) {
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
+
+    if (value === undefined) {
+      return null;
+    }
+
     const defaultValue = this.data.fieldValue === this.data.buttonValue;
-    const value = annotationStorage[this.data.id];
 
     if (defaultValue === value) {
       return null;
@@ -20126,6 +20849,11 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
       return null;
     }
 
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value: value ? this.data.buttonValue : ""
+    };
+
     const name = _primitives.Name.get(value ? this.data.buttonValue : "Off");
 
     let parentBuffer = null;
@@ -20162,13 +20890,15 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
     buffer.push("\nendobj\n");
     const newRefs = [{
       ref: this.ref,
-      data: buffer.join("")
+      data: buffer.join(""),
+      xfa
     }];
 
     if (parentBuffer !== null) {
       newRefs.push({
         ref: this.parent,
-        data: parentBuffer.join("")
+        data: parentBuffer.join(""),
+        xfa: null
       });
     }
 
@@ -20201,17 +20931,25 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
     this.data.exportValue = exportValues[0] === "Off" ? exportValues[1] : exportValues[0];
     this.checkedAppearance = normalAppearance.get(this.data.exportValue);
     this.uncheckedAppearance = normalAppearance.get("Off") || null;
+
+    this._streams.push(this.checkedAppearance);
+
+    if (this.uncheckedAppearance) {
+      this._streams.push(this.uncheckedAppearance);
+    }
+
+    this._fallbackFontDict = this.fallbackFontDict;
   }
 
   _processRadioButton(params) {
     this.data.fieldValue = this.data.buttonValue = null;
     const fieldParent = params.dict.get("Parent");
 
-    if ((0, _primitives.isDict)(fieldParent) && fieldParent.has("V")) {
+    if ((0, _primitives.isDict)(fieldParent)) {
+      this.parent = params.dict.getRaw("Parent");
       const fieldParentValue = fieldParent.get("V");
 
       if ((0, _primitives.isName)(fieldParentValue)) {
-        this.parent = params.dict.getRaw("Parent");
         this.data.fieldValue = this._decodeFormValue(fieldParentValue);
       }
     }
@@ -20230,21 +20968,31 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
 
     for (const key of normalAppearance.getKeys()) {
       if (key !== "Off") {
-        this.data.buttonValue = key;
+        this.data.buttonValue = this._decodeFormValue(key);
         break;
       }
     }
 
     this.checkedAppearance = normalAppearance.get(this.data.buttonValue);
     this.uncheckedAppearance = normalAppearance.get("Off") || null;
+
+    this._streams.push(this.checkedAppearance);
+
+    if (this.uncheckedAppearance) {
+      this._streams.push(this.uncheckedAppearance);
+    }
+
+    this._fallbackFontDict = this.fallbackFontDict;
   }
 
   _processPushButton(params) {
-    if (!params.dict.has("A")) {
+    if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) {
       (0, _util.warn)("Push buttons without action dictionaries are not supported");
       return;
     }
 
+    this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA");
+
     _obj.Catalog.parseDestDictionary({
       destDict: params.dict,
       resultObj: this.data,
@@ -20252,6 +21000,41 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
     });
   }
 
+  getFieldObject() {
+    let type = "button";
+    let exportValues;
+
+    if (this.data.checkBox) {
+      type = "checkbox";
+      exportValues = this.data.exportValue;
+    } else if (this.data.radioButton) {
+      type = "radiobutton";
+      exportValues = this.data.buttonValue;
+    }
+
+    return {
+      id: this.data.id,
+      value: this.data.fieldValue || "Off",
+      defaultValue: this.data.defaultFieldValue,
+      exportValues,
+      editable: !this.data.readOnly,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      hidden: this.data.hidden,
+      actions: this.data.actions,
+      type
+    };
+  }
+
+  get fallbackFontDict() {
+    const dict = new _primitives.Dict();
+    dict.set("BaseFont", _primitives.Name.get("ZapfDingbats"));
+    dict.set("Type", _primitives.Name.get("FallbackType"));
+    dict.set("Subtype", _primitives.Name.get("FallbackType"));
+    dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding"));
+    return (0, _util.shadow)(this, "fallbackFontDict", dict);
+  }
+
 }
 
 class ChoiceWidgetAnnotation extends WidgetAnnotation {
@@ -20287,6 +21070,24 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation {
     this._hasText = true;
   }
 
+  getFieldObject() {
+    const type = this.data.combo ? "combobox" : "listbox";
+    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;
+    return {
+      id: this.data.id,
+      value,
+      defaultValue: this.data.defaultFieldValue,
+      editable: !this.data.readOnly,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      numItems: this.data.fieldValue.length,
+      multipleSelection: this.data.multiSelect,
+      hidden: this.data.hidden,
+      actions: this.data.actions,
+      type
+    };
+  }
+
 }
 
 class TextAnnotation extends MarkupAnnotation {
@@ -20349,6 +21150,14 @@ class PopupAnnotation extends Annotation {
     this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
     const rawParent = parameters.dict.getRaw("Parent");
     this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;
+    const parentRect = parentItem.getArray("Rect");
+
+    if (Array.isArray(parentRect) && parentRect.length === 4) {
+      this.data.parentRect = _util.Util.normalizeRect(parentRect);
+    } else {
+      this.data.parentRect = [0, 0, 0, 0];
+    }
+
     const rt = parentItem.get("RT");
 
     if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {
@@ -20420,8 +21229,12 @@ class PolylineAnnotation extends MarkupAnnotation {
   constructor(parameters) {
     super(parameters);
     this.data.annotationType = _util.AnnotationType.POLYLINE;
-    const rawVertices = parameters.dict.getArray("Vertices");
     this.data.vertices = [];
+    const rawVertices = parameters.dict.getArray("Vertices");
+
+    if (!Array.isArray(rawVertices)) {
+      return;
+    }
 
     for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {
       this.data.vertices.push({
@@ -20453,17 +21266,22 @@ class InkAnnotation extends MarkupAnnotation {
   constructor(parameters) {
     super(parameters);
     this.data.annotationType = _util.AnnotationType.INK;
-    const xref = parameters.xref;
-    const originalInkLists = parameters.dict.getArray("InkList");
     this.data.inkLists = [];
+    const rawInkLists = parameters.dict.getArray("InkList");
+
+    if (!Array.isArray(rawInkLists)) {
+      return;
+    }
+
+    const xref = parameters.xref;
 
-    for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {
+    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {
       this.data.inkLists.push([]);
 
-      for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {
+      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {
         this.data.inkLists[i].push({
-          x: xref.fetchIfRef(originalInkLists[i][j]),
-          y: xref.fetchIfRef(originalInkLists[i][j + 1])
+          x: xref.fetchIfRef(rawInkLists[i][j]),
+          y: xref.fetchIfRef(rawInkLists[i][j + 1])
         });
       }
     }
@@ -20475,10 +21293,28 @@ class HighlightAnnotation extends MarkupAnnotation {
   constructor(parameters) {
     super(parameters);
     this.data.annotationType = _util.AnnotationType.HIGHLIGHT;
-    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
     if (quadPoints) {
-      this.data.quadPoints = quadPoints;
+      if (!this.appearance) {
+        const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0];
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          fillColor,
+          blendMode: "Multiply",
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${points[0].x} ${points[0].y} m`);
+            buffer.push(`${points[1].x} ${points[1].y} l`);
+            buffer.push(`${points[3].x} ${points[3].y} l`);
+            buffer.push(`${points[2].x} ${points[2].y} l`);
+            buffer.push("f");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
     }
   }
 
@@ -20488,10 +21324,26 @@ class UnderlineAnnotation extends MarkupAnnotation {
   constructor(parameters) {
     super(parameters);
     this.data.annotationType = _util.AnnotationType.UNDERLINE;
-    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
     if (quadPoints) {
-      this.data.quadPoints = quadPoints;
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${points[2].x} ${points[2].y} m`);
+            buffer.push(`${points[3].x} ${points[3].y} l`);
+            buffer.push("S");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
     }
   }
 
@@ -20501,10 +21353,37 @@ class SquigglyAnnotation extends MarkupAnnotation {
   constructor(parameters) {
     super(parameters);
     this.data.annotationType = _util.AnnotationType.SQUIGGLY;
-    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
     if (quadPoints) {
-      this.data.quadPoints = quadPoints;
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          pointsCallback: (buffer, points) => {
+            const dy = (points[0].y - points[2].y) / 6;
+            let shift = dy;
+            let x = points[2].x;
+            const y = points[2].y;
+            const xEnd = points[3].x;
+            buffer.push(`${x} ${y + shift} m`);
+
+            do {
+              x += 2;
+              shift = shift === 0 ? dy : 0;
+              buffer.push(`${x} ${y + shift} l`);
+            } while (x < xEnd);
+
+            buffer.push("S");
+            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
     }
   }
 
@@ -20514,10 +21393,26 @@ class StrikeOutAnnotation extends MarkupAnnotation {
   constructor(parameters) {
     super(parameters);
     this.data.annotationType = _util.AnnotationType.STRIKEOUT;
-    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
     if (quadPoints) {
-      this.data.quadPoints = quadPoints;
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${(points[0].x + points[2].x) / 2}` + ` ${(points[0].y + points[2].y) / 2} m`);
+            buffer.push(`${(points[1].x + points[3].x) / 2}` + ` ${(points[1].y + points[3].y) / 2} l`);
+            buffer.push("S");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
     }
   }
 
@@ -20543,2104 +21438,2127 @@ class FileAttachmentAnnotation extends MarkupAnnotation {
 
 /***/ }),
 /* 26 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.OperatorList = void 0;
+}));
+exports.createDefaultAppearance = createDefaultAppearance;
+exports.parseDefaultAppearance = parseDefaultAppearance;
+
+var _primitives = __w_pdfjs_require__(5);
 
 var _util = __w_pdfjs_require__(2);
 
-var QueueOptimizer = function QueueOptimizerClosure() {
-  function addState(parentState, pattern, checkFn, iterateFn, processFn) {
-    var state = parentState;
+var _colorspace = __w_pdfjs_require__(23);
 
-    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
-      var item = pattern[i];
-      state = state[item] || (state[item] = []);
-    }
+var _core_utils = __w_pdfjs_require__(8);
 
-    state[pattern[pattern.length - 1]] = {
-      checkFn,
-      iterateFn,
-      processFn
-    };
+var _evaluator = __w_pdfjs_require__(27);
+
+var _stream = __w_pdfjs_require__(12);
+
+class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
+  constructor(str) {
+    super(new _stream.StringStream(str));
   }
 
-  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
-    var iFirstPIMXO = iFirstSave + 2;
+  parse() {
+    const operation = {
+      fn: 0,
+      args: []
+    };
+    const result = {
+      fontSize: 0,
+      fontName: _primitives.Name.get(""),
+      fontColor: new Uint8ClampedArray([0, 0, 0])
+    };
 
-    for (var i = 0; i < count; i++) {
-      var arg = argsArray[iFirstPIMXO + 4 * i];
-      var imageMask = arg.length === 1 && arg[0];
+    try {
+      while (true) {
+        operation.args.length = 0;
 
-      if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || 
imageMask.data.length === 1 && imageMask.data[0] === 0)) {
-        fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;
-        continue;
-      }
+        if (!this.read(operation)) {
+          break;
+        }
 
-      break;
-    }
+        if (this.savedStatesDepth !== 0) {
+          continue;
+        }
 
-    return count - i;
-  }
+        const {
+          fn,
+          args
+        } = operation;
 
-  var InitialState = [];
-  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, 
_util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
-    var fnArray = context.fnArray;
-    var iFirstSave = context.iCurr - 3;
-    var pos = (i - iFirstSave) % 4;
+        switch (fn | 0) {
+          case _util.OPS.setFont:
+            const [fontName, fontSize] = args;
 
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.save;
+            if ((0, _primitives.isName)(fontName)) {
+              result.fontName = fontName;
+            }
 
-      case 1:
-        return fnArray[i] === _util.OPS.transform;
+            if (typeof fontSize === "number" && fontSize > 0) {
+              result.fontSize = fontSize;
+            }
 
-      case 2:
-        return fnArray[i] === _util.OPS.paintInlineImageXObject;
+            break;
 
-      case 3:
-        return fnArray[i] === _util.OPS.restore;
-    }
+          case _util.OPS.setFillRGBColor:
+            _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
 
-    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);
-  }, function foundInlineImageGroup(context, i) {
-    var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
-    var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
-    var MAX_WIDTH = 1000;
-    var IMAGE_PADDING = 1;
-    var fnArray = context.fnArray,
-        argsArray = context.argsArray;
-    var curr = context.iCurr;
-    var iFirstSave = curr - 3;
-    var iFirstTransform = curr - 2;
-    var iFirstPIIXO = curr - 1;
-    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
+            break;
 
-    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
-      return i - (i - iFirstSave) % 4;
-    }
+          case _util.OPS.setFillGray:
+            _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
 
-    var maxX = 0;
-    var map = [],
-        maxLineHeight = 0;
-    var currentX = IMAGE_PADDING,
-        currentY = IMAGE_PADDING;
-    var q;
+            break;
 
-    for (q = 0; q < count; q++) {
-      var transform = argsArray[iFirstTransform + (q << 2)];
-      var img = argsArray[iFirstPIIXO + (q << 2)][0];
+          case _util.OPS.setFillColorSpace:
+            _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
 
-      if (currentX + img.width > MAX_WIDTH) {
-        maxX = Math.max(maxX, currentX);
-        currentY += maxLineHeight + 2 * IMAGE_PADDING;
-        currentX = 0;
-        maxLineHeight = 0;
+            break;
+        }
       }
-
-      map.push({
-        transform,
-        x: currentX,
-        y: currentY,
-        w: img.width,
-        h: img.height
-      });
-      currentX += img.width + 2 * IMAGE_PADDING;
-      maxLineHeight = Math.max(maxLineHeight, img.height);
+    } catch (reason) {
+      (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
     }
 
-    var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
-    var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
-    var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
-    var imgRowSize = imgWidth << 2;
+    return result;
+  }
 
-    for (q = 0; q < count; q++) {
-      var data = argsArray[iFirstPIIXO + (q << 2)][0].data;
-      var rowSize = map[q].w << 2;
-      var dataOffset = 0;
-      var offset = map[q].x + map[q].y * imgWidth << 2;
-      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
+}
 
-      for (var k = 0, kk = map[q].h; k < kk; k++) {
-        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
-        dataOffset += rowSize;
-        offset += imgRowSize;
-      }
+function parseDefaultAppearance(str) {
+  return new DefaultAppearanceEvaluator(str).parse();
+}
 
-      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
+function createDefaultAppearance({
+  fontSize,
+  fontName,
+  fontColor
+}) {
+  let colorCmd;
 
-      while (offset >= 0) {
-        data[offset - 4] = data[offset];
-        data[offset - 3] = data[offset + 1];
-        data[offset - 2] = data[offset + 2];
-        data[offset - 1] = data[offset + 3];
-        data[offset + rowSize] = data[offset + rowSize - 4];
-        data[offset + rowSize + 1] = data[offset + rowSize - 3];
-        data[offset + rowSize + 2] = data[offset + rowSize - 2];
-        data[offset + rowSize + 3] = data[offset + rowSize - 1];
-        offset -= imgRowSize;
-      }
-    }
+  if (fontColor.every(c => c === 0)) {
+    colorCmd = "0 g";
+  } else {
+    colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg";
+  }
 
-    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);
-    argsArray.splice(iFirstSave, count * 4, [{
-      width: imgWidth,
-      height: imgHeight,
-      kind: _util.ImageKind.RGBA_32BPP,
-      data: imgData
-    }, map]);
-    return iFirstSave + 1;
-  });
-  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, 
_util.OPS.restore], null, function iterateImageMaskGroup(context, i) {
-    var fnArray = context.fnArray;
-    var iFirstSave = context.iCurr - 3;
-    var pos = (i - iFirstSave) % 4;
+  return `/${(0, _core_utils.escapePDFName)(fontName.name)} ${fontSize} Tf ${colorCmd}`;
+}
 
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.save;
+/***/ }),
+/* 27 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-      case 1:
-        return fnArray[i] === _util.OPS.transform;
 
-      case 2:
-        return fnArray[i] === _util.OPS.paintImageMaskXObject;
 
-      case 3:
-        return fnArray[i] === _util.OPS.restore;
-    }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;
 
-    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);
-  }, function foundImageMaskGroup(context, i) {
-    var MIN_IMAGES_IN_MASKS_BLOCK = 10;
-    var MAX_IMAGES_IN_MASKS_BLOCK = 100;
-    var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;
-    var fnArray = context.fnArray,
-        argsArray = context.argsArray;
-    var curr = context.iCurr;
-    var iFirstSave = curr - 3;
-    var iFirstTransform = curr - 2;
-    var iFirstPIMXO = curr - 1;
-    var count = Math.floor((i - iFirstSave) / 4);
-    count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
+var _util = __w_pdfjs_require__(2);
 
-    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
-      return i - (i - iFirstSave) % 4;
-    }
+var _cmap = __w_pdfjs_require__(28);
 
-    var q;
-    var isSameImage = false;
-    var iTransform, transformArgs;
-    var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
-    const firstTransformArg0 = argsArray[iFirstTransform][0],
-          firstTransformArg1 = argsArray[iFirstTransform][1],
-          firstTransformArg2 = argsArray[iFirstTransform][2],
-          firstTransformArg3 = argsArray[iFirstTransform][3];
+var _primitives = __w_pdfjs_require__(5);
 
-    if (firstTransformArg1 === firstTransformArg2) {
-      isSameImage = true;
-      iTransform = iFirstTransform + 4;
-      var iPIMXO = iFirstPIMXO + 4;
+var _fonts = __w_pdfjs_require__(29);
 
-      for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
-        transformArgs = argsArray[iTransform];
+var _encodings = __w_pdfjs_require__(32);
 
-        if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || 
transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== 
firstTransformArg3) {
-          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
-            isSameImage = false;
-          } else {
-            count = q;
-          }
+var _core_utils = __w_pdfjs_require__(8);
 
-          break;
-        }
-      }
-    }
+var _unicode = __w_pdfjs_require__(35);
 
-    if (isSameImage) {
-      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
-      var positions = new Float32Array(count * 2);
-      iTransform = iFirstTransform;
+var _standard_fonts = __w_pdfjs_require__(34);
 
-      for (q = 0; q < count; q++, iTransform += 4) {
-        transformArgs = argsArray[iTransform];
-        positions[q << 1] = transformArgs[4];
-        positions[(q << 1) + 1] = transformArgs[5];
-      }
+var _pattern = __w_pdfjs_require__(38);
 
-      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
-      argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, 
firstTransformArg2, firstTransformArg3, positions]);
-    } else {
-      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
-      var images = [];
+var _function = __w_pdfjs_require__(39);
 
-      for (q = 0; q < count; q++) {
-        transformArgs = argsArray[iFirstTransform + (q << 2)];
-        var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];
-        images.push({
-          data: maskParams.data,
-          width: maskParams.width,
-          height: maskParams.height,
-          transform: transformArgs
-        });
-      }
+var _parser = __w_pdfjs_require__(11);
 
-      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);
-      argsArray.splice(iFirstSave, count * 4, [images]);
-    }
+var _image_utils = __w_pdfjs_require__(24);
 
-    return iFirstSave + 1;
-  });
-  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, 
_util.OPS.restore], function (context) {
-    var argsArray = context.argsArray;
-    var iFirstTransform = context.iCurr - 2;
-    return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
-  }, function iterateImageGroup(context, i) {
-    var fnArray = context.fnArray,
-        argsArray = context.argsArray;
-    var iFirstSave = context.iCurr - 3;
-    var pos = (i - iFirstSave) % 4;
+var _bidi = __w_pdfjs_require__(41);
 
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.save;
+var _colorspace = __w_pdfjs_require__(23);
 
-      case 1:
-        if (fnArray[i] !== _util.OPS.transform) {
-          return false;
-        }
+var _stream = __w_pdfjs_require__(12);
 
-        var iFirstTransform = context.iCurr - 2;
-        var firstTransformArg0 = argsArray[iFirstTransform][0];
-        var firstTransformArg3 = argsArray[iFirstTransform][3];
+var _glyphlist = __w_pdfjs_require__(33);
 
-        if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || 
argsArray[i][3] !== firstTransformArg3) {
-          return false;
-        }
+var _metrics = __w_pdfjs_require__(42);
 
-        return true;
+var _murmurhash = __w_pdfjs_require__(43);
 
-      case 2:
-        if (fnArray[i] !== _util.OPS.paintImageXObject) {
-          return false;
-        }
+var _operator_list = __w_pdfjs_require__(44);
 
-        var iFirstPIXO = context.iCurr - 1;
-        var firstPIXOArg0 = argsArray[iFirstPIXO][0];
+var _image = __w_pdfjs_require__(45);
 
-        if (argsArray[i][0] !== firstPIXOArg0) {
-          return false;
-        }
+const DefaultPartialEvaluatorOptions = Object.freeze({
+  maxImageSize: -1,
+  disableFontFace: false,
+  ignoreErrors: false,
+  isEvalSupported: true,
+  fontExtraProperties: false
+});
+const PatternType = {
+  TILING: 1,
+  SHADING: 2
+};
+const deferred = Promise.resolve();
 
-        return true;
+function normalizeBlendMode(value, parsingArray = false) {
+  if (Array.isArray(value)) {
+    for (let i = 0, ii = value.length; i < ii; i++) {
+      const maybeBM = normalizeBlendMode(value[i], true);
 
-      case 3:
-        return fnArray[i] === _util.OPS.restore;
+      if (maybeBM) {
+        return maybeBM;
+      }
     }
 
-    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);
-  }, function (context, i) {
-    var MIN_IMAGES_IN_BLOCK = 3;
-    var MAX_IMAGES_IN_BLOCK = 1000;
-    var fnArray = context.fnArray,
-        argsArray = context.argsArray;
-    var curr = context.iCurr;
-    var iFirstSave = curr - 3;
-    var iFirstTransform = curr - 2;
-    var iFirstPIXO = curr - 1;
-    var firstPIXOArg0 = argsArray[iFirstPIXO][0];
-    var firstTransformArg0 = argsArray[iFirstTransform][0];
-    var firstTransformArg3 = argsArray[iFirstTransform][3];
-    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
+    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);
+    return "source-over";
+  }
 
-    if (count < MIN_IMAGES_IN_BLOCK) {
-      return i - (i - iFirstSave) % 4;
+  if (!(0, _primitives.isName)(value)) {
+    if (parsingArray) {
+      return null;
     }
 
-    var positions = new Float32Array(count * 2);
-    var iTransform = iFirstTransform;
-
-    for (var q = 0; q < count; q++, iTransform += 4) {
-      var transformArgs = argsArray[iTransform];
-      positions[q << 1] = transformArgs[4];
-      positions[(q << 1) + 1] = transformArgs[5];
-    }
+    return "source-over";
+  }
 
-    var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];
-    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);
-    argsArray.splice(iFirstSave, count * 4, args);
-    return iFirstSave + 1;
-  });
-  addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, 
_util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {
-    var fnArray = context.fnArray,
-        argsArray = context.argsArray;
-    var iFirstSave = context.iCurr - 4;
-    var pos = (i - iFirstSave) % 5;
+  switch (value.name) {
+    case "Normal":
+    case "Compatible":
+      return "source-over";
 
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.beginText;
+    case "Multiply":
+      return "multiply";
 
-      case 1:
-        return fnArray[i] === _util.OPS.setFont;
+    case "Screen":
+      return "screen";
 
-      case 2:
-        return fnArray[i] === _util.OPS.setTextMatrix;
+    case "Overlay":
+      return "overlay";
 
-      case 3:
-        if (fnArray[i] !== _util.OPS.showText) {
-          return false;
-        }
+    case "Darken":
+      return "darken";
 
-        var iFirstSetFont = context.iCurr - 3;
-        var firstSetFontArg0 = argsArray[iFirstSetFont][0];
-        var firstSetFontArg1 = argsArray[iFirstSetFont][1];
+    case "Lighten":
+      return "lighten";
 
-        if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
-          return false;
-        }
+    case "ColorDodge":
+      return "color-dodge";
 
-        return true;
+    case "ColorBurn":
+      return "color-burn";
 
-      case 4:
-        return fnArray[i] === _util.OPS.endText;
-    }
+    case "HardLight":
+      return "hard-light";
 
-    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);
-  }, function (context, i) {
-    var MIN_CHARS_IN_BLOCK = 3;
-    var MAX_CHARS_IN_BLOCK = 1000;
-    var fnArray = context.fnArray,
-        argsArray = context.argsArray;
-    var curr = context.iCurr;
-    var iFirstBeginText = curr - 4;
-    var iFirstSetFont = curr - 3;
-    var iFirstSetTextMatrix = curr - 2;
-    var iFirstShowText = curr - 1;
-    var iFirstEndText = curr;
-    var firstSetFontArg0 = argsArray[iFirstSetFont][0];
-    var firstSetFontArg1 = argsArray[iFirstSetFont][1];
-    var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
+    case "SoftLight":
+      return "soft-light";
 
-    if (count < MIN_CHARS_IN_BLOCK) {
-      return i - (i - iFirstBeginText) % 5;
-    }
+    case "Difference":
+      return "difference";
 
-    var iFirst = iFirstBeginText;
+    case "Exclusion":
+      return "exclusion";
 
-    if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && 
fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === 
fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && 
argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === 
firstSetFontArg1) {
-      count++;
-      iFirst -= 5;
-    }
+    case "Hue":
+      return "hue";
 
-    var iEndText = iFirst + 4;
+    case "Saturation":
+      return "saturation";
 
-    for (var q = 1; q < count; q++) {
-      fnArray.splice(iEndText, 3);
-      argsArray.splice(iEndText, 3);
-      iEndText += 2;
-    }
+    case "Color":
+      return "color";
 
-    return iEndText + 1;
-  });
+    case "Luminosity":
+      return "luminosity";
+  }
 
-  function QueueOptimizer(queue) {
-    this.queue = queue;
-    this.state = null;
-    this.context = {
-      iCurr: 0,
-      fnArray: queue.fnArray,
-      argsArray: queue.argsArray
-    };
-    this.match = null;
-    this.lastProcessed = 0;
+  if (parsingArray) {
+    return null;
   }
 
-  QueueOptimizer.prototype = {
-    _optimize() {
-      const fnArray = this.queue.fnArray;
-      let i = this.lastProcessed,
-          ii = fnArray.length;
-      let state = this.state;
-      let match = this.match;
-
-      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
-        this.lastProcessed = ii;
-        return;
-      }
-
-      const context = this.context;
-
-      while (i < ii) {
-        if (match) {
-          const iterate = (0, match.iterateFn)(context, i);
-
-          if (iterate) {
-            i++;
-            continue;
-          }
-
-          i = (0, match.processFn)(context, i + 1);
-          ii = fnArray.length;
-          match = null;
-          state = null;
-
-          if (i >= ii) {
-            break;
-          }
-        }
+  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);
+  return "source-over";
+}
 
-        state = (state || InitialState)[fnArray[i]];
+class TimeSlotManager {
+  static get TIME_SLOT_DURATION_MS() {
+    return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
+  }
 
-        if (!state || Array.isArray(state)) {
-          i++;
-          continue;
-        }
+  static get CHECK_TIME_EVERY() {
+    return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100);
+  }
 
-        context.iCurr = i;
-        i++;
+  constructor() {
+    this.reset();
+  }
 
-        if (state.checkFn && !(0, state.checkFn)(context)) {
-          state = null;
-          continue;
-        }
+  check() {
+    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {
+      return false;
+    }
 
-        match = state;
-        state = null;
-      }
+    this.checked = 0;
+    return this.endTime <= Date.now();
+  }
 
-      this.state = state;
-      this.match = match;
-      this.lastProcessed = i;
-    },
+  reset() {
+    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;
+    this.checked = 0;
+  }
 
-    push(fn, args) {
-      this.queue.fnArray.push(fn);
-      this.queue.argsArray.push(args);
+}
 
-      this._optimize();
-    },
+class PartialEvaluator {
+  constructor({
+    xref,
+    handler,
+    pageIndex,
+    idFactory,
+    fontCache,
+    builtInCMapCache,
+    globalImageCache,
+    options = null
+  }) {
+    this.xref = xref;
+    this.handler = handler;
+    this.pageIndex = pageIndex;
+    this.idFactory = idFactory;
+    this.fontCache = fontCache;
+    this.builtInCMapCache = builtInCMapCache;
+    this.globalImageCache = globalImageCache;
+    this.options = options || DefaultPartialEvaluatorOptions;
+    this.parsingType3Font = false;
+    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
+  }
 
-    flush() {
-      while (this.match) {
-        const length = this.queue.fnArray.length;
-        this.lastProcessed = (0, this.match.processFn)(this.context, length);
-        this.match = null;
-        this.state = null;
+  get _pdfFunctionFactory() {
+    const pdfFunctionFactory = new _function.PDFFunctionFactory({
+      xref: this.xref,
+      isEvalSupported: this.options.isEvalSupported
+    });
+    return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
+  }
 
-        this._optimize();
-      }
-    },
+  clone(newOptions = DefaultPartialEvaluatorOptions) {
+    var newEvaluator = Object.create(this);
+    newEvaluator.options = newOptions;
+    return newEvaluator;
+  }
 
-    reset() {
-      this.state = null;
-      this.match = null;
-      this.lastProcessed = 0;
+  hasBlendModes(resources, nonBlendModesSet) {
+    if (!(resources instanceof _primitives.Dict)) {
+      return false;
     }
 
-  };
-  return QueueOptimizer;
-}();
-
-var NullOptimizer = function NullOptimizerClosure() {
-  function NullOptimizer(queue) {
-    this.queue = queue;
-  }
+    if (resources.objId && nonBlendModesSet.has(resources.objId)) {
+      return false;
+    }
 
-  NullOptimizer.prototype = {
-    push(fn, args) {
-      this.queue.fnArray.push(fn);
-      this.queue.argsArray.push(args);
-    },
+    const processed = new _primitives.RefSet(nonBlendModesSet);
 
-    flush() {},
+    if (resources.objId) {
+      processed.put(resources.objId);
+    }
 
-    reset() {}
+    var nodes = [resources],
+        xref = this.xref;
 
-  };
-  return NullOptimizer;
-}();
+    while (nodes.length) {
+      var node = nodes.shift();
+      var graphicStates = node.get("ExtGState");
 
-var OperatorList = function OperatorListClosure() {
-  var CHUNK_SIZE = 1000;
-  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
+      if (graphicStates instanceof _primitives.Dict) {
+        for (let graphicState of graphicStates.getRawValues()) {
+          if (graphicState instanceof _primitives.Ref) {
+            if (processed.has(graphicState)) {
+              continue;
+            }
 
-  function OperatorList(intent, streamSink) {
-    this._streamSink = streamSink;
-    this.fnArray = [];
-    this.argsArray = [];
+            try {
+              graphicState = xref.fetch(graphicState);
+            } catch (ex) {
+              if (ex instanceof _core_utils.MissingDataException) {
+                throw ex;
+              }
 
-    if (streamSink && intent !== "oplist") {
-      this.optimizer = new QueueOptimizer(this);
-    } else {
-      this.optimizer = new NullOptimizer(this);
-    }
+              processed.put(graphicState);
+              (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`);
+              continue;
+            }
+          }
 
-    this.dependencies = new Set();
-    this._totalLength = 0;
-    this.weight = 0;
-    this._resolved = streamSink ? null : Promise.resolve();
-  }
+          if (!(graphicState instanceof _primitives.Dict)) {
+            continue;
+          }
 
-  OperatorList.prototype = {
-    get length() {
-      return this.argsArray.length;
-    },
+          if (graphicState.objId) {
+            processed.put(graphicState.objId);
+          }
 
-    get ready() {
-      return this._resolved || this._streamSink.ready;
-    },
+          const bm = graphicState.get("BM");
 
-    get totalLength() {
-      return this._totalLength + this.length;
-    },
+          if (bm instanceof _primitives.Name) {
+            if (bm.name !== "Normal") {
+              return true;
+            }
 
-    addOp(fn, args) {
-      this.optimizer.push(fn, args);
-      this.weight++;
+            continue;
+          }
 
-      if (this._streamSink) {
-        if (this.weight >= CHUNK_SIZE) {
-          this.flush();
-        } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === 
_util.OPS.endText)) {
-          this.flush();
+          if (bm !== undefined && Array.isArray(bm)) {
+            for (const element of bm) {
+              if (element instanceof _primitives.Name && element.name !== "Normal") {
+                return true;
+              }
+            }
+          }
         }
       }
-    },
 
-    addDependency(dependency) {
-      if (this.dependencies.has(dependency)) {
-        return;
+      var xObjects = node.get("XObject");
+
+      if (!(xObjects instanceof _primitives.Dict)) {
+        continue;
       }
 
-      this.dependencies.add(dependency);
-      this.addOp(_util.OPS.dependency, [dependency]);
-    },
+      for (let xObject of xObjects.getRawValues()) {
+        if (xObject instanceof _primitives.Ref) {
+          if (processed.has(xObject)) {
+            continue;
+          }
 
-    addDependencies(dependencies) {
-      for (const dependency of dependencies) {
-        this.addDependency(dependency);
-      }
-    },
+          try {
+            xObject = xref.fetch(xObject);
+          } catch (ex) {
+            if (ex instanceof _core_utils.MissingDataException) {
+              throw ex;
+            }
 
-    addOpList(opList) {
-      if (!(opList instanceof OperatorList)) {
-        (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.');
-        return;
-      }
+            processed.put(xObject);
+            (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`);
+            continue;
+          }
+        }
 
-      for (const dependency of opList.dependencies) {
-        this.dependencies.add(dependency);
-      }
+        if (!(0, _primitives.isStream)(xObject)) {
+          continue;
+        }
 
-      for (var i = 0, ii = opList.length; i < ii; i++) {
-        this.addOp(opList.fnArray[i], opList.argsArray[i]);
-      }
-    },
+        if (xObject.dict.objId) {
+          processed.put(xObject.dict.objId);
+        }
 
-    getIR() {
-      return {
-        fnArray: this.fnArray,
-        argsArray: this.argsArray,
-        length: this.length
-      };
-    },
+        var xResources = xObject.dict.get("Resources");
 
-    get _transfers() {
-      const transfers = [];
-      const {
-        fnArray,
-        argsArray,
-        length
-      } = this;
+        if (!(xResources instanceof _primitives.Dict)) {
+          continue;
+        }
 
-      for (let i = 0; i < length; i++) {
-        switch (fnArray[i]) {
-          case _util.OPS.paintInlineImageXObject:
-          case _util.OPS.paintInlineImageXObjectGroup:
-          case _util.OPS.paintImageMaskXObject:
-            const arg = argsArray[i][0];
-            ;
+        if (xResources.objId && processed.has(xResources.objId)) {
+          continue;
+        }
 
-            if (!arg.cached) {
-              transfers.push(arg.data.buffer);
-            }
+        nodes.push(xResources);
 
-            break;
+        if (xResources.objId) {
+          processed.put(xResources.objId);
         }
       }
+    }
 
-      return transfers;
-    },
-
-    flush(lastChunk = false) {
-      this.optimizer.flush();
-      const length = this.length;
-      this._totalLength += length;
+    processed.forEach(ref => {
+      nonBlendModesSet.put(ref);
+    });
+    return false;
+  }
 
-      this._streamSink.enqueue({
-        fnArray: this.fnArray,
-        argsArray: this.argsArray,
-        lastChunk,
-        length
-      }, 1, this._transfers);
+  async fetchBuiltInCMap(name) {
+    const cachedData = this.builtInCMapCache.get(name);
 
-      this.dependencies.clear();
-      this.fnArray.length = 0;
-      this.argsArray.length = 0;
-      this.weight = 0;
-      this.optimizer.reset();
+    if (cachedData) {
+      return cachedData;
     }
 
-  };
-  return OperatorList;
-}();
+    const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
+      name
+    });
+    const reader = readableStream.getReader();
+    const data = await new Promise(function (resolve, reject) {
+      function pump() {
+        reader.read().then(function ({
+          value,
+          done
+        }) {
+          if (done) {
+            return;
+          }
 
-exports.OperatorList = OperatorList;
+          resolve(value);
+          pump();
+        }, reject);
+      }
 
-/***/ }),
-/* 27 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+      pump();
+    });
 
-"use strict";
+    if (data.compressionType !== _util.CMapCompressionType.NONE) {
+      this.builtInCMapCache.set(name, data);
+    }
 
+    return data;
+  }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.writeDict = writeDict;
-exports.incrementalUpdate = incrementalUpdate;
+  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
+    var dict = xobj.dict;
+    var matrix = dict.getArray("Matrix");
+    var bbox = dict.getArray("BBox");
 
-var _util = __w_pdfjs_require__(2);
+    if (Array.isArray(bbox) && bbox.length === 4) {
+      bbox = _util.Util.normalizeRect(bbox);
+    } else {
+      bbox = null;
+    }
 
-var _primitives = __w_pdfjs_require__(5);
+    let optionalContent = null;
 
-var _crypto = __w_pdfjs_require__(22);
+    if (dict.has("OC")) {
+      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
+      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
+    }
 
-function writeDict(dict, buffer, transform) {
-  buffer.push("<<");
+    var group = dict.get("Group");
 
-  for (const key of dict.getKeys()) {
-    buffer.push(` /${key} `);
-    writeValue(dict.getRaw(key), buffer, transform);
-  }
+    if (group) {
+      var groupOptions = {
+        matrix,
+        bbox,
+        smask,
+        isolated: false,
+        knockout: false
+      };
+      var groupSubtype = group.get("S");
+      var colorSpace = null;
 
-  buffer.push(">>");
-}
+      if ((0, _primitives.isName)(groupSubtype, "Transparency")) {
+        groupOptions.isolated = group.get("I") || false;
+        groupOptions.knockout = group.get("K") || false;
 
-function writeStream(stream, buffer, transform) {
-  writeDict(stream.dict, buffer, transform);
-  buffer.push(" stream\n");
-  let string = (0, _util.bytesToString)(stream.getBytes());
+        if (group.has("CS")) {
+          const cs = group.getRaw("CS");
 
-  if (transform !== null) {
-    string = transform.encryptString(string);
-  }
+          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);
 
-  buffer.push(string);
-  buffer.push("\nendstream\n");
-}
+          if (cachedColorSpace) {
+            colorSpace = cachedColorSpace;
+          } else {
+            colorSpace = await this.parseColorSpace({
+              cs,
+              resources,
+              localColorSpaceCache
+            });
+          }
+        }
+      }
 
-function writeArray(array, buffer, transform) {
-  buffer.push("[");
-  let first = true;
+      if (smask && smask.backdrop) {
+        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
+        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
+      }
 
-  for (const val of array) {
-    if (!first) {
-      buffer.push(" ");
-    } else {
-      first = false;
+      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
     }
 
-    writeValue(val, buffer, transform);
-  }
+    operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
+    return this.getOperatorList({
+      stream: xobj,
+      task,
+      resources: dict.get("Resources") || resources,
+      operatorList,
+      initialState
+    }).then(function () {
+      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
 
-  buffer.push("]");
-}
+      if (group) {
+        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
+      }
 
-function numberToString(value) {
-  if (Number.isInteger(value)) {
-    return value.toString();
+      if (optionalContent) {
+        operatorList.addOp(_util.OPS.endMarkedContent, []);
+      }
+    });
   }
 
-  const roundedValue = Math.round(value * 100);
+  _sendImgData(objId, imgData, cacheGlobally = false) {
+    const transfers = imgData ? [imgData.data.buffer] : null;
 
-  if (roundedValue % 100 === 0) {
-    return (roundedValue / 100).toString();
-  }
+    if (this.parsingType3Font || cacheGlobally) {
+      return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
+    }
 
-  if (roundedValue % 10 === 0) {
-    return value.toFixed(1);
+    return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers);
   }
 
-  return value.toFixed(2);
-}
+  async buildPaintImageXObject({
+    resources,
+    image,
+    isInline = false,
+    operatorList,
+    cacheKey,
+    localImageCache,
+    localColorSpaceCache
+  }) {
+    var dict = image.dict;
+    const imageRef = dict.objId;
+    var w = dict.get("Width", "W");
+    var h = dict.get("Height", "H");
 
-function writeValue(value, buffer, transform) {
-  if ((0, _primitives.isName)(value)) {
-    buffer.push(`/${value.name}`);
-  } else if ((0, _primitives.isRef)(value)) {
-    buffer.push(`${value.num} ${value.gen} R`);
-  } else if (Array.isArray(value)) {
-    writeArray(value, buffer, transform);
-  } else if (typeof value === "string") {
-    if (transform !== null) {
-      value = transform.encryptString(value);
+    if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
+      (0, _util.warn)("Image dimensions are missing, or not numbers.");
+      return undefined;
     }
 
-    buffer.push(`(${(0, _util.escapeString)(value)})`);
-  } else if (typeof value === "number") {
-    buffer.push(numberToString(value));
-  } else if ((0, _primitives.isDict)(value)) {
-    writeDict(value, buffer, transform);
-  } else if ((0, _primitives.isStream)(value)) {
-    writeStream(value, buffer, transform);
-  }
-}
-
-function writeInt(number, size, offset, buffer) {
-  for (let i = size + offset - 1; i > offset - 1; i--) {
-    buffer[i] = number & 0xff;
-    number >>= 8;
-  }
+    var maxImageSize = this.options.maxImageSize;
 
-  return offset + size;
-}
+    if (maxImageSize !== -1 && w * h > maxImageSize) {
+      (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
+      return undefined;
+    }
 
-function writeString(string, offset, buffer) {
-  for (let i = 0, len = string.length; i < len; i++) {
-    buffer[offset + i] = string.charCodeAt(i) & 0xff;
-  }
-}
+    var imageMask = dict.get("ImageMask", "IM") || false;
+    var imgData, args;
 
-function computeMD5(filesize, xrefInfo) {
-  const time = Math.floor(Date.now() / 1000);
-  const filename = xrefInfo.filename || "";
-  const md5Buffer = [time.toString(), filename, filesize.toString()];
-  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);
+    if (imageMask) {
+      var width = dict.get("Width", "W");
+      var height = dict.get("Height", "H");
+      var bitStrideLength = width + 7 >> 3;
+      var imgArray = image.getBytes(bitStrideLength * height, true);
+      var decode = dict.getArray("Decode", "D");
+      imgData = _image.PDFImage.createMask({
+        imgArray,
+        width,
+        height,
+        imageIsFromDecodeStream: image instanceof _stream.DecodeStream,
+        inverseDecode: !!decode && decode[0] > 0
+      });
+      imgData.cached = !!cacheKey;
+      args = [imgData];
+      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
 
-  for (const value of Object.values(xrefInfo.info)) {
-    md5Buffer.push(value);
-    md5BufferLen += value.length;
-  }
+      if (cacheKey) {
+        localImageCache.set(cacheKey, imageRef, {
+          fn: _util.OPS.paintImageMaskXObject,
+          args
+        });
+      }
 
-  const array = new Uint8Array(md5BufferLen);
-  let offset = 0;
+      return undefined;
+    }
 
-  for (const str of md5Buffer) {
-    writeString(str, offset, array);
-    offset += str.length;
-  }
+    var softMask = dict.get("SMask", "SM") || false;
+    var mask = dict.get("Mask") || false;
+    var SMALL_IMAGE_DIMENSIONS = 200;
 
-  return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));
-}
+    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {
+      const imageObj = new _image.PDFImage({
+        xref: this.xref,
+        res: resources,
+        image,
+        isInline,
+        pdfFunctionFactory: this._pdfFunctionFactory,
+        localColorSpaceCache
+      });
+      imgData = imageObj.createImageData(true);
+      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
+      return undefined;
+    }
 
-function incrementalUpdate(originalData, xrefInfo, newRefs) {
-  const newXref = new _primitives.Dict(null);
-  const refForXrefTable = xrefInfo.newRef;
-  let buffer, baseOffset;
-  const lastByte = originalData[originalData.length - 1];
+    let objId = `img_${this.idFactory.createObjId()}`,
+        cacheGlobally = false;
 
-  if (lastByte === 0x0a || lastByte === 0x0d) {
-    buffer = [];
-    baseOffset = originalData.length;
-  } else {
-    buffer = ["\n"];
-    baseOffset = originalData.length + 1;
-  }
+    if (this.parsingType3Font) {
+      objId = `${this.idFactory.getDocId()}_type3_${objId}`;
+    } else if (imageRef) {
+      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);
 
-  newXref.set("Size", refForXrefTable.num + 1);
-  newXref.set("Prev", xrefInfo.startXRef);
-  newXref.set("Type", _primitives.Name.get("XRef"));
+      if (cacheGlobally) {
+        objId = `${this.idFactory.getDocId()}_${objId}`;
+      }
+    }
 
-  if (xrefInfo.rootRef !== null) {
-    newXref.set("Root", xrefInfo.rootRef);
-  }
+    operatorList.addDependency(objId);
+    args = [objId, w, h];
 
-  if (xrefInfo.infoRef !== null) {
-    newXref.set("Info", xrefInfo.infoRef);
-  }
+    _image.PDFImage.buildImage({
+      xref: this.xref,
+      res: resources,
+      image,
+      isInline,
+      pdfFunctionFactory: this._pdfFunctionFactory,
+      localColorSpaceCache
+    }).then(imageObj => {
+      imgData = imageObj.createImageData(false);
+      return this._sendImgData(objId, imgData, cacheGlobally);
+    }).catch(reason => {
+      (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`);
+      return this._sendImgData(objId, null, cacheGlobally);
+    });
 
-  if (xrefInfo.encrypt !== null) {
-    newXref.set("Encrypt", xrefInfo.encrypt);
-  }
+    operatorList.addOp(_util.OPS.paintImageXObject, args);
 
-  newRefs.push({
-    ref: refForXrefTable,
-    data: ""
-  });
-  newRefs = newRefs.sort((a, b) => {
-    return a.ref.num - b.ref.num;
-  });
-  const xrefTableData = [[0, 1, 0xffff]];
-  const indexes = [0, 1];
-  let maxOffset = 0;
+    if (cacheKey) {
+      localImageCache.set(cacheKey, imageRef, {
+        fn: _util.OPS.paintImageXObject,
+        args
+      });
 
-  for (const {
-    ref,
-    data
-  } of newRefs) {
-    maxOffset = Math.max(maxOffset, baseOffset);
-    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);
-    baseOffset += data.length;
-    indexes.push(ref.num);
-    indexes.push(1);
-    buffer.push(data);
-  }
+      if (imageRef) {
+        (0, _util.assert)(!isInline, "Cannot cache an inline image globally.");
+        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);
 
-  newXref.set("Index", indexes);
+        if (cacheGlobally) {
+          this.globalImageCache.setData(imageRef, {
+            objId,
+            fn: _util.OPS.paintImageXObject,
+            args
+          });
+        }
+      }
+    }
 
-  if (xrefInfo.fileIds.length !== 0) {
-    const md5 = computeMD5(baseOffset, xrefInfo);
-    newXref.set("ID", [xrefInfo.fileIds[0], md5]);
+    return undefined;
   }
 
-  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);
-  const sizes = [1, offsetSize, 2];
-  const structSize = sizes[0] + sizes[1] + sizes[2];
-  const tableLength = structSize * xrefTableData.length;
-  newXref.set("W", sizes);
-  newXref.set("Length", tableLength);
-  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`);
-  writeDict(newXref, buffer, null);
-  buffer.push(" stream\n");
-  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);
-  const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`;
-  const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);
-  array.set(originalData);
-  let offset = originalData.length;
+  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
+    var smaskContent = smask.get("G");
+    var smaskOptions = {
+      subtype: smask.get("S").name,
+      backdrop: smask.get("BC")
+    };
+    var transferObj = smask.get("TR");
 
-  for (const str of buffer) {
-    writeString(str, offset, array);
-    offset += str.length;
-  }
+    if ((0, _function.isPDFFunction)(transferObj)) {
+      const transferFn = this._pdfFunctionFactory.create(transferObj);
 
-  for (const [type, objOffset, gen] of xrefTableData) {
-    offset = writeInt(type, sizes[0], offset, array);
-    offset = writeInt(objOffset, sizes[1], offset, array);
-    offset = writeInt(gen, sizes[2], offset, array);
-  }
+      var transferMap = new Uint8Array(256);
+      var tmp = new Float32Array(1);
 
-  writeString(footer, offset, array);
-  return array;
-}
+      for (var i = 0; i < 256; i++) {
+        tmp[0] = i / 255;
+        transferFn(tmp, 0, tmp, 0);
+        transferMap[i] = tmp[0] * 255 | 0;
+      }
 
-/***/ }),
-/* 28 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+      smaskOptions.transferMap = transferMap;
+    }
 
-"use strict";
+    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, 
stateManager.state.clone(), localColorSpaceCache);
+  }
 
+  handleTransferFunction(tr) {
+    let transferArray;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PartialEvaluator = void 0;
+    if (Array.isArray(tr)) {
+      transferArray = tr;
+    } else if ((0, _function.isPDFFunction)(tr)) {
+      transferArray = [tr];
+    } else {
+      return null;
+    }
 
-var _util = __w_pdfjs_require__(2);
+    const transferMaps = [];
+    let numFns = 0,
+        numEffectfulFns = 0;
 
-var _cmap = __w_pdfjs_require__(29);
+    for (const entry of transferArray) {
+      const transferObj = this.xref.fetchIfRef(entry);
+      numFns++;
 
-var _primitives = __w_pdfjs_require__(5);
+      if ((0, _primitives.isName)(transferObj, "Identity")) {
+        transferMaps.push(null);
+        continue;
+      } else if (!(0, _function.isPDFFunction)(transferObj)) {
+        return null;
+      }
 
-var _fonts = __w_pdfjs_require__(30);
+      const transferFn = this._pdfFunctionFactory.create(transferObj);
 
-var _encodings = __w_pdfjs_require__(33);
+      const transferMap = new Uint8Array(256),
+            tmp = new Float32Array(1);
 
-var _core_utils = __w_pdfjs_require__(8);
+      for (let j = 0; j < 256; j++) {
+        tmp[0] = j / 255;
+        transferFn(tmp, 0, tmp, 0);
+        transferMap[j] = tmp[0] * 255 | 0;
+      }
 
-var _unicode = __w_pdfjs_require__(36);
+      transferMaps.push(transferMap);
+      numEffectfulFns++;
+    }
 
-var _standard_fonts = __w_pdfjs_require__(35);
+    if (!(numFns === 1 || numFns === 4)) {
+      return null;
+    }
 
-var _pattern = __w_pdfjs_require__(39);
+    if (numEffectfulFns === 0) {
+      return null;
+    }
 
-var _function = __w_pdfjs_require__(40);
+    return transferMaps;
+  }
 
-var _parser = __w_pdfjs_require__(11);
+  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, cacheKey, 
localTilingPatternCache) {
+    const tilingOpList = new _operator_list.OperatorList();
 
-var _image_utils = __w_pdfjs_require__(24);
+    const patternResources = _primitives.Dict.merge({
+      xref: this.xref,
+      dictArray: [patternDict.get("Resources"), resources]
+    });
 
-var _bidi = __w_pdfjs_require__(42);
+    return this.getOperatorList({
+      stream: pattern,
+      task,
+      resources: patternResources,
+      operatorList: tilingOpList
+    }).then(function () {
+      const operatorListIR = tilingOpList.getIR();
+      const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);
+      operatorList.addDependencies(tilingOpList.dependencies);
+      operatorList.addOp(fn, tilingPatternIR);
 
-var _colorspace = __w_pdfjs_require__(23);
+      if (cacheKey) {
+        localTilingPatternCache.set(cacheKey, patternDict.objId, {
+          operatorListIR,
+          dict: patternDict
+        });
+      }
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return;
+      }
 
-var _stream = __w_pdfjs_require__(12);
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern
+        });
+        (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`);
+        return;
+      }
 
-var _glyphlist = __w_pdfjs_require__(34);
+      throw reason;
+    });
+  }
 
-var _metrics = __w_pdfjs_require__(43);
+  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null) {
+    var fontName;
 
-var _murmurhash = __w_pdfjs_require__(44);
+    if (fontArgs) {
+      fontArgs = fontArgs.slice();
+      fontName = fontArgs[0].name;
+    }
 
-var _operator_list = __w_pdfjs_require__(26);
+    return this.loadFont(fontName, fontRef, resources, fallbackFontDict).then(translated => {
+      if (!translated.font.isType3Font) {
+        return translated;
+      }
 
-var _image = __w_pdfjs_require__(45);
+      return translated.loadType3Data(this, resources, task).then(function () {
+        operatorList.addDependencies(translated.type3Dependencies);
+        return translated;
+      }).catch(reason => {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3
+        });
+        return new TranslatedFont({
+          loadedName: "g_font_error",
+          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),
+          dict: translated.font,
+          extraProperties: this.options.fontExtraProperties
+        });
+      });
+    }).then(translated => {
+      state.font = translated.font;
+      translated.send(this.handler);
+      return translated.loadedName;
+    });
+  }
 
-const DefaultPartialEvaluatorOptions = Object.freeze({
-  maxImageSize: -1,
-  disableFontFace: false,
-  ignoreErrors: false,
-  isEvalSupported: true,
-  fontExtraProperties: false
-});
-const PatternType = {
-  TILING: 1,
-  SHADING: 2
-};
-const deferred = Promise.resolve();
+  handleText(chars, state) {
+    const font = state.font;
+    const glyphs = font.charsToGlyphs(chars);
 
-function normalizeBlendMode(value, parsingArray = false) {
-  if (Array.isArray(value)) {
-    for (let i = 0, ii = value.length; i < ii; i++) {
-      const maybeBM = normalizeBlendMode(value[i], true);
+    if (font.data) {
+      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
 
-      if (maybeBM) {
-        return maybeBM;
+      if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || 
this.options.disableFontFace) {
+        PartialEvaluator.buildFontPaths(font, glyphs, this.handler);
       }
     }
 
-    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);
-    return "source-over";
+    return glyphs;
   }
 
-  if (!(0, _primitives.isName)(value)) {
-    if (parsingArray) {
-      return null;
+  ensureStateFont(state) {
+    if (state.font) {
+      return;
     }
 
-    return "source-over";
-  }
-
-  switch (value.name) {
-    case "Normal":
-    case "Compatible":
-      return "source-over";
+    const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator.");
 
-    case "Multiply":
-      return "multiply";
+    if (this.options.ignoreErrors) {
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontState
+      });
+      (0, _util.warn)(`ensureStateFont: "${reason}".`);
+      return;
+    }
 
-    case "Screen":
-      return "screen";
+    throw reason;
+  }
 
-    case "Overlay":
-      return "overlay";
+  async setGState({
+    resources,
+    gState,
+    operatorList,
+    cacheKey,
+    task,
+    stateManager,
+    localGStateCache,
+    localColorSpaceCache
+  }) {
+    const gStateRef = gState.objId;
+    let isSimpleGState = true;
+    var gStateObj = [];
+    var gStateKeys = gState.getKeys();
+    var promise = Promise.resolve();
 
-    case "Darken":
-      return "darken";
+    for (var i = 0, ii = gStateKeys.length; i < ii; i++) {
+      const key = gStateKeys[i];
+      const value = gState.get(key);
 
-    case "Lighten":
-      return "lighten";
+      switch (key) {
+        case "Type":
+          break;
 
-    case "ColorDodge":
-      return "color-dodge";
+        case "LW":
+        case "LC":
+        case "LJ":
+        case "ML":
+        case "D":
+        case "RI":
+        case "FL":
+        case "CA":
+        case "ca":
+          gStateObj.push([key, value]);
+          break;
 
-    case "ColorBurn":
-      return "color-burn";
+        case "Font":
+          isSimpleGState = false;
+          promise = promise.then(() => {
+            return this.handleSetFont(resources, null, value[0], operatorList, task, 
stateManager.state).then(function (loadedName) {
+              operatorList.addDependency(loadedName);
+              gStateObj.push([key, [loadedName, value[1]]]);
+            });
+          });
+          break;
 
-    case "HardLight":
-      return "hard-light";
+        case "BM":
+          gStateObj.push([key, normalizeBlendMode(value)]);
+          break;
 
-    case "SoftLight":
-      return "soft-light";
+        case "SMask":
+          if ((0, _primitives.isName)(value, "None")) {
+            gStateObj.push([key, false]);
+            break;
+          }
 
-    case "Difference":
-      return "difference";
+          if ((0, _primitives.isDict)(value)) {
+            isSimpleGState = false;
+            promise = promise.then(() => {
+              return this.handleSMask(value, resources, operatorList, task, stateManager, 
localColorSpaceCache);
+            });
+            gStateObj.push([key, true]);
+          } else {
+            (0, _util.warn)("Unsupported SMask type");
+          }
 
-    case "Exclusion":
-      return "exclusion";
+          break;
 
-    case "Hue":
-      return "hue";
+        case "TR":
+          const transferMaps = this.handleTransferFunction(value);
+          gStateObj.push([key, transferMaps]);
+          break;
 
-    case "Saturation":
-      return "saturation";
+        case "OP":
+        case "op":
+        case "OPM":
+        case "BG":
+        case "BG2":
+        case "UCR":
+        case "UCR2":
+        case "TR2":
+        case "HT":
+        case "SM":
+        case "SA":
+        case "AIS":
+        case "TK":
+          (0, _util.info)("graphic state operator " + key);
+          break;
 
-    case "Color":
-      return "color";
+        default:
+          (0, _util.info)("Unknown graphic state operator " + key);
+          break;
+      }
+    }
 
-    case "Luminosity":
-      return "luminosity";
-  }
+    return promise.then(function () {
+      if (gStateObj.length > 0) {
+        operatorList.addOp(_util.OPS.setGState, [gStateObj]);
+      }
 
-  if (parsingArray) {
-    return null;
+      if (isSimpleGState) {
+        localGStateCache.set(cacheKey, gStateRef, gStateObj);
+      }
+    });
   }
 
-  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);
-  return "source-over";
-}
-
-class TimeSlotManager {
-  static get TIME_SLOT_DURATION_MS() {
-    return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
-  }
+  loadFont(fontName, font, resources, fallbackFontDict = null) {
+    const errorFont = async () => {
+      return new TranslatedFont({
+        loadedName: "g_font_error",
+        font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`),
+        dict: font,
+        extraProperties: this.options.fontExtraProperties
+      });
+    };
 
-  static get CHECK_TIME_EVERY() {
-    return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100);
-  }
+    var fontRef,
+        xref = this.xref;
 
-  constructor() {
-    this.reset();
-  }
+    if (font) {
+      if (!(0, _primitives.isRef)(font)) {
+        throw new _util.FormatError('The "font" object should be a reference.');
+      }
 
-  check() {
-    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {
-      return false;
+      fontRef = font;
+    } else {
+      var fontRes = resources.get("Font");
+
+      if (fontRes) {
+        fontRef = fontRes.getRaw(fontName);
+      }
     }
 
-    this.checked = 0;
-    return this.endTime <= Date.now();
-  }
+    if (!fontRef) {
+      const partialMsg = `Font "${fontName || font && font.toString()}" is not available`;
 
-  reset() {
-    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;
-    this.checked = 0;
-  }
+      if (!this.options.ignoreErrors && !this.parsingType3Font) {
+        (0, _util.warn)(`${partialMsg}.`);
+        return errorFont();
+      }
 
-}
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
+      });
+      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
 
-class PartialEvaluator {
-  constructor({
-    xref,
-    handler,
-    pageIndex,
-    idFactory,
-    fontCache,
-    builtInCMapCache,
-    globalImageCache,
-    options = null
-  }) {
-    this.xref = xref;
-    this.handler = handler;
-    this.pageIndex = pageIndex;
-    this.idFactory = idFactory;
-    this.fontCache = fontCache;
-    this.builtInCMapCache = builtInCMapCache;
-    this.globalImageCache = globalImageCache;
-    this.options = options || DefaultPartialEvaluatorOptions;
-    this.parsingType3Font = false;
-    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
-  }
+      if (fallbackFontDict) {
+        fontRef = fallbackFontDict;
+      } else {
+        fontRef = PartialEvaluator.fallbackFontDict;
+      }
+    }
 
-  get _pdfFunctionFactory() {
-    const pdfFunctionFactory = new _function.PDFFunctionFactory({
-      xref: this.xref,
-      isEvalSupported: this.options.isEvalSupported
-    });
-    return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
-  }
+    if (this.fontCache.has(fontRef)) {
+      return this.fontCache.get(fontRef);
+    }
 
-  clone(newOptions = DefaultPartialEvaluatorOptions) {
-    var newEvaluator = Object.create(this);
-    newEvaluator.options = newOptions;
-    return newEvaluator;
-  }
+    font = xref.fetchIfRef(fontRef);
 
-  hasBlendModes(resources) {
-    if (!(resources instanceof _primitives.Dict)) {
-      return false;
+    if (!(0, _primitives.isDict)(font)) {
+      return errorFont();
     }
 
-    const processed = new _primitives.RefSet();
-
-    if (resources.objId) {
-      processed.put(resources.objId);
+    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {
+      return this.fontCache.get(font.cacheKey);
     }
 
-    var nodes = [resources],
-        xref = this.xref;
+    var fontCapability = (0, _util.createPromiseCapability)();
+    let preEvaluatedFont;
 
-    while (nodes.length) {
-      var node = nodes.shift();
-      var graphicStates = node.get("ExtGState");
+    try {
+      preEvaluatedFont = this.preEvaluateFont(font);
+    } catch (reason) {
+      (0, _util.warn)(`loadFont - ignoring preEvaluateFont errors: "${reason}".`);
+      return errorFont();
+    }
 
-      if (graphicStates instanceof _primitives.Dict) {
-        for (let graphicState of graphicStates.getRawValues()) {
-          if (graphicState instanceof _primitives.Ref) {
-            if (processed.has(graphicState)) {
-              continue;
-            }
+    const {
+      descriptor,
+      hash
+    } = preEvaluatedFont;
+    var fontRefIsRef = (0, _primitives.isRef)(fontRef),
+        fontID;
 
-            try {
-              graphicState = xref.fetch(graphicState);
-            } catch (ex) {
-              if (ex instanceof _core_utils.MissingDataException) {
-                throw ex;
-              }
+    if (fontRefIsRef) {
+      fontID = `f${fontRef.toString()}`;
+    }
 
-              processed.put(graphicState);
-              (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`);
-              continue;
-            }
-          }
+    if (hash && (0, _primitives.isDict)(descriptor)) {
+      if (!descriptor.fontAliases) {
+        descriptor.fontAliases = Object.create(null);
+      }
 
-          if (!(graphicState instanceof _primitives.Dict)) {
-            continue;
-          }
+      var fontAliases = descriptor.fontAliases;
 
-          if (graphicState.objId) {
-            processed.put(graphicState.objId);
-          }
+      if (fontAliases[hash]) {
+        var aliasFontRef = fontAliases[hash].aliasRef;
 
-          const bm = graphicState.get("BM");
+        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
+          this.fontCache.putAlias(fontRef, aliasFontRef);
+          return this.fontCache.get(fontRef);
+        }
+      } else {
+        fontAliases[hash] = {
+          fontID: this.idFactory.createFontId()
+        };
+      }
 
-          if (bm instanceof _primitives.Name) {
-            if (bm.name !== "Normal") {
-              return true;
-            }
+      if (fontRefIsRef) {
+        fontAliases[hash].aliasRef = fontRef;
+      }
 
-            continue;
-          }
+      fontID = fontAliases[hash].fontID;
+    }
 
-          if (bm !== undefined && Array.isArray(bm)) {
-            for (const element of bm) {
-              if (element instanceof _primitives.Name && element.name !== "Normal") {
-                return true;
-              }
-            }
-          }
-        }
+    if (fontRefIsRef) {
+      this.fontCache.put(fontRef, fontCapability.promise);
+    } else {
+      if (!fontID) {
+        fontID = this.idFactory.createFontId();
       }
 
-      var xObjects = node.get("XObject");
+      font.cacheKey = `cacheKey_${fontID}`;
+      this.fontCache.put(font.cacheKey, fontCapability.promise);
+    }
 
-      if (!(xObjects instanceof _primitives.Dict)) {
-        continue;
+    (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.');
+    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;
+    this.translateFont(preEvaluatedFont).then(translatedFont => {
+      if (translatedFont.fontType !== undefined) {
+        var xrefFontStats = xref.stats.fontTypes;
+        xrefFontStats[translatedFont.fontType] = true;
       }
 
-      for (let xObject of xObjects.getRawValues()) {
-        if (xObject instanceof _primitives.Ref) {
-          if (processed.has(xObject)) {
-            continue;
-          }
+      fontCapability.resolve(new TranslatedFont({
+        loadedName: font.loadedName,
+        font: translatedFont,
+        dict: font,
+        extraProperties: this.options.fontExtraProperties
+      }));
+    }).catch(reason => {
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate
+      });
 
-          try {
-            xObject = xref.fetch(xObject);
-          } catch (ex) {
-            if (ex instanceof _core_utils.MissingDataException) {
-              throw ex;
-            }
+      try {
+        var fontFile3 = descriptor && descriptor.get("FontFile3");
+        var subtype = fontFile3 && fontFile3.get("Subtype");
+        var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);
+        var xrefFontStats = xref.stats.fontTypes;
+        xrefFontStats[fontType] = true;
+      } catch (ex) {}
 
-            processed.put(xObject);
-            (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`);
-            continue;
-          }
-        }
+      fontCapability.resolve(new TranslatedFont({
+        loadedName: font.loadedName,
+        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),
+        dict: font,
+        extraProperties: this.options.fontExtraProperties
+      }));
+    });
+    return fontCapability.promise;
+  }
 
-        if (!(0, _primitives.isStream)(xObject)) {
-          continue;
-        }
+  buildPath(operatorList, fn, args, parsingText = false) {
+    var lastIndex = operatorList.length - 1;
 
-        if (xObject.dict.objId) {
-          processed.put(xObject.dict.objId);
-        }
+    if (!args) {
+      args = [];
+    }
 
-        var xResources = xObject.dict.get("Resources");
+    if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
+      if (parsingText) {
+        (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`);
+        operatorList.addOp(_util.OPS.save, null);
+      }
 
-        if (!(xResources instanceof _primitives.Dict)) {
-          continue;
-        }
+      operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
 
-        if (xResources.objId && processed.has(xResources.objId)) {
-          continue;
-        }
+      if (parsingText) {
+        operatorList.addOp(_util.OPS.restore, null);
+      }
+    } else {
+      var opArgs = operatorList.argsArray[lastIndex];
+      opArgs[0].push(fn);
+      Array.prototype.push.apply(opArgs[1], args);
+    }
+  }
 
-        nodes.push(xResources);
+  parseColorSpace({
+    cs,
+    resources,
+    localColorSpaceCache
+  }) {
+    return _colorspace.ColorSpace.parseAsync({
+      cs,
+      xref: this.xref,
+      resources,
+      pdfFunctionFactory: this._pdfFunctionFactory,
+      localColorSpaceCache
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return null;
+      }
 
-        if (xResources.objId) {
-          processed.put(xResources.objId);
-        }
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace
+        });
+        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`);
+        return null;
       }
-    }
 
-    return false;
+      throw reason;
+    });
   }
 
-  async fetchBuiltInCMap(name) {
-    const cachedData = this.builtInCMapCache.get(name);
+  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache) {
+    const patternName = args.pop();
 
-    if (cachedData) {
-      return cachedData;
-    }
+    if (patternName instanceof _primitives.Name) {
+      const name = patternName.name;
+      const localTilingPattern = localTilingPatternCache.getByName(name);
 
-    const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
-      name
-    });
-    const reader = readableStream.getReader();
-    const data = await new Promise(function (resolve, reject) {
-      function pump() {
-        reader.read().then(function ({
-          value,
-          done
-        }) {
-          if (done) {
-            return;
+      if (localTilingPattern) {
+        try {
+          const color = cs.base ? cs.base.getRgb(args, 0) : null;
+          const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, 
localTilingPattern.dict, color);
+          operatorList.addOp(fn, tilingPatternIR);
+          return undefined;
+        } catch (ex) {
+          if (ex instanceof _core_utils.MissingDataException) {
+            throw ex;
           }
-
-          resolve(value);
-          pump();
-        }, reject);
+        }
       }
 
-      pump();
-    });
+      let pattern = patterns.get(name);
 
-    if (data.compressionType !== _util.CMapCompressionType.NONE) {
-      this.builtInCMapCache.set(name, data);
+      if (pattern) {
+        var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
+        var typeNum = dict.get("PatternType");
+
+        if (typeNum === PatternType.TILING) {
+          const color = cs.base ? cs.base.getRgb(args, 0) : null;
+          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, name, 
localTilingPatternCache);
+        } else if (typeNum === PatternType.SHADING) {
+          var shading = dict.get("Shading");
+          var matrix = dict.getArray("Matrix");
+          pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
+          operatorList.addOp(fn, pattern.getIR());
+          return undefined;
+        }
+
+        throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
+      }
     }
 
-    return data;
+    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
   }
 
-  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
-    var dict = xobj.dict;
-    var matrix = dict.getArray("Matrix");
-    var bbox = dict.getArray("BBox");
+  async parseMarkedContentProps(contentProperties, resources) {
+    let optionalContent;
 
-    if (Array.isArray(bbox) && bbox.length === 4) {
-      bbox = _util.Util.normalizeRect(bbox);
+    if ((0, _primitives.isName)(contentProperties)) {
+      const properties = resources.get("Properties");
+      optionalContent = properties.get(contentProperties.name);
+    } else if ((0, _primitives.isDict)(contentProperties)) {
+      optionalContent = contentProperties;
     } else {
-      bbox = null;
-    }
-
-    let optionalContent = null;
-
-    if (dict.has("OC")) {
-      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
-      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
+      throw new _util.FormatError("Optional content properties malformed.");
     }
 
-    var group = dict.get("Group");
+    const optionalContentType = optionalContent.get("Type").name;
 
-    if (group) {
-      var groupOptions = {
-        matrix,
-        bbox,
-        smask,
-        isolated: false,
-        knockout: false
+    if (optionalContentType === "OCG") {
+      return {
+        type: optionalContentType,
+        id: optionalContent.objId
       };
-      var groupSubtype = group.get("S");
-      var colorSpace = null;
-
-      if ((0, _primitives.isName)(groupSubtype, "Transparency")) {
-        groupOptions.isolated = group.get("I") || false;
-        groupOptions.knockout = group.get("K") || false;
-
-        if (group.has("CS")) {
-          const cs = group.getRaw("CS");
+    } else if (optionalContentType === "OCMD") {
+      const optionalContentGroups = optionalContent.get("OCGs");
 
-          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);
+      if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
+        const groupIds = [];
 
-          if (cachedColorSpace) {
-            colorSpace = cachedColorSpace;
-          } else {
-            colorSpace = await this.parseColorSpace({
-              cs,
-              resources,
-              localColorSpaceCache
-            });
-          }
+        if (Array.isArray(optionalContentGroups)) {
+          optionalContent.get("OCGs").forEach(ocg => {
+            groupIds.push(ocg.toString());
+          });
+        } else {
+          groupIds.push(optionalContentGroups.objId);
         }
-      }
-
-      if (smask && smask.backdrop) {
-        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
-        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
-      }
 
-      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
-    }
-
-    operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
-    return this.getOperatorList({
-      stream: xobj,
-      task,
-      resources: dict.get("Resources") || resources,
-      operatorList,
-      initialState
-    }).then(function () {
-      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
+        let expression = null;
 
-      if (group) {
-        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
-      }
+        if (optionalContent.get("VE")) {
+          expression = true;
+        }
 
-      if (optionalContent) {
-        operatorList.addOp(_util.OPS.endMarkedContent, []);
+        return {
+          type: optionalContentType,
+          ids: groupIds,
+          policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
+          expression
+        };
+      } else if ((0, _primitives.isRef)(optionalContentGroups)) {
+        return {
+          type: optionalContentType,
+          id: optionalContentGroups.toString()
+        };
       }
-    });
-  }
-
-  _sendImgData(objId, imgData, cacheGlobally = false) {
-    const transfers = imgData ? [imgData.data.buffer] : null;
-
-    if (this.parsingType3Font || cacheGlobally) {
-      return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
     }
 
-    return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers);
+    return null;
   }
 
-  async buildPaintImageXObject({
+  getOperatorList({
+    stream,
+    task,
     resources,
-    image,
-    isInline = false,
     operatorList,
-    cacheKey,
-    localImageCache,
-    localColorSpaceCache
+    initialState = null,
+    fallbackFontDict = null
   }) {
-    var dict = image.dict;
-    const imageRef = dict.objId;
-    var w = dict.get("Width", "W");
-    var h = dict.get("Height", "H");
+    resources = resources || _primitives.Dict.empty;
+    initialState = initialState || new EvalState();
 
-    if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
-      (0, _util.warn)("Image dimensions are missing, or not numbers.");
-      return undefined;
+    if (!operatorList) {
+      throw new Error('getOperatorList: missing "operatorList" parameter');
     }
 
-    var maxImageSize = this.options.maxImageSize;
+    var self = this;
+    var xref = this.xref;
+    let parsingText = false;
+    const localImageCache = new _image_utils.LocalImageCache();
+    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
+    const localGStateCache = new _image_utils.LocalGStateCache();
+    const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
 
-    if (maxImageSize !== -1 && w * h > maxImageSize) {
-      (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
-      return undefined;
-    }
+    var xobjs = resources.get("XObject") || _primitives.Dict.empty;
 
-    var imageMask = dict.get("ImageMask", "IM") || false;
-    var imgData, args;
+    var patterns = resources.get("Pattern") || _primitives.Dict.empty;
 
-    if (imageMask) {
-      var width = dict.get("Width", "W");
-      var height = dict.get("Height", "H");
-      var bitStrideLength = width + 7 >> 3;
-      var imgArray = image.getBytes(bitStrideLength * height, true);
-      var decode = dict.getArray("Decode", "D");
-      imgData = _image.PDFImage.createMask({
-        imgArray,
-        width,
-        height,
-        imageIsFromDecodeStream: image instanceof _stream.DecodeStream,
-        inverseDecode: !!decode && decode[0] > 0
-      });
-      imgData.cached = !!cacheKey;
-      args = [imgData];
-      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
+    var stateManager = new StateManager(initialState);
+    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+    var timeSlotManager = new TimeSlotManager();
 
-      if (cacheKey) {
-        localImageCache.set(cacheKey, imageRef, {
-          fn: _util.OPS.paintImageMaskXObject,
-          args
-        });
+    function closePendingRestoreOPS(argument) {
+      for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
+        operatorList.addOp(_util.OPS.restore, []);
       }
-
-      return undefined;
     }
 
-    var softMask = dict.get("SMask", "SM") || false;
-    var mask = dict.get("Mask") || false;
-    var SMALL_IMAGE_DIMENSIONS = 200;
-
-    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {
-      const imageObj = new _image.PDFImage({
-        xref: this.xref,
-        res: resources,
-        image,
-        isInline,
-        pdfFunctionFactory: this._pdfFunctionFactory,
-        localColorSpaceCache
-      });
-      imgData = imageObj.createImageData(true);
-      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
-      return undefined;
-    }
+    return new Promise(function promiseBody(resolve, reject) {
+      const next = function (promise) {
+        Promise.all([promise, operatorList.ready]).then(function () {
+          try {
+            promiseBody(resolve, reject);
+          } catch (ex) {
+            reject(ex);
+          }
+        }, reject);
+      };
 
-    let objId = `img_${this.idFactory.createObjId()}`,
-        cacheGlobally = false;
+      task.ensureNotTerminated();
+      timeSlotManager.reset();
+      var stop,
+          operation = {},
+          i,
+          ii,
+          cs,
+          name;
 
-    if (this.parsingType3Font) {
-      objId = `${this.idFactory.getDocId()}_type3_${objId}`;
-    } else if (imageRef) {
-      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);
+      while (!(stop = timeSlotManager.check())) {
+        operation.args = null;
 
-      if (cacheGlobally) {
-        objId = `${this.idFactory.getDocId()}_${objId}`;
-      }
-    }
+        if (!preprocessor.read(operation)) {
+          break;
+        }
 
-    operatorList.addDependency(objId);
-    args = [objId, w, h];
+        var args = operation.args;
+        var fn = operation.fn;
 
-    _image.PDFImage.buildImage({
-      xref: this.xref,
-      res: resources,
-      image,
-      isInline,
-      pdfFunctionFactory: this._pdfFunctionFactory,
-      localColorSpaceCache
-    }).then(imageObj => {
-      imgData = imageObj.createImageData(false);
-      return this._sendImgData(objId, imgData, cacheGlobally);
-    }).catch(reason => {
-      (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`);
-      return this._sendImgData(objId, null, cacheGlobally);
-    });
+        switch (fn | 0) {
+          case _util.OPS.paintXObject:
+            name = args[0].name;
 
-    operatorList.addOp(_util.OPS.paintImageXObject, args);
+            if (name) {
+              const localImage = localImageCache.getByName(name);
 
-    if (cacheKey) {
-      localImageCache.set(cacheKey, imageRef, {
-        fn: _util.OPS.paintImageXObject,
-        args
-      });
+              if (localImage) {
+                operatorList.addOp(localImage.fn, localImage.args);
+                args = null;
+                continue;
+              }
+            }
 
-      if (imageRef) {
-        (0, _util.assert)(!isInline, "Cannot cache an inline image globally.");
-        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);
+            next(new Promise(function (resolveXObject, rejectXObject) {
+              if (!name) {
+                throw new _util.FormatError("XObject must be referred to by name.");
+              }
 
-        if (cacheGlobally) {
-          this.globalImageCache.setData(imageRef, {
-            objId,
-            fn: _util.OPS.paintImageXObject,
-            args
-          });
-        }
-      }
-    }
+              let xobj = xobjs.getRaw(name);
 
-    return undefined;
-  }
+              if (xobj instanceof _primitives.Ref) {
+                const localImage = localImageCache.getByRef(xobj);
 
-  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
-    var smaskContent = smask.get("G");
-    var smaskOptions = {
-      subtype: smask.get("S").name,
-      backdrop: smask.get("BC")
-    };
-    var transferObj = smask.get("TR");
+                if (localImage) {
+                  operatorList.addOp(localImage.fn, localImage.args);
+                  resolveXObject();
+                  return;
+                }
 
-    if ((0, _function.isPDFFunction)(transferObj)) {
-      const transferFn = this._pdfFunctionFactory.create(transferObj);
+                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
 
-      var transferMap = new Uint8Array(256);
-      var tmp = new Float32Array(1);
+                if (globalImage) {
+                  operatorList.addDependency(globalImage.objId);
+                  operatorList.addOp(globalImage.fn, globalImage.args);
+                  resolveXObject();
+                  return;
+                }
 
-      for (var i = 0; i < 256; i++) {
-        tmp[0] = i / 255;
-        transferFn(tmp, 0, tmp, 0);
-        transferMap[i] = tmp[0] * 255 | 0;
-      }
+                xobj = xref.fetch(xobj);
+              }
 
-      smaskOptions.transferMap = transferMap;
-    }
+              if (!(0, _primitives.isStream)(xobj)) {
+                throw new _util.FormatError("XObject should be a stream");
+              }
 
-    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, 
stateManager.state.clone(), localColorSpaceCache);
-  }
+              const type = xobj.dict.get("Subtype");
 
-  handleTransferFunction(tr) {
-    let transferArray;
+              if (!(0, _primitives.isName)(type)) {
+                throw new _util.FormatError("XObject should have a Name subtype");
+              }
 
-    if (Array.isArray(tr)) {
-      transferArray = tr;
-    } else if ((0, _function.isPDFFunction)(tr)) {
-      transferArray = [tr];
-    } else {
-      return null;
-    }
+              if (type.name === "Form") {
+                stateManager.save();
+                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), 
localColorSpaceCache).then(function () {
+                  stateManager.restore();
+                  resolveXObject();
+                }, rejectXObject);
+                return;
+              } else if (type.name === "Image") {
+                self.buildPaintImageXObject({
+                  resources,
+                  image: xobj,
+                  operatorList,
+                  cacheKey: name,
+                  localImageCache,
+                  localColorSpaceCache
+                }).then(resolveXObject, rejectXObject);
+                return;
+              } else if (type.name === "PS") {
+                (0, _util.info)("Ignored XObject subtype PS");
+              } else {
+                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);
+              }
 
-    const transferMaps = [];
-    let numFns = 0,
-        numEffectfulFns = 0;
+              resolveXObject();
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
 
-    for (const entry of transferArray) {
-      const transferObj = this.xref.fetchIfRef(entry);
-      numFns++;
+              if (self.options.ignoreErrors) {
+                self.handler.send("UnsupportedFeature", {
+                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject
+                });
+                (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`);
+                return;
+              }
 
-      if ((0, _primitives.isName)(transferObj, "Identity")) {
-        transferMaps.push(null);
-        continue;
-      } else if (!(0, _function.isPDFFunction)(transferObj)) {
-        return null;
-      }
+              throw reason;
+            }));
+            return;
 
-      const transferFn = this._pdfFunctionFactory.create(transferObj);
+          case _util.OPS.setFont:
+            var fontSize = args[1];
+            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, 
fallbackFontDict).then(function (loadedName) {
+              operatorList.addDependency(loadedName);
+              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
+            }));
+            return;
 
-      const transferMap = new Uint8Array(256),
-            tmp = new Float32Array(1);
+          case _util.OPS.beginText:
+            parsingText = true;
+            break;
 
-      for (let j = 0; j < 256; j++) {
-        tmp[0] = j / 255;
-        transferFn(tmp, 0, tmp, 0);
-        transferMap[j] = tmp[0] * 255 | 0;
-      }
+          case _util.OPS.endText:
+            parsingText = false;
+            break;
 
-      transferMaps.push(transferMap);
-      numEffectfulFns++;
-    }
+          case _util.OPS.endInlineImage:
+            var cacheKey = args[0].cacheKey;
 
-    if (!(numFns === 1 || numFns === 4)) {
-      return null;
-    }
+            if (cacheKey) {
+              const localImage = localImageCache.getByName(cacheKey);
 
-    if (numEffectfulFns === 0) {
-      return null;
-    }
+              if (localImage) {
+                operatorList.addOp(localImage.fn, localImage.args);
+                args = null;
+                continue;
+              }
+            }
 
-    return transferMaps;
-  }
+            next(self.buildPaintImageXObject({
+              resources,
+              image: args[0],
+              isInline: true,
+              operatorList,
+              cacheKey,
+              localImageCache,
+              localColorSpaceCache
+            }));
+            return;
 
-  handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {
-    const tilingOpList = new _operator_list.OperatorList();
+          case _util.OPS.showText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-    const patternResources = _primitives.Dict.merge({
-      xref: this.xref,
-      dictArray: [patternDict.get("Resources"), resources]
-    });
+            args[0] = self.handleText(args[0], stateManager.state);
+            break;
 
-    return this.getOperatorList({
-      stream: pattern,
-      task,
-      resources: patternResources,
-      operatorList: tilingOpList
-    }).then(function () {
-      return (0, _pattern.getTilingPatternIR)({
-        fnArray: tilingOpList.fnArray,
-        argsArray: tilingOpList.argsArray
-      }, patternDict, args);
-    }).then(function (tilingPatternIR) {
-      operatorList.addDependencies(tilingOpList.dependencies);
-      operatorList.addOp(fn, tilingPatternIR);
-    }, reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
+          case _util.OPS.showSpacedText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-      if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern
-        });
-        (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`);
-        return;
-      }
+            var arr = args[0];
+            var combinedGlyphs = [];
+            var arrLength = arr.length;
+            var state = stateManager.state;
 
-      throw reason;
-    });
-  }
+            for (i = 0; i < arrLength; ++i) {
+              var arrItem = arr[i];
 
-  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {
-    var fontName,
-        fontSize = 0;
+              if ((0, _util.isString)(arrItem)) {
+                Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
+              } else if ((0, _util.isNum)(arrItem)) {
+                combinedGlyphs.push(arrItem);
+              }
+            }
 
-    if (fontArgs) {
-      fontArgs = fontArgs.slice();
-      fontName = fontArgs[0].name;
-      fontSize = fontArgs[1];
-    }
+            args[0] = combinedGlyphs;
+            fn = _util.OPS.showText;
+            break;
 
-    return this.loadFont(fontName, fontRef, resources).then(translated => {
-      if (!translated.font.isType3Font) {
-        return translated;
-      }
+          case _util.OPS.nextLineShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-      return translated.loadType3Data(this, resources, task).then(function () {
-        operatorList.addDependencies(translated.type3Dependencies);
-        return translated;
-      }).catch(reason => {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3
-        });
-        return new TranslatedFont({
-          loadedName: "g_font_error",
-          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),
-          dict: translated.font,
-          extraProperties: this.options.fontExtraProperties
-        });
-      });
-    }).then(translated => {
-      state.font = translated.font;
-      state.fontSize = fontSize;
-      state.fontName = fontName;
-      translated.send(this.handler);
-      return translated.loadedName;
-    });
-  }
+            operatorList.addOp(_util.OPS.nextLine);
+            args[0] = self.handleText(args[0], stateManager.state);
+            fn = _util.OPS.showText;
+            break;
 
-  handleText(chars, state) {
-    const font = state.font;
-    const glyphs = font.charsToGlyphs(chars);
+          case _util.OPS.nextLineSetSpacingShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-    if (font.data) {
-      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+            operatorList.addOp(_util.OPS.nextLine);
+            operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);
+            operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);
+            args[0] = self.handleText(args[0], stateManager.state);
+            fn = _util.OPS.showText;
+            break;
 
-      if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || 
this.options.disableFontFace) {
-        PartialEvaluator.buildFontPaths(font, glyphs, this.handler);
-      }
-    }
+          case _util.OPS.setTextRenderingMode:
+            stateManager.state.textRenderingMode = args[0];
+            break;
 
-    return glyphs;
-  }
+          case _util.OPS.setFillColorSpace:
+            {
+              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
 
-  ensureStateFont(state) {
-    if (state.font) {
-      return;
-    }
+              if (cachedColorSpace) {
+                stateManager.state.fillColorSpace = cachedColorSpace;
+                continue;
+              }
 
-    const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator.");
+              next(self.parseColorSpace({
+                cs: args[0],
+                resources,
+                localColorSpaceCache
+              }).then(function (colorSpace) {
+                if (colorSpace) {
+                  stateManager.state.fillColorSpace = colorSpace;
+                }
+              }));
+              return;
+            }
 
-    if (this.options.ignoreErrors) {
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontState
-      });
-      (0, _util.warn)(`ensureStateFont: "${reason}".`);
-      return;
-    }
+          case _util.OPS.setStrokeColorSpace:
+            {
+              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
 
-    throw reason;
-  }
+              if (cachedColorSpace) {
+                stateManager.state.strokeColorSpace = cachedColorSpace;
+                continue;
+              }
 
-  async setGState({
-    resources,
-    gState,
-    operatorList,
-    cacheKey,
-    task,
-    stateManager,
-    localGStateCache,
-    localColorSpaceCache
-  }) {
-    const gStateRef = gState.objId;
-    let isSimpleGState = true;
-    var gStateObj = [];
-    var gStateKeys = gState.getKeys();
-    var promise = Promise.resolve();
+              next(self.parseColorSpace({
+                cs: args[0],
+                resources,
+                localColorSpaceCache
+              }).then(function (colorSpace) {
+                if (colorSpace) {
+                  stateManager.state.strokeColorSpace = colorSpace;
+                }
+              }));
+              return;
+            }
 
-    for (var i = 0, ii = gStateKeys.length; i < ii; i++) {
-      const key = gStateKeys[i];
-      const value = gState.get(key);
+          case _util.OPS.setFillColor:
+            cs = stateManager.state.fillColorSpace;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-      switch (key) {
-        case "Type":
-          break;
+          case _util.OPS.setStrokeColor:
+            cs = stateManager.state.strokeColorSpace;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-        case "LW":
-        case "LC":
-        case "LJ":
-        case "ML":
-        case "D":
-        case "RI":
-        case "FL":
-        case "CA":
-        case "ca":
-          gStateObj.push([key, value]);
-          break;
+          case _util.OPS.setFillGray:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
+            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-        case "Font":
-          isSimpleGState = false;
-          promise = promise.then(() => {
-            return this.handleSetFont(resources, null, value[0], operatorList, task, 
stateManager.state).then(function (loadedName) {
-              operatorList.addDependency(loadedName);
-              gStateObj.push([key, [loadedName, value[1]]]);
-            });
-          });
-          break;
+          case _util.OPS.setStrokeGray:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
+            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-        case "BM":
-          gStateObj.push([key, normalizeBlendMode(value)]);
-          break;
+          case _util.OPS.setFillCMYKColor:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
+            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-        case "SMask":
-          if ((0, _primitives.isName)(value, "None")) {
-            gStateObj.push([key, false]);
+          case _util.OPS.setStrokeCMYKColor:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
+            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
             break;
-          }
 
-          if ((0, _primitives.isDict)(value)) {
-            isSimpleGState = false;
-            promise = promise.then(() => {
-              return this.handleSMask(value, resources, operatorList, task, stateManager, 
localColorSpaceCache);
-            });
-            gStateObj.push([key, true]);
-          } else {
-            (0, _util.warn)("Unsupported SMask type");
-          }
+          case _util.OPS.setFillRGBColor:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
+            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
+            break;
 
-          break;
+          case _util.OPS.setStrokeRGBColor:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
+            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
+            break;
 
-        case "TR":
-          const transferMaps = this.handleTransferFunction(value);
-          gStateObj.push([key, transferMaps]);
-          break;
-
-        case "OP":
-        case "op":
-        case "OPM":
-        case "BG":
-        case "BG2":
-        case "UCR":
-        case "UCR2":
-        case "TR2":
-        case "HT":
-        case "SM":
-        case "SA":
-        case "AIS":
-        case "TK":
-          (0, _util.info)("graphic state operator " + key);
-          break;
+          case _util.OPS.setFillColorN:
+            cs = stateManager.state.fillColorSpace;
 
-        default:
-          (0, _util.info)("Unknown graphic state operator " + key);
-          break;
-      }
-    }
+            if (cs.name === "Pattern") {
+              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
+              return;
+            }
 
-    return promise.then(function () {
-      if (gStateObj.length > 0) {
-        operatorList.addOp(_util.OPS.setGState, [gStateObj]);
-      }
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-      if (isSimpleGState) {
-        localGStateCache.set(cacheKey, gStateRef, gStateObj);
-      }
-    });
-  }
+          case _util.OPS.setStrokeColorN:
+            cs = stateManager.state.strokeColorSpace;
 
-  loadFont(fontName, font, resources) {
-    const errorFont = () => {
-      return Promise.resolve(new TranslatedFont({
-        loadedName: "g_font_error",
-        font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`),
-        dict: font,
-        extraProperties: this.options.fontExtraProperties
-      }));
-    };
+            if (cs.name === "Pattern") {
+              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
+              return;
+            }
 
-    var fontRef,
-        xref = this.xref;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-    if (font) {
-      if (!(0, _primitives.isRef)(font)) {
-        throw new _util.FormatError('The "font" object should be a reference.');
-      }
+          case _util.OPS.shadingFill:
+            var shadingRes = resources.get("Shading");
 
-      fontRef = font;
-    } else {
-      var fontRes = resources.get("Font");
+            if (!shadingRes) {
+              throw new _util.FormatError("No shading resource found");
+            }
 
-      if (fontRes) {
-        fontRef = fontRes.getRaw(fontName);
-      }
-    }
+            var shading = shadingRes.get(args[0].name);
 
-    if (!fontRef) {
-      const partialMsg = `Font "${fontName || font && font.toString()}" is not available`;
+            if (!shading) {
+              throw new _util.FormatError("No shading object found");
+            }
 
-      if (!this.options.ignoreErrors && !this.parsingType3Font) {
-        (0, _util.warn)(`${partialMsg}.`);
-        return errorFont();
-      }
+            var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, 
self._pdfFunctionFactory, localColorSpaceCache);
 
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
-      });
-      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
-      fontRef = PartialEvaluator.fallbackFontDict;
-    }
+            var patternIR = shadingFill.getIR();
+            args = [patternIR];
+            fn = _util.OPS.shadingFill;
+            break;
 
-    if (this.fontCache.has(fontRef)) {
-      return this.fontCache.get(fontRef);
-    }
+          case _util.OPS.setGState:
+            name = args[0].name;
 
-    font = xref.fetchIfRef(fontRef);
+            if (name) {
+              const localGStateObj = localGStateCache.getByName(name);
 
-    if (!(0, _primitives.isDict)(font)) {
-      return errorFont();
-    }
+              if (localGStateObj) {
+                if (localGStateObj.length > 0) {
+                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);
+                }
 
-    if (font.translated) {
-      return font.translated;
-    }
+                args = null;
+                continue;
+              }
+            }
 
-    var fontCapability = (0, _util.createPromiseCapability)();
-    var preEvaluatedFont = this.preEvaluateFont(font);
-    const {
-      descriptor,
-      hash
-    } = preEvaluatedFont;
-    var fontRefIsRef = (0, _primitives.isRef)(fontRef),
-        fontID;
+            next(new Promise(function (resolveGState, rejectGState) {
+              if (!name) {
+                throw new _util.FormatError("GState must be referred to by name.");
+              }
 
-    if (fontRefIsRef) {
-      fontID = `f${fontRef.toString()}`;
-    }
+              const extGState = resources.get("ExtGState");
 
-    if (hash && (0, _primitives.isDict)(descriptor)) {
-      if (!descriptor.fontAliases) {
-        descriptor.fontAliases = Object.create(null);
-      }
+              if (!(extGState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("ExtGState should be a dictionary.");
+              }
 
-      var fontAliases = descriptor.fontAliases;
+              const gState = extGState.get(name);
 
-      if (fontAliases[hash]) {
-        var aliasFontRef = fontAliases[hash].aliasRef;
+              if (!(gState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("GState should be a dictionary.");
+              }
 
-        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
-          this.fontCache.putAlias(fontRef, aliasFontRef);
-          return this.fontCache.get(fontRef);
-        }
-      } else {
-        fontAliases[hash] = {
-          fontID: this.idFactory.createFontId()
-        };
-      }
+              self.setGState({
+                resources,
+                gState,
+                operatorList,
+                cacheKey: name,
+                task,
+                stateManager,
+                localGStateCache,
+                localColorSpaceCache
+              }).then(resolveGState, rejectGState);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
 
-      if (fontRefIsRef) {
-        fontAliases[hash].aliasRef = fontRef;
-      }
+              if (self.options.ignoreErrors) {
+                self.handler.send("UnsupportedFeature", {
+                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState
+                });
+                (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`);
+                return;
+              }
 
-      fontID = fontAliases[hash].fontID;
-    }
+              throw reason;
+            }));
+            return;
 
-    if (fontRefIsRef) {
-      this.fontCache.put(fontRef, fontCapability.promise);
-    } else {
-      if (!fontID) {
-        fontID = this.idFactory.createFontId();
-      }
+          case _util.OPS.moveTo:
+          case _util.OPS.lineTo:
+          case _util.OPS.curveTo:
+          case _util.OPS.curveTo2:
+          case _util.OPS.curveTo3:
+          case _util.OPS.closePath:
+          case _util.OPS.rectangle:
+            self.buildPath(operatorList, fn, args, parsingText);
+            continue;
 
-      this.fontCache.put(`id_${fontID}`, fontCapability.promise);
-    }
+          case _util.OPS.markPoint:
+          case _util.OPS.markPointProps:
+          case _util.OPS.beginCompat:
+          case _util.OPS.endCompat:
+            continue;
 
-    (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.');
-    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;
-    font.translated = fontCapability.promise;
-    var translatedPromise;
+          case _util.OPS.beginMarkedContentProps:
+            if (!(0, _primitives.isName)(args[0])) {
+              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
+              continue;
+            }
 
-    try {
-      translatedPromise = this.translateFont(preEvaluatedFont);
-    } catch (e) {
-      translatedPromise = Promise.reject(e);
-    }
+            if (args[0].name === "OC") {
+              next(self.parseMarkedContentProps(args[1], resources).then(data => {
+                operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]);
+              }).catch(reason => {
+                if (reason instanceof _util.AbortException) {
+                  return;
+                }
 
-    translatedPromise.then(translatedFont => {
-      if (translatedFont.fontType !== undefined) {
-        var xrefFontStats = xref.stats.fontTypes;
-        xrefFontStats[translatedFont.fontType] = true;
-      }
+                if (self.options.ignoreErrors) {
+                  self.handler.send("UnsupportedFeature", {
+                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent
+                  });
+                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`);
+                  return;
+                }
 
-      fontCapability.resolve(new TranslatedFont({
-        loadedName: font.loadedName,
-        font: translatedFont,
-        dict: font,
-        extraProperties: this.options.fontExtraProperties
-      }));
-    }).catch(reason => {
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate
-      });
+                throw reason;
+              }));
+              return;
+            }
 
-      try {
-        var fontFile3 = descriptor && descriptor.get("FontFile3");
-        var subtype = fontFile3 && fontFile3.get("Subtype");
-        var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);
-        var xrefFontStats = xref.stats.fontTypes;
-        xrefFontStats[fontType] = true;
-      } catch (ex) {}
+            args = [args[0].name];
+            break;
 
-      fontCapability.resolve(new TranslatedFont({
-        loadedName: font.loadedName,
-        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),
-        dict: font,
-        extraProperties: this.options.fontExtraProperties
-      }));
-    });
-    return fontCapability.promise;
-  }
+          case _util.OPS.beginMarkedContent:
+          case _util.OPS.endMarkedContent:
+          default:
+            if (args !== null) {
+              for (i = 0, ii = args.length; i < ii; i++) {
+                if (args[i] instanceof _primitives.Dict) {
+                  break;
+                }
+              }
 
-  buildPath(operatorList, fn, args, parsingText = false) {
-    var lastIndex = operatorList.length - 1;
+              if (i < ii) {
+                (0, _util.warn)("getOperatorList - ignoring operator: " + fn);
+                continue;
+              }
+            }
 
-    if (!args) {
-      args = [];
-    }
+        }
 
-    if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
-      if (parsingText) {
-        (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`);
-        operatorList.addOp(_util.OPS.save, null);
+        operatorList.addOp(fn, args);
       }
 
-      operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
-
-      if (parsingText) {
-        operatorList.addOp(_util.OPS.restore, null);
+      if (stop) {
+        next(deferred);
+        return;
       }
-    } else {
-      var opArgs = operatorList.argsArray[lastIndex];
-      opArgs[0].push(fn);
-      Array.prototype.push.apply(opArgs[1], args);
-    }
-  }
 
-  parseColorSpace({
-    cs,
-    resources,
-    localColorSpaceCache
-  }) {
-    return _colorspace.ColorSpace.parseAsync({
-      cs,
-      xref: this.xref,
-      resources,
-      pdfFunctionFactory: this._pdfFunctionFactory,
-      localColorSpaceCache
+      closePendingRestoreOPS();
+      resolve();
     }).catch(reason => {
       if (reason instanceof _util.AbortException) {
-        return null;
+        return;
       }
 
       if (this.options.ignoreErrors) {
         this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace
+          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList
         });
-        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`);
-        return null;
+        (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
+        closePendingRestoreOPS();
+        return;
       }
 
       throw reason;
     });
   }
 
-  async handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache) {
-    var patternName = args[args.length - 1];
-    var pattern;
-
-    if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) {
-      var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
-      var typeNum = dict.get("PatternType");
+  getTextContent({
+    stream,
+    task,
+    resources,
+    stateManager = null,
+    normalizeWhitespace = false,
+    combineTextItems = false,
+    sink,
+    seenStyles = Object.create(null)
+  }) {
+    resources = resources || _primitives.Dict.empty;
+    stateManager = stateManager || new StateManager(new TextState());
+    var WhitespaceRegexp = /\s/g;
+    var textContent = {
+      items: [],
+      styles: Object.create(null)
+    };
+    var textContentItem = {
+      initialized: false,
+      str: [],
+      width: 0,
+      height: 0,
+      vertical: false,
+      lastAdvanceWidth: 0,
+      lastAdvanceHeight: 0,
+      textAdvanceScale: 0,
+      spaceWidth: 0,
+      fakeSpaceMin: Infinity,
+      fakeMultiSpaceMin: Infinity,
+      fakeMultiSpaceMax: -0,
+      textRunBreakAllowed: false,
+      transform: null,
+      fontName: null
+    };
+    var SPACE_FACTOR = 0.3;
+    var MULTI_SPACE_FACTOR = 1.5;
+    var MULTI_SPACE_FACTOR_MAX = 4;
+    var self = this;
+    var xref = this.xref;
+    var xobjs = null;
+    const emptyXObjectCache = new _image_utils.LocalImageCache();
+    const emptyGStateCache = new _image_utils.LocalGStateCache();
+    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+    var textState;
 
-      if (typeNum === PatternType.TILING) {
-        var color = cs.base ? cs.base.getRgb(args, 0) : null;
-        return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task);
-      } else if (typeNum === PatternType.SHADING) {
-        var shading = dict.get("Shading");
-        var matrix = dict.getArray("Matrix");
-        pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
-        operatorList.addOp(fn, pattern.getIR());
-        return undefined;
+    function ensureTextContentItem() {
+      if (textContentItem.initialized) {
+        return textContentItem;
       }
 
-      throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
-    }
-
-    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
-  }
-
-  async parseMarkedContentProps(contentProperties, resources) {
-    let optionalContent;
-
-    if ((0, _primitives.isName)(contentProperties)) {
-      const properties = resources.get("Properties");
-      optionalContent = properties.get(contentProperties.name);
-    } else if ((0, _primitives.isDict)(contentProperties)) {
-      optionalContent = contentProperties;
-    } else {
-      throw new _util.FormatError("Optional content properties malformed.");
-    }
+      var font = textState.font;
 
-    const optionalContentType = optionalContent.get("Type").name;
+      if (!(font.loadedName in seenStyles)) {
+        seenStyles[font.loadedName] = true;
+        textContent.styles[font.loadedName] = {
+          fontFamily: font.fallbackName,
+          ascent: font.ascent,
+          descent: font.descent,
+          vertical: font.vertical
+        };
+      }
 
-    if (optionalContentType === "OCG") {
-      return {
-        type: optionalContentType,
-        id: optionalContent.objId
-      };
-    } else if (optionalContentType === "OCMD") {
-      const optionalContentGroups = optionalContent.get("OCGs");
+      textContentItem.fontName = font.loadedName;
+      var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];
 
-      if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
-        const groupIds = [];
+      if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, 
_util.FONT_IDENTITY_MATRIX)) {
+        const glyphHeight = font.bbox[3] - font.bbox[1];
 
-        if (Array.isArray(optionalContentGroups)) {
-          optionalContent.get("OCGs").forEach(ocg => {
-            groupIds.push(ocg.toString());
-          });
-        } else {
-          groupIds.push(optionalContentGroups.objId);
+        if (glyphHeight > 0) {
+          tsm[3] *= glyphHeight * textState.fontMatrix[3];
         }
+      }
 
-        let expression = null;
+      var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
 
-        if (optionalContent.get("VE")) {
-          expression = true;
-        }
+      textContentItem.transform = trm;
 
-        return {
-          type: optionalContentType,
-          ids: groupIds,
-          policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
-          expression
-        };
-      } else if ((0, _primitives.isRef)(optionalContentGroups)) {
-        return {
-          type: optionalContentType,
-          id: optionalContentGroups.toString()
-        };
+      if (!font.vertical) {
+        textContentItem.width = 0;
+        textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);
+        textContentItem.vertical = false;
+      } else {
+        textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);
+        textContentItem.height = 0;
+        textContentItem.vertical = true;
       }
-    }
 
-    return null;
-  }
+      var a = textState.textLineMatrix[0];
+      var b = textState.textLineMatrix[1];
+      var scaleLineX = Math.sqrt(a * a + b * b);
+      a = textState.ctm[0];
+      b = textState.ctm[1];
+      var scaleCtmX = Math.sqrt(a * a + b * b);
+      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
+      textContentItem.lastAdvanceWidth = 0;
+      textContentItem.lastAdvanceHeight = 0;
+      var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
 
-  getOperatorList({
-    stream,
-    task,
-    resources,
-    operatorList,
-    initialState = null
-  }) {
-    resources = resources || _primitives.Dict.empty;
-    initialState = initialState || new EvalState();
+      if (spaceWidth) {
+        textContentItem.spaceWidth = spaceWidth;
+        textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;
+        textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;
+        textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;
+        textContentItem.textRunBreakAllowed = !font.isMonospace;
+      } else {
+        textContentItem.spaceWidth = 0;
+        textContentItem.fakeSpaceMin = Infinity;
+        textContentItem.fakeMultiSpaceMin = Infinity;
+        textContentItem.fakeMultiSpaceMax = 0;
+        textContentItem.textRunBreakAllowed = false;
+      }
 
-    if (!operatorList) {
-      throw new Error('getOperatorList: missing "operatorList" parameter');
+      textContentItem.initialized = true;
+      return textContentItem;
     }
 
-    var self = this;
-    var xref = this.xref;
-    let parsingText = false;
-    const localImageCache = new _image_utils.LocalImageCache();
-    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
-    const localGStateCache = new _image_utils.LocalGStateCache();
-
-    var xobjs = resources.get("XObject") || _primitives.Dict.empty;
-
-    var patterns = resources.get("Pattern") || _primitives.Dict.empty;
-
-    var stateManager = new StateManager(initialState);
-    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
-    var timeSlotManager = new TimeSlotManager();
+    function replaceWhitespace(str) {
+      var i = 0,
+          ii = str.length,
+          code;
 
-    function closePendingRestoreOPS(argument) {
-      for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
-        operatorList.addOp(_util.OPS.restore, []);
+      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
+        i++;
       }
+
+      return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
     }
 
-    return new Promise(function promiseBody(resolve, reject) {
-      const next = function (promise) {
-        Promise.all([promise, operatorList.ready]).then(function () {
-          try {
-            promiseBody(resolve, reject);
-          } catch (ex) {
-            reject(ex);
+    function runBidiTransform(textChunk) {
+      var str = textChunk.str.join("");
+      var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);
+      return {
+        str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,
+        dir: bidiResult.dir,
+        width: textChunk.width,
+        height: textChunk.height,
+        transform: textChunk.transform,
+        fontName: textChunk.fontName
+      };
+    }
+
+    function handleSetFont(fontName, fontRef) {
+      return self.loadFont(fontName, fontRef, resources).then(function (translated) {
+        textState.font = translated.font;
+        textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+      });
+    }
+
+    function buildTextContentItem(chars) {
+      var font = textState.font;
+      var textChunk = ensureTextContentItem();
+      var width = 0;
+      var height = 0;
+      var glyphs = font.charsToGlyphs(chars);
+
+      for (var i = 0; i < glyphs.length; i++) {
+        var glyph = glyphs[i];
+        var glyphWidth = null;
+
+        if (font.vertical && glyph.vmetric) {
+          glyphWidth = glyph.vmetric[0];
+        } else {
+          glyphWidth = glyph.width;
+        }
+
+        var glyphUnicode = glyph.unicode;
+        var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
+
+        if (NormalizedUnicodes[glyphUnicode] !== undefined) {
+          glyphUnicode = NormalizedUnicodes[glyphUnicode];
+        }
+
+        glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
+        var charSpacing = textState.charSpacing;
+
+        if (glyph.isSpace) {
+          var wordSpacing = textState.wordSpacing;
+          charSpacing += wordSpacing;
+
+          if (wordSpacing > 0) {
+            addFakeSpaces(wordSpacing, textChunk.str);
+          }
+        }
+
+        var tx = 0;
+        var ty = 0;
+
+        if (!font.vertical) {
+          var w0 = glyphWidth * textState.fontMatrix[0];
+          tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;
+          width += tx;
+        } else {
+          var w1 = glyphWidth * textState.fontMatrix[0];
+          ty = w1 * textState.fontSize + charSpacing;
+          height += ty;
+        }
+
+        textState.translateTextMatrix(tx, ty);
+        textChunk.str.push(glyphUnicode);
+      }
+
+      if (!font.vertical) {
+        textChunk.lastAdvanceWidth = width;
+        textChunk.width += width;
+      } else {
+        textChunk.lastAdvanceHeight = height;
+        textChunk.height += Math.abs(height);
+      }
+
+      return textChunk;
+    }
+
+    function addFakeSpaces(width, strBuf) {
+      if (width < textContentItem.fakeSpaceMin) {
+        return;
+      }
+
+      if (width < textContentItem.fakeMultiSpaceMin) {
+        strBuf.push(" ");
+        return;
+      }
+
+      var fakeSpaces = Math.round(width / textContentItem.spaceWidth);
+
+      while (fakeSpaces-- > 0) {
+        strBuf.push(" ");
+      }
+    }
+
+    function flushTextContentItem() {
+      if (!textContentItem.initialized) {
+        return;
+      }
+
+      if (!textContentItem.vertical) {
+        textContentItem.width *= textContentItem.textAdvanceScale;
+      } else {
+        textContentItem.height *= textContentItem.textAdvanceScale;
+      }
+
+      textContent.items.push(runBidiTransform(textContentItem));
+      textContentItem.initialized = false;
+      textContentItem.str.length = 0;
+    }
+
+    function enqueueChunk() {
+      const length = textContent.items.length;
+
+      if (length > 0) {
+        sink.enqueue(textContent, length);
+        textContent.items = [];
+        textContent.styles = Object.create(null);
+      }
+    }
+
+    var timeSlotManager = new TimeSlotManager();
+    return new Promise(function promiseBody(resolve, reject) {
+      const next = function (promise) {
+        enqueueChunk();
+        Promise.all([promise, sink.ready]).then(function () {
+          try {
+            promiseBody(resolve, reject);
+          } catch (ex) {
+            reject(ex);
           }
         }, reject);
       };
@@ -22649,186 +23567,165 @@ class PartialEvaluator {
       timeSlotManager.reset();
       var stop,
           operation = {},
-          i,
-          ii,
-          cs,
-          name;
+          args = [];
 
       while (!(stop = timeSlotManager.check())) {
-        operation.args = null;
+        args.length = 0;
+        operation.args = args;
 
         if (!preprocessor.read(operation)) {
           break;
         }
 
-        var args = operation.args;
+        textState = stateManager.state;
         var fn = operation.fn;
+        args = operation.args;
+        var advance, diff;
 
         switch (fn | 0) {
-          case _util.OPS.paintXObject:
-            name = args[0].name;
-
-            if (name) {
-              const localImage = localImageCache.getByName(name);
+          case _util.OPS.setFont:
+            var fontNameArg = args[0].name,
+                fontSizeArg = args[1];
 
-              if (localImage) {
-                operatorList.addOp(localImage.fn, localImage.args);
-                args = null;
-                continue;
-              }
+            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
+              break;
             }
 
-            next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!name) {
-                throw new _util.FormatError("XObject must be referred to by name.");
-              }
-
-              let xobj = xobjs.getRaw(name);
+            flushTextContentItem();
+            textState.fontName = fontNameArg;
+            textState.fontSize = fontSizeArg;
+            next(handleSetFont(fontNameArg, null));
+            return;
 
-              if (xobj instanceof _primitives.Ref) {
-                const localImage = localImageCache.getByRef(xobj);
+          case _util.OPS.setTextRise:
+            flushTextContentItem();
+            textState.textRise = args[0];
+            break;
 
-                if (localImage) {
-                  operatorList.addOp(localImage.fn, localImage.args);
-                  resolveXObject();
-                  return;
-                }
+          case _util.OPS.setHScale:
+            flushTextContentItem();
+            textState.textHScale = args[0] / 100;
+            break;
 
-                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
+          case _util.OPS.setLeading:
+            flushTextContentItem();
+            textState.leading = args[0];
+            break;
 
-                if (globalImage) {
-                  operatorList.addDependency(globalImage.objId);
-                  operatorList.addOp(globalImage.fn, globalImage.args);
-                  resolveXObject();
-                  return;
-                }
+          case _util.OPS.moveText:
+            var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 
0;
+            advance = args[0] - args[1];
 
-                xobj = xref.fetch(xobj);
-              }
+            if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance 
<= textContentItem.fakeMultiSpaceMax) {
+              textState.translateTextLineMatrix(args[0], args[1]);
+              textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;
+              textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;
+              diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - 
textContentItem.lastAdvanceHeight);
+              addFakeSpaces(diff, textContentItem.str);
+              break;
+            }
 
-              if (!(0, _primitives.isStream)(xobj)) {
-                throw new _util.FormatError("XObject should be a stream");
-              }
+            flushTextContentItem();
+            textState.translateTextLineMatrix(args[0], args[1]);
+            textState.textMatrix = textState.textLineMatrix.slice();
+            break;
 
-              const type = xobj.dict.get("Subtype");
+          case _util.OPS.setLeadingMoveText:
+            flushTextContentItem();
+            textState.leading = -args[1];
+            textState.translateTextLineMatrix(args[0], args[1]);
+            textState.textMatrix = textState.textLineMatrix.slice();
+            break;
 
-              if (!(0, _primitives.isName)(type)) {
-                throw new _util.FormatError("XObject should have a Name subtype");
-              }
+          case _util.OPS.nextLine:
+            flushTextContentItem();
+            textState.carriageReturn();
+            break;
 
-              if (type.name === "Form") {
-                stateManager.save();
-                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), 
localColorSpaceCache).then(function () {
-                  stateManager.restore();
-                  resolveXObject();
-                }, rejectXObject);
-                return;
-              } else if (type.name === "Image") {
-                self.buildPaintImageXObject({
-                  resources,
-                  image: xobj,
-                  operatorList,
-                  cacheKey: name,
-                  localImageCache,
-                  localColorSpaceCache
-                }).then(resolveXObject, rejectXObject);
-                return;
-              } else if (type.name === "PS") {
-                (0, _util.info)("Ignored XObject subtype PS");
-              } else {
-                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);
-              }
+          case _util.OPS.setTextMatrix:
+            advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], 
args[5]);
 
-              resolveXObject();
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
+            if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && 
advance.value <= textContentItem.fakeMultiSpaceMax) {
+              textState.translateTextLineMatrix(advance.width, advance.height);
+              textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;
+              textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;
+              diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - 
textContentItem.lastAdvanceHeight);
+              addFakeSpaces(diff, textContentItem.str);
+              break;
+            }
 
-              if (self.options.ignoreErrors) {
-                self.handler.send("UnsupportedFeature", {
-                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject
-                });
-                (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`);
-                return;
-              }
+            flushTextContentItem();
+            textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
+            textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
+            break;
 
-              throw reason;
-            }));
-            return;
+          case _util.OPS.setCharSpacing:
+            textState.charSpacing = args[0];
+            break;
 
-          case _util.OPS.setFont:
-            var fontSize = args[1];
-            next(self.handleSetFont(resources, args, null, operatorList, task, 
stateManager.state).then(function (loadedName) {
-              operatorList.addDependency(loadedName);
-              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
-            }));
-            return;
+          case _util.OPS.setWordSpacing:
+            textState.wordSpacing = args[0];
+            break;
 
           case _util.OPS.beginText:
-            parsingText = true;
+            flushTextContentItem();
+            textState.textMatrix = _util.IDENTITY_MATRIX.slice();
+            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
             break;
 
-          case _util.OPS.endText:
-            parsingText = false;
-            break;
+          case _util.OPS.showSpacedText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-          case _util.OPS.endInlineImage:
-            var cacheKey = args[0].cacheKey;
+            var items = args[0];
+            var offset;
 
-            if (cacheKey) {
-              const localImage = localImageCache.getByName(cacheKey);
+            for (var j = 0, jj = items.length; j < jj; j++) {
+              if (typeof items[j] === "string") {
+                buildTextContentItem(items[j]);
+              } else if ((0, _util.isNum)(items[j])) {
+                ensureTextContentItem();
+                advance = items[j] * textState.fontSize / 1000;
+                var breakTextRun = false;
 
-              if (localImage) {
-                operatorList.addOp(localImage.fn, localImage.args);
-                args = null;
-                continue;
-              }
-            }
+                if (textState.font.vertical) {
+                  offset = advance;
+                  textState.translateTextMatrix(0, offset);
+                  breakTextRun = textContentItem.textRunBreakAllowed && advance > 
textContentItem.fakeMultiSpaceMax;
 
-            next(self.buildPaintImageXObject({
-              resources,
-              image: args[0],
-              isInline: true,
-              operatorList,
-              cacheKey,
-              localImageCache,
-              localColorSpaceCache
-            }));
-            return;
+                  if (!breakTextRun) {
+                    textContentItem.height += offset;
+                  }
+                } else {
+                  advance = -advance;
+                  offset = advance * textState.textHScale;
+                  textState.translateTextMatrix(offset, 0);
+                  breakTextRun = textContentItem.textRunBreakAllowed && advance > 
textContentItem.fakeMultiSpaceMax;
 
-          case _util.OPS.showText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
+                  if (!breakTextRun) {
+                    textContentItem.width += offset;
+                  }
+                }
+
+                if (breakTextRun) {
+                  flushTextContentItem();
+                } else if (advance > 0) {
+                  addFakeSpaces(advance, textContentItem.str);
+                }
+              }
             }
 
-            args[0] = self.handleText(args[0], stateManager.state);
             break;
 
-          case _util.OPS.showSpacedText:
+          case _util.OPS.showText:
             if (!stateManager.state.font) {
               self.ensureStateFont(stateManager.state);
               continue;
             }
 
-            var arr = args[0];
-            var combinedGlyphs = [];
-            var arrLength = arr.length;
-            var state = stateManager.state;
-
-            for (i = 0; i < arrLength; ++i) {
-              var arrItem = arr[i];
-
-              if ((0, _util.isString)(arrItem)) {
-                Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
-              } else if ((0, _util.isNum)(arrItem)) {
-                combinedGlyphs.push(arrItem);
-              }
-            }
-
-            args[0] = combinedGlyphs;
-            fn = _util.OPS.showText;
+            buildTextContentItem(args[0]);
             break;
 
           case _util.OPS.nextLineShowText:
@@ -22837,9 +23734,9 @@ class PartialEvaluator {
               continue;
             }
 
-            operatorList.addOp(_util.OPS.nextLine);
-            args[0] = self.handleText(args[0], stateManager.state);
-            fn = _util.OPS.showText;
+            flushTextContentItem();
+            textState.carriageReturn();
+            buildTextContentItem(args[0]);
             break;
 
           case _util.OPS.nextLineSetSpacingShowText:
@@ -22848,163 +23745,119 @@ class PartialEvaluator {
               continue;
             }
 
-            operatorList.addOp(_util.OPS.nextLine);
-            operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);
-            operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);
-            args[0] = self.handleText(args[0], stateManager.state);
-            fn = _util.OPS.showText;
+            flushTextContentItem();
+            textState.wordSpacing = args[0];
+            textState.charSpacing = args[1];
+            textState.carriageReturn();
+            buildTextContentItem(args[2]);
             break;
 
-          case _util.OPS.setTextRenderingMode:
-            stateManager.state.textRenderingMode = args[0];
-            break;
+          case _util.OPS.paintXObject:
+            flushTextContentItem();
 
-          case _util.OPS.setFillColorSpace:
-            {
-              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
+            if (!xobjs) {
+              xobjs = resources.get("XObject") || _primitives.Dict.empty;
+            }
 
-              if (cachedColorSpace) {
-                stateManager.state.fillColorSpace = cachedColorSpace;
-                continue;
-              }
+            var name = args[0].name;
 
-              next(self.parseColorSpace({
-                cs: args[0],
-                resources,
-                localColorSpaceCache
-              }).then(function (colorSpace) {
-                if (colorSpace) {
-                  stateManager.state.fillColorSpace = colorSpace;
-                }
-              }));
-              return;
+            if (name && emptyXObjectCache.getByName(name)) {
+              break;
             }
 
-          case _util.OPS.setStrokeColorSpace:
-            {
-              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
-
-              if (cachedColorSpace) {
-                stateManager.state.strokeColorSpace = cachedColorSpace;
-                continue;
+            next(new Promise(function (resolveXObject, rejectXObject) {
+              if (!name) {
+                throw new _util.FormatError("XObject must be referred to by name.");
               }
 
-              next(self.parseColorSpace({
-                cs: args[0],
-                resources,
-                localColorSpaceCache
-              }).then(function (colorSpace) {
-                if (colorSpace) {
-                  stateManager.state.strokeColorSpace = colorSpace;
+              let xobj = xobjs.getRaw(name);
+
+              if (xobj instanceof _primitives.Ref) {
+                if (emptyXObjectCache.getByRef(xobj)) {
+                  resolveXObject();
+                  return;
                 }
-              }));
-              return;
-            }
 
-          case _util.OPS.setFillColor:
-            cs = stateManager.state.fillColorSpace;
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
+                xobj = xref.fetch(xobj);
+              }
 
-          case _util.OPS.setStrokeColor:
-            cs = stateManager.state.strokeColorSpace;
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+              if (!(0, _primitives.isStream)(xobj)) {
+                throw new _util.FormatError("XObject should be a stream");
+              }
 
-          case _util.OPS.setFillGray:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
-            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
+              const type = xobj.dict.get("Subtype");
 
-          case _util.OPS.setStrokeGray:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
-            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+              if (!(0, _primitives.isName)(type)) {
+                throw new _util.FormatError("XObject should have a Name subtype");
+              }
 
-          case _util.OPS.setFillCMYKColor:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
-            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
+              if (type.name !== "Form") {
+                emptyXObjectCache.set(name, xobj.dict.objId, true);
+                resolveXObject();
+                return;
+              }
 
-          case _util.OPS.setStrokeCMYKColor:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
-            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+              const currentState = stateManager.state.clone();
+              const xObjStateManager = new StateManager(currentState);
+              const matrix = xobj.dict.getArray("Matrix");
 
-          case _util.OPS.setFillRGBColor:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
-            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
-            break;
+              if (Array.isArray(matrix) && matrix.length === 6) {
+                xObjStateManager.transform(matrix);
+              }
 
-          case _util.OPS.setStrokeRGBColor:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
-            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
-            break;
-
-          case _util.OPS.setFillColorN:
-            cs = stateManager.state.fillColorSpace;
-
-            if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache));
-              return;
-            }
-
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
-
-          case _util.OPS.setStrokeColorN:
-            cs = stateManager.state.strokeColorSpace;
-
-            if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache));
-              return;
-            }
+              enqueueChunk();
+              const sinkWrapper = {
+                enqueueInvoked: false,
 
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+                enqueue(chunk, size) {
+                  this.enqueueInvoked = true;
+                  sink.enqueue(chunk, size);
+                },
 
-          case _util.OPS.shadingFill:
-            var shadingRes = resources.get("Shading");
+                get desiredSize() {
+                  return sink.desiredSize;
+                },
 
-            if (!shadingRes) {
-              throw new _util.FormatError("No shading resource found");
-            }
+                get ready() {
+                  return sink.ready;
+                }
 
-            var shading = shadingRes.get(args[0].name);
+              };
+              self.getTextContent({
+                stream: xobj,
+                task,
+                resources: xobj.dict.get("Resources") || resources,
+                stateManager: xObjStateManager,
+                normalizeWhitespace,
+                combineTextItems,
+                sink: sinkWrapper,
+                seenStyles
+              }).then(function () {
+                if (!sinkWrapper.enqueueInvoked) {
+                  emptyXObjectCache.set(name, xobj.dict.objId, true);
+                }
 
-            if (!shading) {
-              throw new _util.FormatError("No shading object found");
-            }
+                resolveXObject();
+              }, rejectXObject);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
 
-            var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, 
self._pdfFunctionFactory, localColorSpaceCache);
+              if (self.options.ignoreErrors) {
+                (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`);
+                return;
+              }
 
-            var patternIR = shadingFill.getIR();
-            args = [patternIR];
-            fn = _util.OPS.shadingFill;
-            break;
+              throw reason;
+            }));
+            return;
 
           case _util.OPS.setGState:
             name = args[0].name;
 
-            if (name) {
-              const localGStateObj = localGStateCache.getByName(name);
-
-              if (localGStateObj) {
-                if (localGStateObj.length > 0) {
-                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);
-                }
-
-                args = null;
-                continue;
-              }
+            if (name && emptyGStateCache.getByName(name)) {
+              break;
             }
 
             next(new Promise(function (resolveGState, rejectGState) {
@@ -23024,98 +23877,37 @@ class PartialEvaluator {
                 throw new _util.FormatError("GState should be a dictionary.");
               }
 
-              self.setGState({
-                resources,
-                gState,
-                operatorList,
-                cacheKey: name,
-                task,
-                stateManager,
-                localGStateCache,
-                localColorSpaceCache
-              }).then(resolveGState, rejectGState);
+              const gStateFont = gState.get("Font");
+
+              if (!gStateFont) {
+                emptyGStateCache.set(name, gState.objId, true);
+                resolveGState();
+                return;
+              }
+
+              flushTextContentItem();
+              textState.fontName = null;
+              textState.fontSize = gStateFont[1];
+              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);
             }).catch(function (reason) {
               if (reason instanceof _util.AbortException) {
                 return;
               }
 
               if (self.options.ignoreErrors) {
-                self.handler.send("UnsupportedFeature", {
-                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState
-                });
-                (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`);
+                (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`);
                 return;
               }
 
               throw reason;
             }));
             return;
-
-          case _util.OPS.moveTo:
-          case _util.OPS.lineTo:
-          case _util.OPS.curveTo:
-          case _util.OPS.curveTo2:
-          case _util.OPS.curveTo3:
-          case _util.OPS.closePath:
-          case _util.OPS.rectangle:
-            self.buildPath(operatorList, fn, args, parsingText);
-            continue;
-
-          case _util.OPS.markPoint:
-          case _util.OPS.markPointProps:
-          case _util.OPS.beginCompat:
-          case _util.OPS.endCompat:
-            continue;
-
-          case _util.OPS.beginMarkedContentProps:
-            if (!(0, _primitives.isName)(args[0])) {
-              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
-              continue;
-            }
-
-            if (args[0].name === "OC") {
-              next(self.parseMarkedContentProps(args[1], resources).then(data => {
-                operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]);
-              }).catch(reason => {
-                if (reason instanceof _util.AbortException) {
-                  return;
-                }
-
-                if (self.options.ignoreErrors) {
-                  self.handler.send("UnsupportedFeature", {
-                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent
-                  });
-                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`);
-                  return;
-                }
-
-                throw reason;
-              }));
-              return;
-            }
-
-            args = [args[0].name];
-            break;
-
-          case _util.OPS.beginMarkedContent:
-          case _util.OPS.endMarkedContent:
-          default:
-            if (args !== null) {
-              for (i = 0, ii = args.length; i < ii; i++) {
-                if (args[i] instanceof _primitives.Dict) {
-                  break;
-                }
-              }
-
-              if (i < ii) {
-                (0, _util.warn)("getOperatorList - ignoring operator: " + fn);
-                continue;
-              }
-            }
-
         }
 
-        operatorList.addOp(fn, args);
+        if (textContent.items.length >= sink.desiredSize) {
+          stop = true;
+          break;
+        }
       }
 
       if (stop) {
@@ -23123,7 +23915,8 @@ class PartialEvaluator {
         return;
       }
 
-      closePendingRestoreOPS();
+      flushTextContentItem();
+      enqueueChunk();
       resolve();
     }).catch(reason => {
       if (reason instanceof _util.AbortException) {
@@ -23131,11 +23924,9 @@ class PartialEvaluator {
       }
 
       if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList
-        });
-        (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
-        closePendingRestoreOPS();
+        (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
+        flushTextContentItem();
+        enqueueChunk();
         return;
       }
 
@@ -23143,1655 +23934,1075 @@ class PartialEvaluator {
     });
   }
 
-  getTextContent({
-    stream,
-    task,
-    resources,
-    stateManager = null,
-    normalizeWhitespace = false,
-    combineTextItems = false,
-    sink,
-    seenStyles = Object.create(null)
-  }) {
-    resources = resources || _primitives.Dict.empty;
-    stateManager = stateManager || new StateManager(new TextState());
-    var WhitespaceRegexp = /\s/g;
-    var textContent = {
-      items: [],
-      styles: Object.create(null)
-    };
-    var textContentItem = {
-      initialized: false,
-      str: [],
-      width: 0,
-      height: 0,
-      vertical: false,
-      lastAdvanceWidth: 0,
-      lastAdvanceHeight: 0,
-      textAdvanceScale: 0,
-      spaceWidth: 0,
-      fakeSpaceMin: Infinity,
-      fakeMultiSpaceMin: Infinity,
-      fakeMultiSpaceMax: -0,
-      textRunBreakAllowed: false,
-      transform: null,
-      fontName: null
-    };
-    var SPACE_FACTOR = 0.3;
-    var MULTI_SPACE_FACTOR = 1.5;
-    var MULTI_SPACE_FACTOR_MAX = 4;
-    var self = this;
-    var xref = this.xref;
-    var xobjs = null;
-    const emptyXObjectCache = new _image_utils.LocalImageCache();
-    const emptyGStateCache = new _image_utils.LocalGStateCache();
-    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
-    var textState;
-
-    function ensureTextContentItem() {
-      if (textContentItem.initialized) {
-        return textContentItem;
-      }
+  extractDataStructures(dict, baseDict, properties) {
+    const xref = this.xref;
+    let cidToGidBytes;
+    var toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
+    var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);
 
-      var font = textState.font;
+    if (properties.composite) {
+      var cidSystemInfo = dict.get("CIDSystemInfo");
 
-      if (!(font.loadedName in seenStyles)) {
-        seenStyles[font.loadedName] = true;
-        textContent.styles[font.loadedName] = {
-          fontFamily: font.fallbackName,
-          ascent: font.ascent,
-          descent: font.descent,
-          vertical: font.vertical
+      if ((0, _primitives.isDict)(cidSystemInfo)) {
+        properties.cidSystemInfo = {
+          registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
+          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
+          supplement: cidSystemInfo.get("Supplement")
         };
       }
 
-      textContentItem.fontName = font.loadedName;
-      var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];
-
-      if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, 
_util.FONT_IDENTITY_MATRIX)) {
-        const glyphHeight = font.bbox[3] - font.bbox[1];
+      var cidToGidMap = dict.get("CIDToGIDMap");
 
-        if (glyphHeight > 0) {
-          tsm[3] *= glyphHeight * textState.fontMatrix[3];
-        }
+      if ((0, _primitives.isStream)(cidToGidMap)) {
+        cidToGidBytes = cidToGidMap.getBytes();
       }
+    }
 
-      var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
+    var differences = [];
+    var baseEncodingName = null;
+    var encoding;
 
-      textContentItem.transform = trm;
+    if (dict.has("Encoding")) {
+      encoding = dict.get("Encoding");
 
-      if (!font.vertical) {
-        textContentItem.width = 0;
-        textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);
-        textContentItem.vertical = false;
-      } else {
-        textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);
-        textContentItem.height = 0;
-        textContentItem.vertical = true;
-      }
+      if ((0, _primitives.isDict)(encoding)) {
+        baseEncodingName = encoding.get("BaseEncoding");
+        baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
 
-      var a = textState.textLineMatrix[0];
-      var b = textState.textLineMatrix[1];
-      var scaleLineX = Math.sqrt(a * a + b * b);
-      a = textState.ctm[0];
-      b = textState.ctm[1];
-      var scaleCtmX = Math.sqrt(a * a + b * b);
-      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
-      textContentItem.lastAdvanceWidth = 0;
-      textContentItem.lastAdvanceHeight = 0;
-      var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
+        if (encoding.has("Differences")) {
+          var diffEncoding = encoding.get("Differences");
+          var index = 0;
 
-      if (spaceWidth) {
-        textContentItem.spaceWidth = spaceWidth;
-        textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;
-        textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;
-        textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;
-        textContentItem.textRunBreakAllowed = !font.isMonospace;
+          for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
+            var data = xref.fetchIfRef(diffEncoding[j]);
+
+            if ((0, _util.isNum)(data)) {
+              index = data;
+            } else if ((0, _primitives.isName)(data)) {
+              differences[index++] = data.name;
+            } else {
+              throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);
+            }
+          }
+        }
+      } else if ((0, _primitives.isName)(encoding)) {
+        baseEncodingName = encoding.name;
       } else {
-        textContentItem.spaceWidth = 0;
-        textContentItem.fakeSpaceMin = Infinity;
-        textContentItem.fakeMultiSpaceMin = Infinity;
-        textContentItem.fakeMultiSpaceMax = 0;
-        textContentItem.textRunBreakAllowed = false;
+        throw new _util.FormatError("Encoding is not a Name nor a Dict");
       }
 
-      textContentItem.initialized = true;
-      return textContentItem;
+      if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && 
baseEncodingName !== "WinAnsiEncoding") {
+        baseEncodingName = null;
+      }
     }
 
-    function replaceWhitespace(str) {
-      var i = 0,
-          ii = str.length,
-          code;
+    if (baseEncodingName) {
+      properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();
+    } else {
+      var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);
+      var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);
+      encoding = _encodings.StandardEncoding;
 
-      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
-        i++;
+      if (properties.type === "TrueType" && !isNonsymbolicFont) {
+        encoding = _encodings.WinAnsiEncoding;
       }
 
-      return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
-    }
+      if (isSymbolicFont) {
+        encoding = _encodings.MacRomanEncoding;
 
-    function runBidiTransform(textChunk) {
-      var str = textChunk.str.join("");
-      var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);
-      return {
-        str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,
-        dir: bidiResult.dir,
-        width: textChunk.width,
-        height: textChunk.height,
-        transform: textChunk.transform,
-        fontName: textChunk.fontName
-      };
-    }
+        if (!properties.file) {
+          if (/Symbol/i.test(properties.name)) {
+            encoding = _encodings.SymbolSetEncoding;
+          } else if (/Dingbats|Wingdings/i.test(properties.name)) {
+            encoding = _encodings.ZapfDingbatsEncoding;
+          }
+        }
+      }
 
-    function handleSetFont(fontName, fontRef) {
-      return self.loadFont(fontName, fontRef, resources).then(function (translated) {
-        textState.font = translated.font;
-        textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
-      });
+      properties.defaultEncoding = encoding;
     }
 
-    function buildTextContentItem(chars) {
-      var font = textState.font;
-      var textChunk = ensureTextContentItem();
-      var width = 0;
-      var height = 0;
-      var glyphs = font.charsToGlyphs(chars);
+    properties.differences = differences;
+    properties.baseEncodingName = baseEncodingName;
+    properties.hasEncoding = !!baseEncodingName || differences.length > 0;
+    properties.dict = dict;
+    return toUnicodePromise.then(readToUnicode => {
+      properties.toUnicode = readToUnicode;
+      return this.buildToUnicode(properties);
+    }).then(builtToUnicode => {
+      properties.toUnicode = builtToUnicode;
 
-      for (var i = 0; i < glyphs.length; i++) {
-        var glyph = glyphs[i];
-        var glyphWidth = null;
+      if (cidToGidBytes) {
+        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);
+      }
 
-        if (font.vertical && glyph.vmetric) {
-          glyphWidth = glyph.vmetric[0];
-        } else {
-          glyphWidth = glyph.width;
-        }
+      return properties;
+    });
+  }
 
-        var glyphUnicode = glyph.unicode;
-        var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
+  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {
+    (0, _util.assert)(!properties.composite, "Must be a simple font.");
+    const toUnicode = [];
+    const encoding = properties.defaultEncoding.slice();
+    const baseEncodingName = properties.baseEncodingName;
+    const differences = properties.differences;
 
-        if (NormalizedUnicodes[glyphUnicode] !== undefined) {
-          glyphUnicode = NormalizedUnicodes[glyphUnicode];
-        }
+    for (const charcode in differences) {
+      const glyphName = differences[charcode];
 
-        glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
-        var charSpacing = textState.charSpacing;
+      if (glyphName === ".notdef") {
+        continue;
+      }
 
-        if (glyph.isSpace) {
-          var wordSpacing = textState.wordSpacing;
-          charSpacing += wordSpacing;
+      encoding[charcode] = glyphName;
+    }
 
-          if (wordSpacing > 0) {
-            addFakeSpaces(wordSpacing, textChunk.str);
-          }
-        }
+    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
 
-        var tx = 0;
-        var ty = 0;
+    for (const charcode in encoding) {
+      let glyphName = encoding[charcode];
 
-        if (!font.vertical) {
-          var w0 = glyphWidth * textState.fontMatrix[0];
-          tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;
-          width += tx;
-        } else {
-          var w1 = glyphWidth * textState.fontMatrix[0];
-          ty = w1 * textState.fontSize + charSpacing;
-          height += ty;
-        }
+      if (glyphName === "") {
+        continue;
+      } else if (glyphsUnicodeMap[glyphName] === undefined) {
+        let code = 0;
 
-        textState.translateTextMatrix(tx, ty);
-        textChunk.str.push(glyphUnicode);
-      }
+        switch (glyphName[0]) {
+          case "G":
+            if (glyphName.length === 3) {
+              code = parseInt(glyphName.substring(1), 16);
+            }
 
-      if (!font.vertical) {
-        textChunk.lastAdvanceWidth = width;
-        textChunk.width += width;
-      } else {
-        textChunk.lastAdvanceHeight = height;
-        textChunk.height += Math.abs(height);
-      }
+            break;
 
-      return textChunk;
-    }
+          case "g":
+            if (glyphName.length === 5) {
+              code = parseInt(glyphName.substring(1), 16);
+            }
 
-    function addFakeSpaces(width, strBuf) {
-      if (width < textContentItem.fakeSpaceMin) {
-        return;
-      }
+            break;
 
-      if (width < textContentItem.fakeMultiSpaceMin) {
-        strBuf.push(" ");
-        return;
-      }
+          case "C":
+          case "c":
+            if (glyphName.length >= 3 && glyphName.length <= 4) {
+              const codeStr = glyphName.substring(1);
 
-      var fakeSpaces = Math.round(width / textContentItem.spaceWidth);
+              if (forceGlyphs) {
+                code = parseInt(codeStr, 16);
+                break;
+              }
 
-      while (fakeSpaces-- > 0) {
-        strBuf.push(" ");
-      }
-    }
+              code = +codeStr;
 
-    function flushTextContentItem() {
-      if (!textContentItem.initialized) {
-        return;
-      }
+              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
+                return this._buildSimpleFontToUnicode(properties, true);
+              }
+            }
 
-      if (!textContentItem.vertical) {
-        textContentItem.width *= textContentItem.textAdvanceScale;
-      } else {
-        textContentItem.height *= textContentItem.textAdvanceScale;
-      }
-
-      textContent.items.push(runBidiTransform(textContentItem));
-      textContentItem.initialized = false;
-      textContentItem.str.length = 0;
-    }
+            break;
 
-    function enqueueChunk() {
-      const length = textContent.items.length;
+          default:
+            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
 
-      if (length > 0) {
-        sink.enqueue(textContent, length);
-        textContent.items = [];
-        textContent.styles = Object.create(null);
-      }
-    }
+            if (unicode !== -1) {
+              code = unicode;
+            }
 
-    var timeSlotManager = new TimeSlotManager();
-    return new Promise(function promiseBody(resolve, reject) {
-      const next = function (promise) {
-        enqueueChunk();
-        Promise.all([promise, sink.ready]).then(function () {
-          try {
-            promiseBody(resolve, reject);
-          } catch (ex) {
-            reject(ex);
-          }
-        }, reject);
-      };
+        }
 
-      task.ensureNotTerminated();
-      timeSlotManager.reset();
-      var stop,
-          operation = {},
-          args = [];
+        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {
+          if (baseEncodingName && code === +charcode) {
+            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
 
-      while (!(stop = timeSlotManager.check())) {
-        args.length = 0;
-        operation.args = args;
+            if (baseEncoding && (glyphName = baseEncoding[charcode])) {
+              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+              continue;
+            }
+          }
 
-        if (!preprocessor.read(operation)) {
-          break;
+          toUnicode[charcode] = String.fromCodePoint(code);
         }
 
-        textState = stateManager.state;
-        var fn = operation.fn;
-        args = operation.args;
-        var advance, diff;
+        continue;
+      }
 
-        switch (fn | 0) {
-          case _util.OPS.setFont:
-            var fontNameArg = args[0].name,
-                fontSizeArg = args[1];
+      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+    }
 
-            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
-              break;
-            }
+    return new _fonts.ToUnicodeMap(toUnicode);
+  }
 
-            flushTextContentItem();
-            textState.fontName = fontNameArg;
-            textState.fontSize = fontSizeArg;
-            next(handleSetFont(fontNameArg, null));
-            return;
+  buildToUnicode(properties) {
+    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
 
-          case _util.OPS.setTextRise:
-            flushTextContentItem();
-            textState.textRise = args[0];
-            break;
+    if (properties.hasIncludedToUnicodeMap) {
+      if (!properties.composite && properties.hasEncoding) {
+        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
+      }
 
-          case _util.OPS.setHScale:
-            flushTextContentItem();
-            textState.textHScale = args[0] / 100;
-            break;
+      return Promise.resolve(properties.toUnicode);
+    }
 
-          case _util.OPS.setLeading:
-            flushTextContentItem();
-            textState.leading = args[0];
-            break;
+    if (!properties.composite) {
+      return Promise.resolve(this._buildSimpleFontToUnicode(properties));
+    }
 
-          case _util.OPS.moveText:
-            var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 
0;
-            advance = args[0] - args[1];
+    if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof 
_cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering 
=== "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" 
|| properties.cidSystemInfo.ordering === "Korea1"))) {
+      const registry = properties.cidSystemInfo.registry;
+      const ordering = properties.cidSystemInfo.ordering;
 
-            if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance 
<= textContentItem.fakeMultiSpaceMax) {
-              textState.translateTextLineMatrix(args[0], args[1]);
-              textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;
-              textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;
-              diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - 
textContentItem.lastAdvanceHeight);
-              addFakeSpaces(diff, textContentItem.str);
-              break;
-            }
+      const ucs2CMapName = _primitives.Name.get(registry + "-" + ordering + "-UCS2");
 
-            flushTextContentItem();
-            textState.translateTextLineMatrix(args[0], args[1]);
-            textState.textMatrix = textState.textLineMatrix.slice();
-            break;
+      return _cmap.CMapFactory.create({
+        encoding: ucs2CMapName,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (ucs2CMap) {
+        const cMap = properties.cMap;
+        const toUnicode = [];
+        cMap.forEach(function (charcode, cid) {
+          if (cid > 0xffff) {
+            throw new _util.FormatError("Max size of CID is 65,535");
+          }
 
-          case _util.OPS.setLeadingMoveText:
-            flushTextContentItem();
-            textState.leading = -args[1];
-            textState.translateTextLineMatrix(args[0], args[1]);
-            textState.textMatrix = textState.textLineMatrix.slice();
-            break;
+          const ucs2 = ucs2CMap.lookup(cid);
 
-          case _util.OPS.nextLine:
-            flushTextContentItem();
-            textState.carriageReturn();
-            break;
+          if (ucs2) {
+            toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
+          }
+        });
+        return new _fonts.ToUnicodeMap(toUnicode);
+      });
+    }
 
-          case _util.OPS.setTextMatrix:
-            advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], 
args[5]);
+    return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));
+  }
 
-            if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && 
advance.value <= textContentItem.fakeMultiSpaceMax) {
-              textState.translateTextLineMatrix(advance.width, advance.height);
-              textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;
-              textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;
-              diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - 
textContentItem.lastAdvanceHeight);
-              addFakeSpaces(diff, textContentItem.str);
-              break;
-            }
+  readToUnicode(toUnicode) {
+    var cmapObj = toUnicode;
 
-            flushTextContentItem();
-            textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
-            textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
-            break;
+    if ((0, _primitives.isName)(cmapObj)) {
+      return _cmap.CMapFactory.create({
+        encoding: cmapObj,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (cmap) {
+        if (cmap instanceof _cmap.IdentityCMap) {
+          return new _fonts.IdentityToUnicodeMap(0, 0xffff);
+        }
 
-          case _util.OPS.setCharSpacing:
-            textState.charSpacing = args[0];
-            break;
+        return new _fonts.ToUnicodeMap(cmap.getMap());
+      });
+    } else if ((0, _primitives.isStream)(cmapObj)) {
+      return _cmap.CMapFactory.create({
+        encoding: cmapObj,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (cmap) {
+        if (cmap instanceof _cmap.IdentityCMap) {
+          return new _fonts.IdentityToUnicodeMap(0, 0xffff);
+        }
 
-          case _util.OPS.setWordSpacing:
-            textState.wordSpacing = args[0];
-            break;
+        var map = new Array(cmap.length);
+        cmap.forEach(function (charCode, token) {
+          var str = [];
 
-          case _util.OPS.beginText:
-            flushTextContentItem();
-            textState.textMatrix = _util.IDENTITY_MATRIX.slice();
-            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
-            break;
+          for (var k = 0; k < token.length; k += 2) {
+            var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
 
-          case _util.OPS.showSpacedText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
+            if ((w1 & 0xf800) !== 0xd800) {
+              str.push(w1);
               continue;
             }
 
-            var items = args[0];
-            var offset;
-
-            for (var j = 0, jj = items.length; j < jj; j++) {
-              if (typeof items[j] === "string") {
-                buildTextContentItem(items[j]);
-              } else if ((0, _util.isNum)(items[j])) {
-                ensureTextContentItem();
-                advance = items[j] * textState.fontSize / 1000;
-                var breakTextRun = false;
+            k += 2;
+            var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
+            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
+          }
 
-                if (textState.font.vertical) {
-                  offset = advance;
-                  textState.translateTextMatrix(0, offset);
-                  breakTextRun = textContentItem.textRunBreakAllowed && advance > 
textContentItem.fakeMultiSpaceMax;
+          map[charCode] = String.fromCodePoint.apply(String, str);
+        });
+        return new _fonts.ToUnicodeMap(map);
+      }, reason => {
+        if (reason instanceof _util.AbortException) {
+          return null;
+        }
 
-                  if (!breakTextRun) {
-                    textContentItem.height += offset;
-                  }
-                } else {
-                  advance = -advance;
-                  offset = advance * textState.textHScale;
-                  textState.translateTextMatrix(offset, 0);
-                  breakTextRun = textContentItem.textRunBreakAllowed && advance > 
textContentItem.fakeMultiSpaceMax;
+        if (this.options.ignoreErrors) {
+          this.handler.send("UnsupportedFeature", {
+            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode
+          });
+          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`);
+          return null;
+        }
 
-                  if (!breakTextRun) {
-                    textContentItem.width += offset;
-                  }
-                }
+        throw reason;
+      });
+    }
 
-                if (breakTextRun) {
-                  flushTextContentItem();
-                } else if (advance > 0) {
-                  addFakeSpaces(advance, textContentItem.str);
-                }
-              }
-            }
+    return Promise.resolve(null);
+  }
 
-            break;
+  readCidToGidMap(glyphsData, toUnicode) {
+    var result = [];
 
-          case _util.OPS.showText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
+    for (var j = 0, jj = glyphsData.length; j < jj; j++) {
+      var glyphID = glyphsData[j++] << 8 | glyphsData[j];
+      const code = j >> 1;
 
-            buildTextContentItem(args[0]);
-            break;
+      if (glyphID === 0 && !toUnicode.has(code)) {
+        continue;
+      }
 
-          case _util.OPS.nextLineShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
+      result[code] = glyphID;
+    }
 
-            flushTextContentItem();
-            textState.carriageReturn();
-            buildTextContentItem(args[0]);
-            break;
+    return result;
+  }
 
-          case _util.OPS.nextLineSetSpacingShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
+  extractWidths(dict, descriptor, properties) {
+    var xref = this.xref;
+    var glyphsWidths = [];
+    var defaultWidth = 0;
+    var glyphsVMetrics = [];
+    var defaultVMetrics;
+    var i, ii, j, jj, start, code, widths;
 
-            flushTextContentItem();
-            textState.wordSpacing = args[0];
-            textState.charSpacing = args[1];
-            textState.carriageReturn();
-            buildTextContentItem(args[2]);
-            break;
+    if (properties.composite) {
+      defaultWidth = dict.has("DW") ? dict.get("DW") : 1000;
+      widths = dict.get("W");
 
-          case _util.OPS.paintXObject:
-            flushTextContentItem();
+      if (widths) {
+        for (i = 0, ii = widths.length; i < ii; i++) {
+          start = xref.fetchIfRef(widths[i++]);
+          code = xref.fetchIfRef(widths[i]);
 
-            if (!xobjs) {
-              xobjs = resources.get("XObject") || _primitives.Dict.empty;
+          if (Array.isArray(code)) {
+            for (j = 0, jj = code.length; j < jj; j++) {
+              glyphsWidths[start++] = xref.fetchIfRef(code[j]);
             }
+          } else {
+            var width = xref.fetchIfRef(widths[++i]);
 
-            var name = args[0].name;
-
-            if (name && emptyXObjectCache.getByName(name)) {
-              break;
+            for (j = start; j <= code; j++) {
+              glyphsWidths[j] = width;
             }
+          }
+        }
+      }
 
-            next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!name) {
-                throw new _util.FormatError("XObject must be referred to by name.");
-              }
-
-              let xobj = xobjs.getRaw(name);
-
-              if (xobj instanceof _primitives.Ref) {
-                if (emptyXObjectCache.getByRef(xobj)) {
-                  resolveXObject();
-                  return;
-                }
+      if (properties.vertical) {
+        var vmetrics = dict.getArray("DW2") || [880, -1000];
+        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
+        vmetrics = dict.get("W2");
 
-                xobj = xref.fetch(xobj);
-              }
+        if (vmetrics) {
+          for (i = 0, ii = vmetrics.length; i < ii; i++) {
+            start = xref.fetchIfRef(vmetrics[i++]);
+            code = xref.fetchIfRef(vmetrics[i]);
 
-              if (!(0, _primitives.isStream)(xobj)) {
-                throw new _util.FormatError("XObject should be a stream");
+            if (Array.isArray(code)) {
+              for (j = 0, jj = code.length; j < jj; j++) {
+                glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), 
xref.fetchIfRef(code[j])];
               }
+            } else {
+              var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), 
xref.fetchIfRef(vmetrics[++i])];
 
-              const type = xobj.dict.get("Subtype");
-
-              if (!(0, _primitives.isName)(type)) {
-                throw new _util.FormatError("XObject should have a Name subtype");
+              for (j = start; j <= code; j++) {
+                glyphsVMetrics[j] = vmetric;
               }
+            }
+          }
+        }
+      }
+    } else {
+      var firstChar = properties.firstChar;
+      widths = dict.get("Widths");
 
-              if (type.name !== "Form") {
-                emptyXObjectCache.set(name, xobj.dict.objId, true);
-                resolveXObject();
-                return;
-              }
+      if (widths) {
+        j = firstChar;
 
-              const currentState = stateManager.state.clone();
-              const xObjStateManager = new StateManager(currentState);
-              const matrix = xobj.dict.getArray("Matrix");
+        for (i = 0, ii = widths.length; i < ii; i++) {
+          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
+        }
 
-              if (Array.isArray(matrix) && matrix.length === 6) {
-                xObjStateManager.transform(matrix);
-              }
+        defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0;
+      } else {
+        var baseFontName = dict.get("BaseFont");
 
-              enqueueChunk();
-              const sinkWrapper = {
-                enqueueInvoked: false,
+        if ((0, _primitives.isName)(baseFontName)) {
+          var metrics = this.getBaseFontMetrics(baseFontName.name);
+          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
+          defaultWidth = metrics.defaultWidth;
+        }
+      }
+    }
 
-                enqueue(chunk, size) {
-                  this.enqueueInvoked = true;
-                  sink.enqueue(chunk, size);
-                },
+    var isMonospace = true;
+    var firstWidth = defaultWidth;
 
-                get desiredSize() {
-                  return sink.desiredSize;
-                },
+    for (var glyph in glyphsWidths) {
+      var glyphWidth = glyphsWidths[glyph];
 
-                get ready() {
-                  return sink.ready;
-                }
+      if (!glyphWidth) {
+        continue;
+      }
 
-              };
-              self.getTextContent({
-                stream: xobj,
-                task,
-                resources: xobj.dict.get("Resources") || resources,
-                stateManager: xObjStateManager,
-                normalizeWhitespace,
-                combineTextItems,
-                sink: sinkWrapper,
-                seenStyles
-              }).then(function () {
-                if (!sinkWrapper.enqueueInvoked) {
-                  emptyXObjectCache.set(name, xobj.dict.objId, true);
-                }
+      if (!firstWidth) {
+        firstWidth = glyphWidth;
+        continue;
+      }
 
-                resolveXObject();
-              }, rejectXObject);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
+      if (firstWidth !== glyphWidth) {
+        isMonospace = false;
+        break;
+      }
+    }
 
-              if (self.options.ignoreErrors) {
-                (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`);
-                return;
-              }
+    if (isMonospace) {
+      properties.flags |= _fonts.FontFlags.FixedPitch;
+    }
 
-              throw reason;
-            }));
-            return;
+    properties.defaultWidth = defaultWidth;
+    properties.widths = glyphsWidths;
+    properties.defaultVMetrics = defaultVMetrics;
+    properties.vmetrics = glyphsVMetrics;
+  }
 
-          case _util.OPS.setGState:
-            name = args[0].name;
+  isSerifFont(baseFontName) {
+    var fontNameWoStyle = baseFontName.split("-")[0];
+    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== 
-1;
+  }
 
-            if (name && emptyGStateCache.getByName(name)) {
-              break;
-            }
+  getBaseFontMetrics(name) {
+    var defaultWidth = 0;
+    var widths = [];
+    var monospace = false;
+    var stdFontMap = (0, _standard_fonts.getStdFontMap)();
+    var lookupName = stdFontMap[name] || name;
+    var Metrics = (0, _metrics.getMetrics)();
 
-            next(new Promise(function (resolveGState, rejectGState) {
-              if (!name) {
-                throw new _util.FormatError("GState must be referred to by name.");
-              }
+    if (!(lookupName in Metrics)) {
+      if (this.isSerifFont(name)) {
+        lookupName = "Times-Roman";
+      } else {
+        lookupName = "Helvetica";
+      }
+    }
 
-              const extGState = resources.get("ExtGState");
+    var glyphWidths = Metrics[lookupName];
 
-              if (!(extGState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("ExtGState should be a dictionary.");
-              }
+    if ((0, _util.isNum)(glyphWidths)) {
+      defaultWidth = glyphWidths;
+      monospace = true;
+    } else {
+      widths = glyphWidths();
+    }
 
-              const gState = extGState.get(name);
+    return {
+      defaultWidth,
+      monospace,
+      widths
+    };
+  }
 
-              if (!(gState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("GState should be a dictionary.");
-              }
-
-              const gStateFont = gState.get("Font");
+  buildCharCodeToWidth(widthsByGlyphName, properties) {
+    var widths = Object.create(null);
+    var differences = properties.differences;
+    var encoding = properties.defaultEncoding;
 
-              if (!gStateFont) {
-                emptyGStateCache.set(name, gState.objId, true);
-                resolveGState();
-                return;
-              }
+    for (var charCode = 0; charCode < 256; charCode++) {
+      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
+        widths[charCode] = widthsByGlyphName[differences[charCode]];
+        continue;
+      }
 
-              flushTextContentItem();
-              textState.fontName = null;
-              textState.fontSize = gStateFont[1];
-              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
+      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
+        widths[charCode] = widthsByGlyphName[encoding[charCode]];
+        continue;
+      }
+    }
 
-              if (self.options.ignoreErrors) {
-                (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`);
-                return;
-              }
+    return widths;
+  }
 
-              throw reason;
-            }));
-            return;
-        }
+  preEvaluateFont(dict) {
+    var baseDict = dict;
+    var type = dict.get("Subtype");
 
-        if (textContent.items.length >= sink.desiredSize) {
-          stop = true;
-          break;
-        }
-      }
+    if (!(0, _primitives.isName)(type)) {
+      throw new _util.FormatError("invalid font Subtype");
+    }
 
-      if (stop) {
-        next(deferred);
-        return;
-      }
+    var composite = false;
+    var uint8array;
 
-      flushTextContentItem();
-      enqueueChunk();
-      resolve();
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
+    if (type.name === "Type0") {
+      var df = dict.get("DescendantFonts");
 
-      if (this.options.ignoreErrors) {
-        (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
-        flushTextContentItem();
-        enqueueChunk();
-        return;
+      if (!df) {
+        throw new _util.FormatError("Descendant fonts are not specified");
       }
 
-      throw reason;
-    });
-  }
-
-  extractDataStructures(dict, baseDict, properties) {
-    const xref = this.xref;
-    let cidToGidBytes;
-    var toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
-    var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);
-
-    if (properties.composite) {
-      var cidSystemInfo = dict.get("CIDSystemInfo");
+      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
 
-      if ((0, _primitives.isDict)(cidSystemInfo)) {
-        properties.cidSystemInfo = {
-          registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
-          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
-          supplement: cidSystemInfo.get("Supplement")
-        };
+      if (!(dict instanceof _primitives.Dict)) {
+        throw new _util.FormatError("Descendant font is not a dictionary.");
       }
 
-      var cidToGidMap = dict.get("CIDToGIDMap");
+      type = dict.get("Subtype");
 
-      if ((0, _primitives.isStream)(cidToGidMap)) {
-        cidToGidBytes = cidToGidMap.getBytes();
+      if (!(0, _primitives.isName)(type)) {
+        throw new _util.FormatError("invalid font Subtype");
       }
-    }
 
-    var differences = [];
-    var baseEncodingName = null;
-    var encoding;
+      composite = true;
+    }
 
-    if (dict.has("Encoding")) {
-      encoding = dict.get("Encoding");
+    var descriptor = dict.get("FontDescriptor");
 
-      if ((0, _primitives.isDict)(encoding)) {
-        baseEncodingName = encoding.get("BaseEncoding");
-        baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
+    if (descriptor) {
+      var hash = new _murmurhash.MurmurHash3_64();
+      var encoding = baseDict.getRaw("Encoding");
 
-        if (encoding.has("Differences")) {
-          var diffEncoding = encoding.get("Differences");
-          var index = 0;
+      if ((0, _primitives.isName)(encoding)) {
+        hash.update(encoding.name);
+      } else if ((0, _primitives.isRef)(encoding)) {
+        hash.update(encoding.toString());
+      } else if ((0, _primitives.isDict)(encoding)) {
+        for (const entry of encoding.getRawValues()) {
+          if ((0, _primitives.isName)(entry)) {
+            hash.update(entry.name);
+          } else if ((0, _primitives.isRef)(entry)) {
+            hash.update(entry.toString());
+          } else if (Array.isArray(entry)) {
+            var diffLength = entry.length,
+                diffBuf = new Array(diffLength);
 
-          for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
-            var data = xref.fetchIfRef(diffEncoding[j]);
+            for (var j = 0; j < diffLength; j++) {
+              var diffEntry = entry[j];
 
-            if ((0, _util.isNum)(data)) {
-              index = data;
-            } else if ((0, _primitives.isName)(data)) {
-              differences[index++] = data.name;
-            } else {
-              throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);
+              if ((0, _primitives.isName)(diffEntry)) {
+                diffBuf[j] = diffEntry.name;
+              } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
+                diffBuf[j] = diffEntry.toString();
+              }
             }
+
+            hash.update(diffBuf.join());
           }
         }
-      } else if ((0, _primitives.isName)(encoding)) {
-        baseEncodingName = encoding.name;
-      } else {
-        throw new _util.FormatError("Encoding is not a Name nor a Dict");
       }
 
-      if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && 
baseEncodingName !== "WinAnsiEncoding") {
-        baseEncodingName = null;
+      const firstChar = dict.get("FirstChar") || 0;
+      const lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff);
+      hash.update(`${firstChar}-${lastChar}`);
+      var toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
+
+      if ((0, _primitives.isStream)(toUnicode)) {
+        var stream = toUnicode.str || toUnicode;
+        uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new 
Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
+        hash.update(uint8array);
+      } else if ((0, _primitives.isName)(toUnicode)) {
+        hash.update(toUnicode.name);
       }
-    }
 
-    if (baseEncodingName) {
-      properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();
-    } else {
-      var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);
-      var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);
-      encoding = _encodings.StandardEncoding;
+      var widths = dict.get("Widths") || baseDict.get("Widths");
 
-      if (properties.type === "TrueType" && !isNonsymbolicFont) {
-        encoding = _encodings.WinAnsiEncoding;
+      if (widths) {
+        uint8array = new Uint8Array(new Uint32Array(widths).buffer);
+        hash.update(uint8array);
       }
+    }
 
-      if (isSymbolicFont) {
-        encoding = _encodings.MacRomanEncoding;
+    return {
+      descriptor,
+      dict,
+      baseDict,
+      composite,
+      type: type.name,
+      hash: hash ? hash.hexdigest() : ""
+    };
+  }
 
-        if (!properties.file) {
-          if (/Symbol/i.test(properties.name)) {
-            encoding = _encodings.SymbolSetEncoding;
-          } else if (/Dingbats|Wingdings/i.test(properties.name)) {
-            encoding = _encodings.ZapfDingbatsEncoding;
-          }
+  async translateFont(preEvaluatedFont) {
+    var baseDict = preEvaluatedFont.baseDict;
+    var dict = preEvaluatedFont.dict;
+    var composite = preEvaluatedFont.composite;
+    var descriptor = preEvaluatedFont.descriptor;
+    var type = preEvaluatedFont.type;
+    var maxCharIndex = composite ? 0xffff : 0xff;
+    var properties;
+    const firstChar = dict.get("FirstChar") || 0;
+    const lastChar = dict.get("LastChar") || maxCharIndex;
+
+    if (!descriptor) {
+      if (type === "Type3") {
+        descriptor = new _primitives.Dict(null);
+        descriptor.set("FontName", _primitives.Name.get(type));
+        descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]);
+      } else {
+        var baseFontName = dict.get("BaseFont");
+
+        if (!(0, _primitives.isName)(baseFontName)) {
+          throw new _util.FormatError("Base font is not specified");
         }
-      }
 
-      properties.defaultEncoding = encoding;
-    }
+        baseFontName = baseFontName.name.replace(/[,_]/g, "-");
+        var metrics = this.getBaseFontMetrics(baseFontName);
+        var fontNameWoStyle = baseFontName.split("-")[0];
+        var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? 
_fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? 
_fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);
+        properties = {
+          type,
+          name: baseFontName,
+          widths: metrics.widths,
+          defaultWidth: metrics.defaultWidth,
+          flags,
+          firstChar,
+          lastChar
+        };
+        const widths = dict.get("Widths");
+        return this.extractDataStructures(dict, dict, properties).then(newProperties => {
+          if (widths) {
+            const glyphWidths = [];
+            let j = firstChar;
 
-    properties.differences = differences;
-    properties.baseEncodingName = baseEncodingName;
-    properties.hasEncoding = !!baseEncodingName || differences.length > 0;
-    properties.dict = dict;
-    return toUnicodePromise.then(readToUnicode => {
-      properties.toUnicode = readToUnicode;
-      return this.buildToUnicode(properties);
-    }).then(builtToUnicode => {
-      properties.toUnicode = builtToUnicode;
+            for (let i = 0, ii = widths.length; i < ii; i++) {
+              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);
+            }
 
-      if (cidToGidBytes) {
-        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);
+            newProperties.widths = glyphWidths;
+          } else {
+            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
+          }
+
+          return new _fonts.Font(baseFontName, null, newProperties);
+        });
       }
+    }
 
-      return properties;
-    });
-  }
+    var fontName = descriptor.get("FontName");
+    var baseFont = dict.get("BaseFont");
 
-  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {
-    (0, _util.assert)(!properties.composite, "Must be a simple font.");
-    const toUnicode = [];
-    const encoding = properties.defaultEncoding.slice();
-    const baseEncodingName = properties.baseEncodingName;
-    const differences = properties.differences;
+    if ((0, _util.isString)(fontName)) {
+      fontName = _primitives.Name.get(fontName);
+    }
 
-    for (const charcode in differences) {
-      const glyphName = differences[charcode];
+    if ((0, _util.isString)(baseFont)) {
+      baseFont = _primitives.Name.get(baseFont);
+    }
 
-      if (glyphName === ".notdef") {
-        continue;
+    if (type !== "Type3") {
+      var fontNameStr = fontName && fontName.name;
+      var baseFontStr = baseFont && baseFont.name;
+
+      if (fontNameStr !== baseFontStr) {
+        (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as 
the Font's BaseFont "${baseFontStr}".`);
+
+        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {
+          fontName = baseFont;
+        }
       }
+    }
 
-      encoding[charcode] = glyphName;
+    fontName = fontName || baseFont;
+
+    if (!(0, _primitives.isName)(fontName)) {
+      throw new _util.FormatError("invalid font name");
     }
 
-    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+    var fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3");
 
-    for (const charcode in encoding) {
-      let glyphName = encoding[charcode];
+    if (fontFile) {
+      if (fontFile.dict) {
+        var subtype = fontFile.dict.get("Subtype");
 
-      if (glyphName === "") {
-        continue;
-      } else if (glyphsUnicodeMap[glyphName] === undefined) {
-        let code = 0;
+        if (subtype) {
+          subtype = subtype.name;
+        }
 
-        switch (glyphName[0]) {
-          case "G":
-            if (glyphName.length === 3) {
-              code = parseInt(glyphName.substring(1), 16);
-            }
+        var length1 = fontFile.dict.get("Length1");
+        var length2 = fontFile.dict.get("Length2");
+        var length3 = fontFile.dict.get("Length3");
+      }
+    }
 
-            break;
+    properties = {
+      type,
+      name: fontName.name,
+      subtype,
+      file: fontFile,
+      length1,
+      length2,
+      length3,
+      loadedName: baseDict.loadedName,
+      composite,
+      fixedPitch: false,
+      fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX,
+      firstChar: firstChar || 0,
+      lastChar: lastChar || maxCharIndex,
+      bbox: descriptor.getArray("FontBBox"),
+      ascent: descriptor.get("Ascent"),
+      descent: descriptor.get("Descent"),
+      xHeight: descriptor.get("XHeight"),
+      capHeight: descriptor.get("CapHeight"),
+      flags: descriptor.get("Flags"),
+      italicAngle: descriptor.get("ItalicAngle"),
+      isType3Font: false
+    };
 
-          case "g":
-            if (glyphName.length === 5) {
-              code = parseInt(glyphName.substring(1), 16);
-            }
+    if (composite) {
+      const cidEncoding = baseDict.get("Encoding");
 
-            break;
+      if ((0, _primitives.isName)(cidEncoding)) {
+        properties.cidEncoding = cidEncoding.name;
+      }
 
-          case "C":
-          case "c":
-            if (glyphName.length >= 3 && glyphName.length <= 4) {
-              const codeStr = glyphName.substring(1);
+      const cMap = await _cmap.CMapFactory.create({
+        encoding: cidEncoding,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      });
+      properties.cMap = cMap;
+      properties.vertical = properties.cMap.vertical;
+    }
 
-              if (forceGlyphs) {
-                code = parseInt(codeStr, 16);
-                break;
-              }
+    return this.extractDataStructures(dict, baseDict, properties).then(newProperties => {
+      this.extractWidths(dict, descriptor, newProperties);
 
-              code = +codeStr;
+      if (type === "Type3") {
+        newProperties.isType3Font = true;
+      }
 
-              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
-                return this._buildSimpleFontToUnicode(properties, true);
-              }
-            }
+      return new _fonts.Font(fontName.name, fontFile, newProperties);
+    });
+  }
 
-            break;
+  static buildFontPaths(font, glyphs, handler) {
+    function buildPath(fontChar) {
+      if (font.renderer.hasBuiltPath(fontChar)) {
+        return;
+      }
 
-          default:
-            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
+      handler.send("commonobj", [`${font.loadedName}_path_${fontChar}`, "FontPath", 
font.renderer.getPathJs(fontChar)]);
+    }
 
-            if (unicode !== -1) {
-              code = unicode;
-            }
+    for (const glyph of glyphs) {
+      buildPath(glyph.fontChar);
+      const accent = glyph.accent;
 
-        }
+      if (accent && accent.fontChar) {
+        buildPath(accent.fontChar);
+      }
+    }
+  }
 
-        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {
-          if (baseEncodingName && code === +charcode) {
-            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
+  static get fallbackFontDict() {
+    const dict = new _primitives.Dict();
+    dict.set("BaseFont", _primitives.Name.get("PDFJS-FallbackFont"));
+    dict.set("Type", _primitives.Name.get("FallbackType"));
+    dict.set("Subtype", _primitives.Name.get("FallbackType"));
+    dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding"));
+    return (0, _util.shadow)(this, "fallbackFontDict", dict);
+  }
 
-            if (baseEncoding && (glyphName = baseEncoding[charcode])) {
-              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
-              continue;
-            }
-          }
+}
 
-          toUnicode[charcode] = String.fromCodePoint(code);
-        }
+exports.PartialEvaluator = PartialEvaluator;
 
-        continue;
-      }
+class TranslatedFont {
+  constructor({
+    loadedName,
+    font,
+    dict,
+    extraProperties = false
+  }) {
+    this.loadedName = loadedName;
+    this.font = font;
+    this.dict = dict;
+    this._extraProperties = extraProperties;
+    this.type3Loaded = null;
+    this.type3Dependencies = font.isType3Font ? new Set() : null;
+    this.sent = false;
+  }
 
-      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+  send(handler) {
+    if (this.sent) {
+      return;
     }
 
-    return new _fonts.ToUnicodeMap(toUnicode);
+    this.sent = true;
+    handler.send("commonobj", [this.loadedName, "Font", this.font.exportData(this._extraProperties)]);
   }
 
-  buildToUnicode(properties) {
-    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
+  fallback(handler) {
+    if (!this.font.data) {
+      return;
+    }
 
-    if (properties.hasIncludedToUnicodeMap) {
-      if (!properties.composite && properties.hasEncoding) {
-        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
-      }
+    this.font.disableFontFace = true;
+    const glyphs = this.font.glyphCacheValues;
+    PartialEvaluator.buildFontPaths(this.font, glyphs, handler);
+  }
 
-      return Promise.resolve(properties.toUnicode);
+  loadType3Data(evaluator, resources, task) {
+    if (this.type3Loaded) {
+      return this.type3Loaded;
     }
 
-    if (!properties.composite) {
-      return Promise.resolve(this._buildSimpleFontToUnicode(properties));
+    if (!this.font.isType3Font) {
+      throw new Error("Must be a Type3 font.");
     }
 
-    if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof 
_cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering 
=== "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" 
|| properties.cidSystemInfo.ordering === "Korea1"))) {
-      const registry = properties.cidSystemInfo.registry;
-      const ordering = properties.cidSystemInfo.ordering;
-
-      const ucs2CMapName = _primitives.Name.get(registry + "-" + ordering + "-UCS2");
+    var type3Options = Object.create(evaluator.options);
+    type3Options.ignoreErrors = false;
+    var type3Evaluator = evaluator.clone(type3Options);
+    type3Evaluator.parsingType3Font = true;
+    const translatedFont = this.font,
+          type3Dependencies = this.type3Dependencies;
+    var loadCharProcsPromise = Promise.resolve();
+    var charProcs = this.dict.get("CharProcs");
+    var fontResources = this.dict.get("Resources") || resources;
+    var charProcOperatorList = Object.create(null);
 
-      return _cmap.CMapFactory.create({
-        encoding: ucs2CMapName,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (ucs2CMap) {
-        const cMap = properties.cMap;
-        const toUnicode = [];
-        cMap.forEach(function (charcode, cid) {
-          if (cid > 0xffff) {
-            throw new _util.FormatError("Max size of CID is 65,535");
+    for (const key of charProcs.getKeys()) {
+      loadCharProcsPromise = loadCharProcsPromise.then(() => {
+        var glyphStream = charProcs.get(key);
+        var operatorList = new _operator_list.OperatorList();
+        return type3Evaluator.getOperatorList({
+          stream: glyphStream,
+          task,
+          resources: fontResources,
+          operatorList
+        }).then(() => {
+          if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) {
+            this._removeType3ColorOperators(operatorList);
           }
 
-          const ucs2 = ucs2CMap.lookup(cid);
+          charProcOperatorList[key] = operatorList.getIR();
 
-          if (ucs2) {
-            toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
+          for (const dependency of operatorList.dependencies) {
+            type3Dependencies.add(dependency);
           }
+        }).catch(function (reason) {
+          (0, _util.warn)(`Type3 font resource "${key}" is not available.`);
+          const dummyOperatorList = new _operator_list.OperatorList();
+          charProcOperatorList[key] = dummyOperatorList.getIR();
         });
-        return new _fonts.ToUnicodeMap(toUnicode);
       });
     }
 
-    return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));
-  }
-
-  readToUnicode(toUnicode) {
-    var cmapObj = toUnicode;
-
-    if ((0, _primitives.isName)(cmapObj)) {
-      return _cmap.CMapFactory.create({
-        encoding: cmapObj,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (cmap) {
-        if (cmap instanceof _cmap.IdentityCMap) {
-          return new _fonts.IdentityToUnicodeMap(0, 0xffff);
-        }
-
-        return new _fonts.ToUnicodeMap(cmap.getMap());
-      });
-    } else if ((0, _primitives.isStream)(cmapObj)) {
-      return _cmap.CMapFactory.create({
-        encoding: cmapObj,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (cmap) {
-        if (cmap instanceof _cmap.IdentityCMap) {
-          return new _fonts.IdentityToUnicodeMap(0, 0xffff);
-        }
-
-        var map = new Array(cmap.length);
-        cmap.forEach(function (charCode, token) {
-          var str = [];
-
-          for (var k = 0; k < token.length; k += 2) {
-            var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
-
-            if ((w1 & 0xf800) !== 0xd800) {
-              str.push(w1);
-              continue;
-            }
-
-            k += 2;
-            var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
-            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
-          }
-
-          map[charCode] = String.fromCodePoint.apply(String, str);
-        });
-        return new _fonts.ToUnicodeMap(map);
-      }, reason => {
-        if (reason instanceof _util.AbortException) {
-          return null;
-        }
-
-        if (this.options.ignoreErrors) {
-          this.handler.send("UnsupportedFeature", {
-            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode
-          });
-          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`);
-          return null;
-        }
-
-        throw reason;
-      });
-    }
-
-    return Promise.resolve(null);
-  }
-
-  readCidToGidMap(glyphsData, toUnicode) {
-    var result = [];
-
-    for (var j = 0, jj = glyphsData.length; j < jj; j++) {
-      var glyphID = glyphsData[j++] << 8 | glyphsData[j];
-      const code = j >> 1;
-
-      if (glyphID === 0 && !toUnicode.has(code)) {
-        continue;
-      }
-
-      result[code] = glyphID;
-    }
-
-    return result;
+    this.type3Loaded = loadCharProcsPromise.then(function () {
+      translatedFont.charProcOperatorList = charProcOperatorList;
+    });
+    return this.type3Loaded;
   }
 
-  extractWidths(dict, descriptor, properties) {
-    var xref = this.xref;
-    var glyphsWidths = [];
-    var defaultWidth = 0;
-    var glyphsVMetrics = [];
-    var defaultVMetrics;
-    var i, ii, j, jj, start, code, widths;
-
-    if (properties.composite) {
-      defaultWidth = dict.has("DW") ? dict.get("DW") : 1000;
-      widths = dict.get("W");
-
-      if (widths) {
-        for (i = 0, ii = widths.length; i < ii; i++) {
-          start = xref.fetchIfRef(widths[i++]);
-          code = xref.fetchIfRef(widths[i]);
-
-          if (Array.isArray(code)) {
-            for (j = 0, jj = code.length; j < jj; j++) {
-              glyphsWidths[start++] = xref.fetchIfRef(code[j]);
-            }
-          } else {
-            var width = xref.fetchIfRef(widths[++i]);
+  _removeType3ColorOperators(operatorList) {
+    let i = 1,
+        ii = operatorList.length;
+
+    while (i < ii) {
+      switch (operatorList.fnArray[i]) {
+        case _util.OPS.setStrokeColorSpace:
+        case _util.OPS.setFillColorSpace:
+        case _util.OPS.setStrokeColor:
+        case _util.OPS.setStrokeColorN:
+        case _util.OPS.setFillColor:
+        case _util.OPS.setFillColorN:
+        case _util.OPS.setStrokeGray:
+        case _util.OPS.setFillGray:
+        case _util.OPS.setStrokeRGBColor:
+        case _util.OPS.setFillRGBColor:
+        case _util.OPS.setStrokeCMYKColor:
+        case _util.OPS.setFillCMYKColor:
+        case _util.OPS.shadingFill:
+        case _util.OPS.setRenderingIntent:
+          operatorList.fnArray.splice(i, 1);
+          operatorList.argsArray.splice(i, 1);
+          ii--;
+          continue;
 
-            for (j = start; j <= code; j++) {
-              glyphsWidths[j] = width;
+        case _util.OPS.setGState:
+          const [gStateObj] = operatorList.argsArray[i];
+          let j = 0,
+              jj = gStateObj.length;
+
+          while (j < jj) {
+            const [gStateKey] = gStateObj[j];
+
+            switch (gStateKey) {
+              case "TR":
+              case "TR2":
+              case "HT":
+              case "BG":
+              case "BG2":
+              case "UCR":
+              case "UCR2":
+                gStateObj.splice(j, 1);
+                jj--;
+                continue;
             }
-          }
-        }
-      }
-
-      if (properties.vertical) {
-        var vmetrics = dict.getArray("DW2") || [880, -1000];
-        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
-        vmetrics = dict.get("W2");
-
-        if (vmetrics) {
-          for (i = 0, ii = vmetrics.length; i < ii; i++) {
-            start = xref.fetchIfRef(vmetrics[i++]);
-            code = xref.fetchIfRef(vmetrics[i]);
-
-            if (Array.isArray(code)) {
-              for (j = 0, jj = code.length; j < jj; j++) {
-                glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), 
xref.fetchIfRef(code[j])];
-              }
-            } else {
-              var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), 
xref.fetchIfRef(vmetrics[++i])];
 
-              for (j = start; j <= code; j++) {
-                glyphsVMetrics[j] = vmetric;
-              }
-            }
+            j++;
           }
-        }
-      }
-    } else {
-      var firstChar = properties.firstChar;
-      widths = dict.get("Widths");
-
-      if (widths) {
-        j = firstChar;
-
-        for (i = 0, ii = widths.length; i < ii; i++) {
-          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
-        }
-
-        defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0;
-      } else {
-        var baseFontName = dict.get("BaseFont");
-
-        if ((0, _primitives.isName)(baseFontName)) {
-          var metrics = this.getBaseFontMetrics(baseFontName.name);
-          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
-          defaultWidth = metrics.defaultWidth;
-        }
-      }
-    }
 
-    var isMonospace = true;
-    var firstWidth = defaultWidth;
-
-    for (var glyph in glyphsWidths) {
-      var glyphWidth = glyphsWidths[glyph];
-
-      if (!glyphWidth) {
-        continue;
-      }
-
-      if (!firstWidth) {
-        firstWidth = glyphWidth;
-        continue;
+          break;
       }
 
-      if (firstWidth !== glyphWidth) {
-        isMonospace = false;
-        break;
-      }
+      i++;
     }
+  }
 
-    if (isMonospace) {
-      properties.flags |= _fonts.FontFlags.FixedPitch;
-    }
+}
 
-    properties.defaultWidth = defaultWidth;
-    properties.widths = glyphsWidths;
-    properties.defaultVMetrics = defaultVMetrics;
-    properties.vmetrics = glyphsVMetrics;
+class StateManager {
+  constructor(initialState = new EvalState()) {
+    this.state = initialState;
+    this.stateStack = [];
   }
 
-  isSerifFont(baseFontName) {
-    var fontNameWoStyle = baseFontName.split("-")[0];
-    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== 
-1;
+  save() {
+    var old = this.state;
+    this.stateStack.push(this.state);
+    this.state = old.clone();
   }
 
-  getBaseFontMetrics(name) {
-    var defaultWidth = 0;
-    var widths = [];
-    var monospace = false;
-    var stdFontMap = (0, _standard_fonts.getStdFontMap)();
-    var lookupName = stdFontMap[name] || name;
-    var Metrics = (0, _metrics.getMetrics)();
+  restore() {
+    var prev = this.stateStack.pop();
 
-    if (!(lookupName in Metrics)) {
-      if (this.isSerifFont(name)) {
-        lookupName = "Times-Roman";
-      } else {
-        lookupName = "Helvetica";
-      }
+    if (prev) {
+      this.state = prev;
     }
+  }
 
-    var glyphWidths = Metrics[lookupName];
+  transform(args) {
+    this.state.ctm = _util.Util.transform(this.state.ctm, args);
+  }
 
-    if ((0, _util.isNum)(glyphWidths)) {
-      defaultWidth = glyphWidths;
-      monospace = true;
-    } else {
-      widths = glyphWidths();
-    }
+}
 
-    return {
-      defaultWidth,
-      monospace,
-      widths
-    };
+class TextState {
+  constructor() {
+    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
+    this.fontName = null;
+    this.fontSize = 0;
+    this.font = null;
+    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
+    this.textMatrix = _util.IDENTITY_MATRIX.slice();
+    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.leading = 0;
+    this.textHScale = 1;
+    this.textRise = 0;
   }
 
-  buildCharCodeToWidth(widthsByGlyphName, properties) {
-    var widths = Object.create(null);
-    var differences = properties.differences;
-    var encoding = properties.defaultEncoding;
+  setTextMatrix(a, b, c, d, e, f) {
+    var m = this.textMatrix;
+    m[0] = a;
+    m[1] = b;
+    m[2] = c;
+    m[3] = d;
+    m[4] = e;
+    m[5] = f;
+  }
 
-    for (var charCode = 0; charCode < 256; charCode++) {
-      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
-        widths[charCode] = widthsByGlyphName[differences[charCode]];
-        continue;
-      }
+  setTextLineMatrix(a, b, c, d, e, f) {
+    var m = this.textLineMatrix;
+    m[0] = a;
+    m[1] = b;
+    m[2] = c;
+    m[3] = d;
+    m[4] = e;
+    m[5] = f;
+  }
 
-      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
-        widths[charCode] = widthsByGlyphName[encoding[charCode]];
-        continue;
-      }
-    }
+  translateTextMatrix(x, y) {
+    var m = this.textMatrix;
+    m[4] = m[0] * x + m[2] * y + m[4];
+    m[5] = m[1] * x + m[3] * y + m[5];
+  }
 
-    return widths;
+  translateTextLineMatrix(x, y) {
+    var m = this.textLineMatrix;
+    m[4] = m[0] * x + m[2] * y + m[4];
+    m[5] = m[1] * x + m[3] * y + m[5];
   }
 
-  preEvaluateFont(dict) {
-    var baseDict = dict;
-    var type = dict.get("Subtype");
+  calcTextLineMatrixAdvance(a, b, c, d, e, f) {
+    var font = this.font;
 
-    if (!(0, _primitives.isName)(type)) {
-      throw new _util.FormatError("invalid font Subtype");
+    if (!font) {
+      return null;
     }
 
-    var composite = false;
-    var uint8array;
-
-    if (type.name === "Type0") {
-      var df = dict.get("DescendantFonts");
-
-      if (!df) {
-        throw new _util.FormatError("Descendant fonts are not specified");
-      }
-
-      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
-      type = dict.get("Subtype");
-
-      if (!(0, _primitives.isName)(type)) {
-        throw new _util.FormatError("invalid font Subtype");
-      }
+    var m = this.textLineMatrix;
 
-      composite = true;
+    if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {
+      return null;
     }
 
-    var descriptor = dict.get("FontDescriptor");
-
-    if (descriptor) {
-      var hash = new _murmurhash.MurmurHash3_64();
-      var encoding = baseDict.getRaw("Encoding");
-
-      if ((0, _primitives.isName)(encoding)) {
-        hash.update(encoding.name);
-      } else if ((0, _primitives.isRef)(encoding)) {
-        hash.update(encoding.toString());
-      } else if ((0, _primitives.isDict)(encoding)) {
-        for (const entry of encoding.getRawValues()) {
-          if ((0, _primitives.isName)(entry)) {
-            hash.update(entry.name);
-          } else if ((0, _primitives.isRef)(entry)) {
-            hash.update(entry.toString());
-          } else if (Array.isArray(entry)) {
-            var diffLength = entry.length,
-                diffBuf = new Array(diffLength);
-
-            for (var j = 0; j < diffLength; j++) {
-              var diffEntry = entry[j];
-
-              if ((0, _primitives.isName)(diffEntry)) {
-                diffBuf[j] = diffEntry.name;
-              } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
-                diffBuf[j] = diffEntry.toString();
-              }
-            }
-
-            hash.update(diffBuf.join());
-          }
-        }
-      }
-
-      const firstChar = dict.get("FirstChar") || 0;
-      const lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff);
-      hash.update(`${firstChar}-${lastChar}`);
-      var toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
+    var txDiff = e - m[4],
+        tyDiff = f - m[5];
 
-      if ((0, _primitives.isStream)(toUnicode)) {
-        var stream = toUnicode.str || toUnicode;
-        uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new 
Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
-        hash.update(uint8array);
-      } else if ((0, _primitives.isName)(toUnicode)) {
-        hash.update(toUnicode.name);
-      }
+    if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {
+      return null;
+    }
 
-      var widths = dict.get("Widths") || baseDict.get("Widths");
+    var tx,
+        ty,
+        denominator = a * d - b * c;
 
-      if (widths) {
-        uint8array = new Uint8Array(new Uint32Array(widths).buffer);
-        hash.update(uint8array);
-      }
+    if (font.vertical) {
+      tx = -tyDiff * c / denominator;
+      ty = tyDiff * a / denominator;
+    } else {
+      tx = txDiff * d / denominator;
+      ty = -txDiff * b / denominator;
     }
 
     return {
-      descriptor,
-      dict,
-      baseDict,
-      composite,
-      type: type.name,
-      hash: hash ? hash.hexdigest() : ""
+      width: tx,
+      height: ty,
+      value: font.vertical ? ty : tx
     };
   }
 
-  translateFont(preEvaluatedFont) {
-    var baseDict = preEvaluatedFont.baseDict;
-    var dict = preEvaluatedFont.dict;
-    var composite = preEvaluatedFont.composite;
-    var descriptor = preEvaluatedFont.descriptor;
-    var type = preEvaluatedFont.type;
-    var maxCharIndex = composite ? 0xffff : 0xff;
-    var properties;
-    const firstChar = dict.get("FirstChar") || 0;
-    const lastChar = dict.get("LastChar") || maxCharIndex;
-
-    if (!descriptor) {
-      if (type === "Type3") {
-        descriptor = new _primitives.Dict(null);
-        descriptor.set("FontName", _primitives.Name.get(type));
-        descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]);
-      } else {
-        var baseFontName = dict.get("BaseFont");
-
-        if (!(0, _primitives.isName)(baseFontName)) {
-          throw new _util.FormatError("Base font is not specified");
-        }
-
-        baseFontName = baseFontName.name.replace(/[,_]/g, "-");
-        var metrics = this.getBaseFontMetrics(baseFontName);
-        var fontNameWoStyle = baseFontName.split("-")[0];
-        var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? 
_fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? 
_fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);
-        properties = {
-          type,
-          name: baseFontName,
-          widths: metrics.widths,
-          defaultWidth: metrics.defaultWidth,
-          flags,
-          firstChar,
-          lastChar
-        };
-        const widths = dict.get("Widths");
-        return this.extractDataStructures(dict, dict, properties).then(newProperties => {
-          if (widths) {
-            const glyphWidths = [];
-            let j = firstChar;
-
-            for (let i = 0, ii = widths.length; i < ii; i++) {
-              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);
-            }
-
-            newProperties.widths = glyphWidths;
-          } else {
-            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
-          }
-
-          return new _fonts.Font(baseFontName, null, newProperties);
-        });
-      }
-    }
-
-    var fontName = descriptor.get("FontName");
-    var baseFont = dict.get("BaseFont");
-
-    if ((0, _util.isString)(fontName)) {
-      fontName = _primitives.Name.get(fontName);
-    }
-
-    if ((0, _util.isString)(baseFont)) {
-      baseFont = _primitives.Name.get(baseFont);
-    }
-
-    if (type !== "Type3") {
-      var fontNameStr = fontName && fontName.name;
-      var baseFontStr = baseFont && baseFont.name;
-
-      if (fontNameStr !== baseFontStr) {
-        (0, _util.info)(`The FontDescriptor\'s FontName is "${fontNameStr}" but ` + `should be the same as 
the Font\'s BaseFont "${baseFontStr}".`);
-
-        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {
-          fontName = baseFont;
-        }
-      }
-    }
+  calcRenderMatrix(ctm) {
+    var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];
+    return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));
+  }
 
-    fontName = fontName || baseFont;
+  carriageReturn() {
+    this.translateTextLineMatrix(0, -this.leading);
+    this.textMatrix = this.textLineMatrix.slice();
+  }
 
-    if (!(0, _primitives.isName)(fontName)) {
-      throw new _util.FormatError("invalid font name");
-    }
+  clone() {
+    var clone = Object.create(this);
+    clone.textMatrix = this.textMatrix.slice();
+    clone.textLineMatrix = this.textLineMatrix.slice();
+    clone.fontMatrix = this.fontMatrix.slice();
+    return clone;
+  }
 
-    var fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3");
+}
 
-    if (fontFile) {
-      if (fontFile.dict) {
-        var subtype = fontFile.dict.get("Subtype");
+class EvalState {
+  constructor() {
+    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
+    this.font = null;
+    this.textRenderingMode = _util.TextRenderingMode.FILL;
+    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
+    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
+  }
 
-        if (subtype) {
-          subtype = subtype.name;
-        }
+  clone() {
+    return Object.create(this);
+  }
 
-        var length1 = fontFile.dict.get("Length1");
-        var length2 = fontFile.dict.get("Length2");
-        var length3 = fontFile.dict.get("Length3");
-      }
-    }
-
-    properties = {
-      type,
-      name: fontName.name,
-      subtype,
-      file: fontFile,
-      length1,
-      length2,
-      length3,
-      loadedName: baseDict.loadedName,
-      composite,
-      fixedPitch: false,
-      fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX,
-      firstChar: firstChar || 0,
-      lastChar: lastChar || maxCharIndex,
-      bbox: descriptor.getArray("FontBBox"),
-      ascent: descriptor.get("Ascent"),
-      descent: descriptor.get("Descent"),
-      xHeight: descriptor.get("XHeight"),
-      capHeight: descriptor.get("CapHeight"),
-      flags: descriptor.get("Flags"),
-      italicAngle: descriptor.get("ItalicAngle"),
-      isType3Font: false
-    };
-    var cMapPromise;
-
-    if (composite) {
-      var cidEncoding = baseDict.get("Encoding");
-
-      if ((0, _primitives.isName)(cidEncoding)) {
-        properties.cidEncoding = cidEncoding.name;
-      }
-
-      cMapPromise = _cmap.CMapFactory.create({
-        encoding: cidEncoding,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (cMap) {
-        properties.cMap = cMap;
-        properties.vertical = properties.cMap.vertical;
-      });
-    } else {
-      cMapPromise = Promise.resolve(undefined);
-    }
-
-    return cMapPromise.then(() => {
-      return this.extractDataStructures(dict, baseDict, properties);
-    }).then(newProperties => {
-      this.extractWidths(dict, descriptor, newProperties);
-
-      if (type === "Type3") {
-        newProperties.isType3Font = true;
-      }
-
-      return new _fonts.Font(fontName.name, fontFile, newProperties);
-    });
-  }
-
-  static buildFontPaths(font, glyphs, handler) {
-    function buildPath(fontChar) {
-      if (font.renderer.hasBuiltPath(fontChar)) {
-        return;
-      }
-
-      handler.send("commonobj", [`${font.loadedName}_path_${fontChar}`, "FontPath", 
font.renderer.getPathJs(fontChar)]);
-    }
-
-    for (const glyph of glyphs) {
-      buildPath(glyph.fontChar);
-      const accent = glyph.accent;
-
-      if (accent && accent.fontChar) {
-        buildPath(accent.fontChar);
-      }
-    }
-  }
-
-  static get fallbackFontDict() {
-    const dict = new _primitives.Dict();
-    dict.set("BaseFont", _primitives.Name.get("PDFJS-FallbackFont"));
-    dict.set("Type", _primitives.Name.get("FallbackType"));
-    dict.set("Subtype", _primitives.Name.get("FallbackType"));
-    dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding"));
-    return (0, _util.shadow)(this, "fallbackFontDict", dict);
-  }
-
-}
-
-exports.PartialEvaluator = PartialEvaluator;
-
-class TranslatedFont {
-  constructor({
-    loadedName,
-    font,
-    dict,
-    extraProperties = false
-  }) {
-    this.loadedName = loadedName;
-    this.font = font;
-    this.dict = dict;
-    this._extraProperties = extraProperties;
-    this.type3Loaded = null;
-    this.type3Dependencies = font.isType3Font ? new Set() : null;
-    this.sent = false;
-  }
-
-  send(handler) {
-    if (this.sent) {
-      return;
-    }
-
-    this.sent = true;
-    handler.send("commonobj", [this.loadedName, "Font", this.font.exportData(this._extraProperties)]);
-  }
-
-  fallback(handler) {
-    if (!this.font.data) {
-      return;
-    }
-
-    this.font.disableFontFace = true;
-    const glyphs = this.font.glyphCacheValues;
-    PartialEvaluator.buildFontPaths(this.font, glyphs, handler);
-  }
-
-  loadType3Data(evaluator, resources, task) {
-    if (this.type3Loaded) {
-      return this.type3Loaded;
-    }
-
-    if (!this.font.isType3Font) {
-      throw new Error("Must be a Type3 font.");
-    }
-
-    var type3Options = Object.create(evaluator.options);
-    type3Options.ignoreErrors = false;
-    var type3Evaluator = evaluator.clone(type3Options);
-    type3Evaluator.parsingType3Font = true;
-    const translatedFont = this.font,
-          type3Dependencies = this.type3Dependencies;
-    var loadCharProcsPromise = Promise.resolve();
-    var charProcs = this.dict.get("CharProcs");
-    var fontResources = this.dict.get("Resources") || resources;
-    var charProcOperatorList = Object.create(null);
-
-    for (const key of charProcs.getKeys()) {
-      loadCharProcsPromise = loadCharProcsPromise.then(function () {
-        var glyphStream = charProcs.get(key);
-        var operatorList = new _operator_list.OperatorList();
-        return type3Evaluator.getOperatorList({
-          stream: glyphStream,
-          task,
-          resources: fontResources,
-          operatorList
-        }).then(function () {
-          charProcOperatorList[key] = operatorList.getIR();
-
-          for (const dependency of operatorList.dependencies) {
-            type3Dependencies.add(dependency);
-          }
-        }).catch(function (reason) {
-          (0, _util.warn)(`Type3 font resource "${key}" is not available.`);
-          const dummyOperatorList = new _operator_list.OperatorList();
-          charProcOperatorList[key] = dummyOperatorList.getIR();
-        });
-      });
-    }
-
-    this.type3Loaded = loadCharProcsPromise.then(function () {
-      translatedFont.charProcOperatorList = charProcOperatorList;
-    });
-    return this.type3Loaded;
-  }
-
-}
-
-class StateManager {
-  constructor(initialState) {
-    this.state = initialState;
-    this.stateStack = [];
-  }
-
-  save() {
-    var old = this.state;
-    this.stateStack.push(this.state);
-    this.state = old.clone();
-  }
-
-  restore() {
-    var prev = this.stateStack.pop();
-
-    if (prev) {
-      this.state = prev;
-    }
-  }
-
-  transform(args) {
-    this.state.ctm = _util.Util.transform(this.state.ctm, args);
-  }
-
-}
-
-class TextState {
-  constructor() {
-    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
-    this.fontName = null;
-    this.fontSize = 0;
-    this.font = null;
-    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
-    this.textMatrix = _util.IDENTITY_MATRIX.slice();
-    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();
-    this.charSpacing = 0;
-    this.wordSpacing = 0;
-    this.leading = 0;
-    this.textHScale = 1;
-    this.textRise = 0;
-  }
-
-  setTextMatrix(a, b, c, d, e, f) {
-    var m = this.textMatrix;
-    m[0] = a;
-    m[1] = b;
-    m[2] = c;
-    m[3] = d;
-    m[4] = e;
-    m[5] = f;
-  }
-
-  setTextLineMatrix(a, b, c, d, e, f) {
-    var m = this.textLineMatrix;
-    m[0] = a;
-    m[1] = b;
-    m[2] = c;
-    m[3] = d;
-    m[4] = e;
-    m[5] = f;
-  }
-
-  translateTextMatrix(x, y) {
-    var m = this.textMatrix;
-    m[4] = m[0] * x + m[2] * y + m[4];
-    m[5] = m[1] * x + m[3] * y + m[5];
-  }
-
-  translateTextLineMatrix(x, y) {
-    var m = this.textLineMatrix;
-    m[4] = m[0] * x + m[2] * y + m[4];
-    m[5] = m[1] * x + m[3] * y + m[5];
-  }
-
-  calcTextLineMatrixAdvance(a, b, c, d, e, f) {
-    var font = this.font;
-
-    if (!font) {
-      return null;
-    }
-
-    var m = this.textLineMatrix;
-
-    if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {
-      return null;
-    }
-
-    var txDiff = e - m[4],
-        tyDiff = f - m[5];
-
-    if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {
-      return null;
-    }
-
-    var tx,
-        ty,
-        denominator = a * d - b * c;
-
-    if (font.vertical) {
-      tx = -tyDiff * c / denominator;
-      ty = tyDiff * a / denominator;
-    } else {
-      tx = txDiff * d / denominator;
-      ty = -txDiff * b / denominator;
-    }
-
-    return {
-      width: tx,
-      height: ty,
-      value: font.vertical ? ty : tx
-    };
-  }
-
-  calcRenderMatrix(ctm) {
-    var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];
-    return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));
-  }
-
-  carriageReturn() {
-    this.translateTextLineMatrix(0, -this.leading);
-    this.textMatrix = this.textLineMatrix.slice();
-  }
-
-  clone() {
-    var clone = Object.create(this);
-    clone.textMatrix = this.textMatrix.slice();
-    clone.textLineMatrix = this.textLineMatrix.slice();
-    clone.fontMatrix = this.fontMatrix.slice();
-    return clone;
-  }
-
-}
-
-class EvalState {
-  constructor() {
-    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
-    this.font = null;
-    this.textRenderingMode = _util.TextRenderingMode.FILL;
-    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
-    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
-  }
-
-  clone() {
-    return Object.create(this);
-  }
-
-}
+}
 
 class EvaluatorPreprocessor {
   static get opMap() {
@@ -25179,7 +25390,7 @@ class EvaluatorPreprocessor {
     return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 20);
   }
 
-  constructor(stream, xref, stateManager) {
+  constructor(stream, xref, stateManager = new StateManager()) {
     this.parser = new _parser.Parser({
       lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap),
       xref
@@ -25292,17 +25503,18 @@ class EvaluatorPreprocessor {
 
 }
 
+exports.EvaluatorPreprocessor = EvaluatorPreprocessor;
+
 /***/ }),
-/* 29 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 28 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0;
+}));
+exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -25443,6 +25655,25 @@ class CMap {
     out.length = 1;
   }
 
+  getCharCodeLength(charCode) {
+    const codespaceRanges = this.codespaceRanges;
+
+    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
+      const codespaceRange = codespaceRanges[n];
+
+      for (let k = 0, kk = codespaceRange.length; k < kk;) {
+        const low = codespaceRange[k++];
+        const high = codespaceRange[k++];
+
+        if (charCode >= low && charCode <= high) {
+          return n + 1;
+        }
+      }
+    }
+
+    return 1;
+  }
+
   get length() {
     return this._map.length;
   }
@@ -26203,39 +26434,38 @@ var CMapFactory = function CMapFactoryClosure() {
 exports.CMapFactory = CMapFactory;
 
 /***/ }),
-/* 30 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 29 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getFontType = getFontType;
-exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = 
exports.SEAC_ANALYSIS_ENABLED = void 0;
+exports.ToUnicodeMap = exports.SEAC_ANALYSIS_ENABLED = exports.IdentityToUnicodeMap = exports.FontFlags = 
exports.Font = exports.ErrorFont = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _cff_parser = __w_pdfjs_require__(31);
+var _cff_parser = __w_pdfjs_require__(30);
 
-var _glyphlist = __w_pdfjs_require__(34);
+var _glyphlist = __w_pdfjs_require__(33);
 
-var _encodings = __w_pdfjs_require__(33);
+var _encodings = __w_pdfjs_require__(32);
 
-var _standard_fonts = __w_pdfjs_require__(35);
+var _standard_fonts = __w_pdfjs_require__(34);
 
-var _unicode = __w_pdfjs_require__(36);
+var _unicode = __w_pdfjs_require__(35);
 
 var _core_utils = __w_pdfjs_require__(8);
 
-var _font_renderer = __w_pdfjs_require__(37);
+var _font_renderer = __w_pdfjs_require__(36);
 
-var _cmap = __w_pdfjs_require__(29);
+var _cmap = __w_pdfjs_require__(28);
 
 var _stream = __w_pdfjs_require__(12);
 
-var _type1_parser = __w_pdfjs_require__(38);
+var _type1_parser = __w_pdfjs_require__(37);
 
 const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];
 var PDF_GLYPH_SPACE_UNITS = 1000;
@@ -26623,6 +26853,7 @@ var Font = function FontClosure() {
     this.defaultWidth = properties.defaultWidth;
     this.composite = properties.composite;
     this.cMap = properties.cMap;
+    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;
     this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
     this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
     this.fontMatrix = properties.fontMatrix;
@@ -26654,7 +26885,7 @@ var Font = function FontClosure() {
         (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")");
       }
 
-      this.fallbackToSystemFont();
+      this.fallbackToSystemFont(properties);
       return;
     }
 
@@ -26697,7 +26928,7 @@ var Font = function FontClosure() {
       }
     } catch (e) {
       (0, _util.warn)(e);
-      this.fallbackToSystemFont();
+      this.fallbackToSystemFont(properties);
       return;
     }
 
@@ -27208,7 +27439,7 @@ var Font = function FontClosure() {
       return data;
     },
 
-    fallbackToSystemFont: function Font_fallbackToSystemFont() {
+    fallbackToSystemFont(properties) {
       this.missingFile = true;
       var name = this.name;
       var type = this.type;
@@ -27216,15 +27447,18 @@ var Font = function FontClosure() {
       let fontName = name.replace(/[,_]/g, "-").replace(/\s/g, "");
       var stdFontMap = (0, _standard_fonts.getStdFontMap)(),
           nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();
-      var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && 
stdFontMap[nonStdFontMap[fontName]]);
+      const isStandardFont = !!stdFontMap[fontName];
+      const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
       fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
       this.bold = fontName.search(/bold/gi) !== -1;
       this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;
       this.black = name.search(/Black/g) !== -1;
-      this.remeasure = Object.keys(this.widths).length > 0;
+      const isNarrow = name.search(/Narrow/g) !== -1;
+      this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;
 
-      if (isStandardFont && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) {
-        const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();
+      if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && 
this.cidEncoding.startsWith("Identity-")) {
+        const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)(),
+              cidToGidMap = properties.cidToGidMap;
         const map = [];
 
         for (const charCode in GlyphMapForStandardFonts) {
@@ -27245,6 +27479,16 @@ var Font = function FontClosure() {
           }
         }
 
+        if (cidToGidMap) {
+          for (const charCode in map) {
+            const cid = map[charCode];
+
+            if (cidToGidMap[cid] !== undefined) {
+              map[+charCode] = cidToGidMap[cid];
+            }
+          }
+        }
+
         var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;
 
         if (!isIdentityUnicode) {
@@ -27297,6 +27541,7 @@ var Font = function FontClosure() {
       this.loadedName = fontName.split("-")[0];
       this.fontType = getFontType(type, subtype);
     },
+
     checkAndRepair: function Font_checkAndRepair(name, font, properties) {
       const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", 
"fpgm", "prep", "cvt ", "CFF "];
 
@@ -28829,7 +29074,7 @@ var Font = function FontClosure() {
       return (0, _util.shadow)(this, "spaceWidth", width);
     },
 
-    charToGlyph: function Font_charToGlyph(charcode, isSpace) {
+    _charToGlyph(charcode, isSpace = false) {
       var fontCharCode, width, operatorListId;
       var widthCode = charcode;
 
@@ -28894,6 +29139,7 @@ var Font = function FontClosure() {
 
       return glyph;
     },
+
     charsToGlyphs: function Font_charsToGlyphs(chars) {
       var charsCache = this.charsCache;
       var glyphs, glyph, charcode;
@@ -28924,13 +29170,13 @@ var Font = function FontClosure() {
           var length = c.length;
           i += length;
           var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;
-          glyph = this.charToGlyph(charcode, isSpace);
+          glyph = this._charToGlyph(charcode, isSpace);
           glyphs.push(glyph);
         }
       } else {
         for (i = 0, ii = chars.length; i < ii; ++i) {
           charcode = chars.charCodeAt(i);
-          glyph = this.charToGlyph(charcode, charcode === 0x20);
+          glyph = this._charToGlyph(charcode, charcode === 0x20);
           glyphs.push(glyph);
         }
       }
@@ -28938,8 +29184,75 @@ var Font = function FontClosure() {
       return charsCache[charsCacheKey] = glyphs;
     },
 
+    getCharPositions(chars) {
+      const positions = [];
+
+      if (this.cMap) {
+        const c = Object.create(null);
+        let i = 0;
+
+        while (i < chars.length) {
+          this.cMap.readCharCode(chars, i, c);
+          const length = c.length;
+          positions.push([i, i + length]);
+          i += length;
+        }
+      } else {
+        for (let i = 0, ii = chars.length; i < ii; ++i) {
+          positions.push([i, i + 1]);
+        }
+      }
+
+      return positions;
+    },
+
     get glyphCacheValues() {
       return Object.values(this.glyphCache);
+    },
+
+    encodeString(str) {
+      const buffers = [];
+      const currentBuf = [];
+
+      const hasCurrentBufErrors = () => buffers.length % 2 === 1;
+
+      for (let i = 0, ii = str.length; i < ii; i++) {
+        const unicode = str.codePointAt(i);
+
+        if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {
+          i++;
+        }
+
+        if (this.toUnicode) {
+          const char = String.fromCodePoint(unicode);
+          const charCode = this.toUnicode.charCodeOf(char);
+
+          if (charCode !== -1) {
+            if (hasCurrentBufErrors()) {
+              buffers.push(currentBuf.join(""));
+              currentBuf.length = 0;
+            }
+
+            const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;
+
+            for (let j = charCodeLength - 1; j >= 0; j--) {
+              currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));
+            }
+
+            continue;
+          }
+        }
+
+        if (!hasCurrentBufErrors()) {
+          buffers.push(currentBuf.join(""));
+          currentBuf.length = 0;
+        }
+
+        currentBuf.push(String.fromCodePoint(unicode));
+      }
+
+      buffers.push(currentBuf.join(""));
+      return buffers;
     }
 
   };
@@ -28959,6 +29272,9 @@ var ErrorFont = function ErrorFontClosure() {
     charsToGlyphs: function ErrorFont_charsToGlyphs() {
       return [];
     },
+    encodeString: function ErrorFont_encodeString(chars) {
+      return [chars];
+    },
 
     exportData(extraProperties = false) {
       return {
@@ -29444,22 +29760,21 @@ var CFFFont = function CFFFontClosure() {
 }();
 
 /***/ }),
-/* 31 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 30 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset 
= exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = 
exports.CFFStandardStrings = void 0;
+}));
+exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = 
exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = 
exports.CFFCharset = exports.CFF = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _charsets = __w_pdfjs_require__(32);
+var _charsets = __w_pdfjs_require__(31);
 
-var _encodings = __w_pdfjs_require__(33);
+var _encodings = __w_pdfjs_require__(32);
 
 var MAX_SUBR_NESTING = 10;
 var CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", 
"currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", 
"endash", "dagger", "daggerdbl", "periodcentered", "paragra
 ph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", 
"perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", 
"dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", 
"Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", 
"logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", 
"degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", 
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", 
"Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", 
"Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", 
"Yacute", "Ydieresis", "Zcaron", "aacute", "acircum
 flex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", 
"iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", 
"otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", 
"exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", 
"parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", 
"twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", 
"eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", 
"asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", 
"nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", 
"parenrightinferior", "Circumflexsmall", "hyphensu
 perior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", 
"Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", 
"Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", 
"Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", 
"Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", 
"Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", 
"seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", 
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", 
"threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", 
"nineinferior", "centinferior", "dollarinferior", "periodinferi
 or", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", 
"Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", 
"Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", 
"Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", 
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", 
"001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", 
"Semibold"];
@@ -30816,6 +31131,12 @@ class CFFCompiler {
       }
     }
 
+    const xuid = cff.topDict.getByName("XUID");
+
+    if (xuid && xuid.length > 16) {
+      cff.topDict.removeByName("XUID");
+    }
+
     cff.topDict.setByName("charset", 0);
     var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
     output.add(compiled.output);
@@ -31275,16 +31596,15 @@ class CFFCompiler {
 exports.CFFCompiler = CFFCompiler;
 
 /***/ }),
-/* 32 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 31 */
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0;
+}));
+exports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0;
 const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", 
"currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", 
"endash", "dagger", "daggerdbl", "periodcentered", "paragrap
 h", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", 
"perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", 
"dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", 
"Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", 
"logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", 
"degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", 
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", 
"Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", 
"Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", 
"Yacute", "Ydieresis", "Zcaron", "aacute", "acircumf
 lex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", 
"iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", 
"otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"];
 exports.ISOAdobeCharset = ISOAdobeCharset;
 const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", 
"dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", 
"twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", 
"twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", 
"eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", 
"periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", 
"isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", 
"fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", 
"Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", 
"Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsma
 ll", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", 
"onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", 
"Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", 
"hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", 
"questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", 
"zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", 
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", 
"threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", 
"nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", 
"Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Ari
 ngsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", 
"Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", 
"Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", 
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"];
@@ -31293,17 +31613,16 @@ const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperi
 exports.ExpertSubsetCharset = ExpertSubsetCharset;
 
 /***/ }),
-/* 33 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 32 */
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getEncoding = getEncoding;
-exports.ExpertEncoding = exports.ZapfDingbatsEncoding = exports.SymbolSetEncoding = exports.MacRomanEncoding 
= exports.StandardEncoding = exports.WinAnsiEncoding = void 0;
+exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = 
exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0;
 const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", 
"dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", 
"threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", 
"dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", 
"osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", 
"parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", 
"Bs
 mall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", 
"Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", 
"Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", 
"Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", 
"hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", 
"threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", 
"twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", 
"fivesuperior", "sixsuperior", "sevensuperi
 or", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", 
"fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", 
"centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", 
"Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", 
"Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", 
"Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", 
"Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", 
"Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"];
 exports.ExpertEncoding = ExpertEncoding;
 const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", 
"dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", 
"questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", 
"threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", 
"fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", 
"Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmal
 l", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", 
"Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", 
"colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", 
"Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", 
"Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", 
"Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", 
"Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", 
"Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", 
"seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", 
"osuperior", "fiveinferior", "", "commainferior", "periodinferior", 
 "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", 
"Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", 
"", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", 
"exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", 
"fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", 
"tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", 
"Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", 
"Dotaccentsmall", "Ringsmall", "", "", "", ""];
@@ -31347,4553 +31666,9086 @@ function getEncoding(encodingName) {
 }
 
 /***/ }),
-/* 34 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-var getLookupTableFactory = __w_pdfjs_require__(8).getLookupTableFactory;
-var getGlyphsUnicode = getLookupTableFactory(function (t) {
- t.A = 0x0041;
- t.AE = 0x00c6;
- t.AEacute = 0x01fc;
- t.AEmacron = 0x01e2;
- t.AEsmall = 0xf7e6;
- t.Aacute = 0x00c1;
- t.Aacutesmall = 0xf7e1;
- t.Abreve = 0x0102;
- t.Abreveacute = 0x1eae;
- t.Abrevecyrillic = 0x04d0;
- t.Abrevedotbelow = 0x1eb6;
- t.Abrevegrave = 0x1eb0;
- t.Abrevehookabove = 0x1eb2;
- t.Abrevetilde = 0x1eb4;
- t.Acaron = 0x01cd;
- t.Acircle = 0x24b6;
- t.Acircumflex = 0x00c2;
- t.Acircumflexacute = 0x1ea4;
- t.Acircumflexdotbelow = 0x1eac;
- t.Acircumflexgrave = 0x1ea6;
- t.Acircumflexhookabove = 0x1ea8;
- t.Acircumflexsmall = 0xf7e2;
- t.Acircumflextilde = 0x1eaa;
- t.Acute = 0xf6c9;
- t.Acutesmall = 0xf7b4;
- t.Acyrillic = 0x0410;
- t.Adblgrave = 0x0200;
- t.Adieresis = 0x00c4;
- t.Adieresiscyrillic = 0x04d2;
- t.Adieresismacron = 0x01de;
- t.Adieresissmall = 0xf7e4;
- t.Adotbelow = 0x1ea0;
- t.Adotmacron = 0x01e0;
- t.Agrave = 0x00c0;
- t.Agravesmall = 0xf7e0;
- t.Ahookabove = 0x1ea2;
- t.Aiecyrillic = 0x04d4;
- t.Ainvertedbreve = 0x0202;
- t.Alpha = 0x0391;
- t.Alphatonos = 0x0386;
- t.Amacron = 0x0100;
- t.Amonospace = 0xff21;
- t.Aogonek = 0x0104;
- t.Aring = 0x00c5;
- t.Aringacute = 0x01fa;
- t.Aringbelow = 0x1e00;
- t.Aringsmall = 0xf7e5;
- t.Asmall = 0xf761;
- t.Atilde = 0x00c3;
- t.Atildesmall = 0xf7e3;
- t.Aybarmenian = 0x0531;
- t.B = 0x0042;
- t.Bcircle = 0x24b7;
- t.Bdotaccent = 0x1e02;
- t.Bdotbelow = 0x1e04;
- t.Becyrillic = 0x0411;
- t.Benarmenian = 0x0532;
- t.Beta = 0x0392;
- t.Bhook = 0x0181;
- t.Blinebelow = 0x1e06;
- t.Bmonospace = 0xff22;
- t.Brevesmall = 0xf6f4;
- t.Bsmall = 0xf762;
- t.Btopbar = 0x0182;
- t.C = 0x0043;
- t.Caarmenian = 0x053e;
- t.Cacute = 0x0106;
- t.Caron = 0xf6ca;
- t.Caronsmall = 0xf6f5;
- t.Ccaron = 0x010c;
- t.Ccedilla = 0x00c7;
- t.Ccedillaacute = 0x1e08;
- t.Ccedillasmall = 0xf7e7;
- t.Ccircle = 0x24b8;
- t.Ccircumflex = 0x0108;
- t.Cdot = 0x010a;
- t.Cdotaccent = 0x010a;
- t.Cedillasmall = 0xf7b8;
- t.Chaarmenian = 0x0549;
- t.Cheabkhasiancyrillic = 0x04bc;
- t.Checyrillic = 0x0427;
- t.Chedescenderabkhasiancyrillic = 0x04be;
- t.Chedescendercyrillic = 0x04b6;
- t.Chedieresiscyrillic = 0x04f4;
- t.Cheharmenian = 0x0543;
- t.Chekhakassiancyrillic = 0x04cb;
- t.Cheverticalstrokecyrillic = 0x04b8;
- t.Chi = 0x03a7;
- t.Chook = 0x0187;
- t.Circumflexsmall = 0xf6f6;
- t.Cmonospace = 0xff23;
- t.Coarmenian = 0x0551;
- t.Csmall = 0xf763;
- t.D = 0x0044;
- t.DZ = 0x01f1;
- t.DZcaron = 0x01c4;
- t.Daarmenian = 0x0534;
- t.Dafrican = 0x0189;
- t.Dcaron = 0x010e;
- t.Dcedilla = 0x1e10;
- t.Dcircle = 0x24b9;
- t.Dcircumflexbelow = 0x1e12;
- t.Dcroat = 0x0110;
- t.Ddotaccent = 0x1e0a;
- t.Ddotbelow = 0x1e0c;
- t.Decyrillic = 0x0414;
- t.Deicoptic = 0x03ee;
- t.Delta = 0x2206;
- t.Deltagreek = 0x0394;
- t.Dhook = 0x018a;
- t.Dieresis = 0xf6cb;
- t.DieresisAcute = 0xf6cc;
- t.DieresisGrave = 0xf6cd;
- t.Dieresissmall = 0xf7a8;
- t.Digammagreek = 0x03dc;
- t.Djecyrillic = 0x0402;
- t.Dlinebelow = 0x1e0e;
- t.Dmonospace = 0xff24;
- t.Dotaccentsmall = 0xf6f7;
- t.Dslash = 0x0110;
- t.Dsmall = 0xf764;
- t.Dtopbar = 0x018b;
- t.Dz = 0x01f2;
- t.Dzcaron = 0x01c5;
- t.Dzeabkhasiancyrillic = 0x04e0;
- t.Dzecyrillic = 0x0405;
- t.Dzhecyrillic = 0x040f;
- t.E = 0x0045;
- t.Eacute = 0x00c9;
- t.Eacutesmall = 0xf7e9;
- t.Ebreve = 0x0114;
- t.Ecaron = 0x011a;
- t.Ecedillabreve = 0x1e1c;
- t.Echarmenian = 0x0535;
- t.Ecircle = 0x24ba;
- t.Ecircumflex = 0x00ca;
- t.Ecircumflexacute = 0x1ebe;
- t.Ecircumflexbelow = 0x1e18;
- t.Ecircumflexdotbelow = 0x1ec6;
- t.Ecircumflexgrave = 0x1ec0;
- t.Ecircumflexhookabove = 0x1ec2;
- t.Ecircumflexsmall = 0xf7ea;
- t.Ecircumflextilde = 0x1ec4;
- t.Ecyrillic = 0x0404;
- t.Edblgrave = 0x0204;
- t.Edieresis = 0x00cb;
- t.Edieresissmall = 0xf7eb;
- t.Edot = 0x0116;
- t.Edotaccent = 0x0116;
- t.Edotbelow = 0x1eb8;
- t.Efcyrillic = 0x0424;
- t.Egrave = 0x00c8;
- t.Egravesmall = 0xf7e8;
- t.Eharmenian = 0x0537;
- t.Ehookabove = 0x1eba;
- t.Eightroman = 0x2167;
- t.Einvertedbreve = 0x0206;
- t.Eiotifiedcyrillic = 0x0464;
- t.Elcyrillic = 0x041b;
- t.Elevenroman = 0x216a;
- t.Emacron = 0x0112;
- t.Emacronacute = 0x1e16;
- t.Emacrongrave = 0x1e14;
- t.Emcyrillic = 0x041c;
- t.Emonospace = 0xff25;
- t.Encyrillic = 0x041d;
- t.Endescendercyrillic = 0x04a2;
- t.Eng = 0x014a;
- t.Enghecyrillic = 0x04a4;
- t.Enhookcyrillic = 0x04c7;
- t.Eogonek = 0x0118;
- t.Eopen = 0x0190;
- t.Epsilon = 0x0395;
- t.Epsilontonos = 0x0388;
- t.Ercyrillic = 0x0420;
- t.Ereversed = 0x018e;
- t.Ereversedcyrillic = 0x042d;
- t.Escyrillic = 0x0421;
- t.Esdescendercyrillic = 0x04aa;
- t.Esh = 0x01a9;
- t.Esmall = 0xf765;
- t.Eta = 0x0397;
- t.Etarmenian = 0x0538;
- t.Etatonos = 0x0389;
- t.Eth = 0x00d0;
- t.Ethsmall = 0xf7f0;
- t.Etilde = 0x1ebc;
- t.Etildebelow = 0x1e1a;
- t.Euro = 0x20ac;
- t.Ezh = 0x01b7;
- t.Ezhcaron = 0x01ee;
- t.Ezhreversed = 0x01b8;
- t.F = 0x0046;
- t.Fcircle = 0x24bb;
- t.Fdotaccent = 0x1e1e;
- t.Feharmenian = 0x0556;
- t.Feicoptic = 0x03e4;
- t.Fhook = 0x0191;
- t.Fitacyrillic = 0x0472;
- t.Fiveroman = 0x2164;
- t.Fmonospace = 0xff26;
- t.Fourroman = 0x2163;
- t.Fsmall = 0xf766;
- t.G = 0x0047;
- t.GBsquare = 0x3387;
- t.Gacute = 0x01f4;
- t.Gamma = 0x0393;
- t.Gammaafrican = 0x0194;
- t.Gangiacoptic = 0x03ea;
- t.Gbreve = 0x011e;
- t.Gcaron = 0x01e6;
- t.Gcedilla = 0x0122;
- t.Gcircle = 0x24bc;
- t.Gcircumflex = 0x011c;
- t.Gcommaaccent = 0x0122;
- t.Gdot = 0x0120;
- t.Gdotaccent = 0x0120;
- t.Gecyrillic = 0x0413;
- t.Ghadarmenian = 0x0542;
- t.Ghemiddlehookcyrillic = 0x0494;
- t.Ghestrokecyrillic = 0x0492;
- t.Gheupturncyrillic = 0x0490;
- t.Ghook = 0x0193;
- t.Gimarmenian = 0x0533;
- t.Gjecyrillic = 0x0403;
- t.Gmacron = 0x1e20;
- t.Gmonospace = 0xff27;
- t.Grave = 0xf6ce;
- t.Gravesmall = 0xf760;
- t.Gsmall = 0xf767;
- t.Gsmallhook = 0x029b;
- t.Gstroke = 0x01e4;
- t.H = 0x0048;
- t.H18533 = 0x25cf;
- t.H18543 = 0x25aa;
- t.H18551 = 0x25ab;
- t.H22073 = 0x25a1;
- t.HPsquare = 0x33cb;
- t.Haabkhasiancyrillic = 0x04a8;
- t.Hadescendercyrillic = 0x04b2;
- t.Hardsigncyrillic = 0x042a;
- t.Hbar = 0x0126;
- t.Hbrevebelow = 0x1e2a;
- t.Hcedilla = 0x1e28;
- t.Hcircle = 0x24bd;
- t.Hcircumflex = 0x0124;
- t.Hdieresis = 0x1e26;
- t.Hdotaccent = 0x1e22;
- t.Hdotbelow = 0x1e24;
- t.Hmonospace = 0xff28;
- t.Hoarmenian = 0x0540;
- t.Horicoptic = 0x03e8;
- t.Hsmall = 0xf768;
- t.Hungarumlaut = 0xf6cf;
- t.Hungarumlautsmall = 0xf6f8;
- t.Hzsquare = 0x3390;
- t.I = 0x0049;
- t.IAcyrillic = 0x042f;
- t.IJ = 0x0132;
- t.IUcyrillic = 0x042e;
- t.Iacute = 0x00cd;
- t.Iacutesmall = 0xf7ed;
- t.Ibreve = 0x012c;
- t.Icaron = 0x01cf;
- t.Icircle = 0x24be;
- t.Icircumflex = 0x00ce;
- t.Icircumflexsmall = 0xf7ee;
- t.Icyrillic = 0x0406;
- t.Idblgrave = 0x0208;
- t.Idieresis = 0x00cf;
- t.Idieresisacute = 0x1e2e;
- t.Idieresiscyrillic = 0x04e4;
- t.Idieresissmall = 0xf7ef;
- t.Idot = 0x0130;
- t.Idotaccent = 0x0130;
- t.Idotbelow = 0x1eca;
- t.Iebrevecyrillic = 0x04d6;
- t.Iecyrillic = 0x0415;
- t.Ifraktur = 0x2111;
- t.Igrave = 0x00cc;
- t.Igravesmall = 0xf7ec;
- t.Ihookabove = 0x1ec8;
- t.Iicyrillic = 0x0418;
- t.Iinvertedbreve = 0x020a;
- t.Iishortcyrillic = 0x0419;
- t.Imacron = 0x012a;
- t.Imacroncyrillic = 0x04e2;
- t.Imonospace = 0xff29;
- t.Iniarmenian = 0x053b;
- t.Iocyrillic = 0x0401;
- t.Iogonek = 0x012e;
- t.Iota = 0x0399;
- t.Iotaafrican = 0x0196;
- t.Iotadieresis = 0x03aa;
- t.Iotatonos = 0x038a;
- t.Ismall = 0xf769;
- t.Istroke = 0x0197;
- t.Itilde = 0x0128;
- t.Itildebelow = 0x1e2c;
- t.Izhitsacyrillic = 0x0474;
- t.Izhitsadblgravecyrillic = 0x0476;
- t.J = 0x004a;
- t.Jaarmenian = 0x0541;
- t.Jcircle = 0x24bf;
- t.Jcircumflex = 0x0134;
- t.Jecyrillic = 0x0408;
- t.Jheharmenian = 0x054b;
- t.Jmonospace = 0xff2a;
- t.Jsmall = 0xf76a;
- t.K = 0x004b;
- t.KBsquare = 0x3385;
- t.KKsquare = 0x33cd;
- t.Kabashkircyrillic = 0x04a0;
- t.Kacute = 0x1e30;
- t.Kacyrillic = 0x041a;
- t.Kadescendercyrillic = 0x049a;
- t.Kahookcyrillic = 0x04c3;
- t.Kappa = 0x039a;
- t.Kastrokecyrillic = 0x049e;
- t.Kaverticalstrokecyrillic = 0x049c;
- t.Kcaron = 0x01e8;
- t.Kcedilla = 0x0136;
- t.Kcircle = 0x24c0;
- t.Kcommaaccent = 0x0136;
- t.Kdotbelow = 0x1e32;
- t.Keharmenian = 0x0554;
- t.Kenarmenian = 0x053f;
- t.Khacyrillic = 0x0425;
- t.Kheicoptic = 0x03e6;
- t.Khook = 0x0198;
- t.Kjecyrillic = 0x040c;
- t.Klinebelow = 0x1e34;
- t.Kmonospace = 0xff2b;
- t.Koppacyrillic = 0x0480;
- t.Koppagreek = 0x03de;
- t.Ksicyrillic = 0x046e;
- t.Ksmall = 0xf76b;
- t.L = 0x004c;
- t.LJ = 0x01c7;
- t.LL = 0xf6bf;
- t.Lacute = 0x0139;
- t.Lambda = 0x039b;
- t.Lcaron = 0x013d;
- t.Lcedilla = 0x013b;
- t.Lcircle = 0x24c1;
- t.Lcircumflexbelow = 0x1e3c;
- t.Lcommaaccent = 0x013b;
- t.Ldot = 0x013f;
- t.Ldotaccent = 0x013f;
- t.Ldotbelow = 0x1e36;
- t.Ldotbelowmacron = 0x1e38;
- t.Liwnarmenian = 0x053c;
- t.Lj = 0x01c8;
- t.Ljecyrillic = 0x0409;
- t.Llinebelow = 0x1e3a;
- t.Lmonospace = 0xff2c;
- t.Lslash = 0x0141;
- t.Lslashsmall = 0xf6f9;
- t.Lsmall = 0xf76c;
- t.M = 0x004d;
- t.MBsquare = 0x3386;
- t.Macron = 0xf6d0;
- t.Macronsmall = 0xf7af;
- t.Macute = 0x1e3e;
- t.Mcircle = 0x24c2;
- t.Mdotaccent = 0x1e40;
- t.Mdotbelow = 0x1e42;
- t.Menarmenian = 0x0544;
- t.Mmonospace = 0xff2d;
- t.Msmall = 0xf76d;
- t.Mturned = 0x019c;
- t.Mu = 0x039c;
- t.N = 0x004e;
- t.NJ = 0x01ca;
- t.Nacute = 0x0143;
- t.Ncaron = 0x0147;
- t.Ncedilla = 0x0145;
- t.Ncircle = 0x24c3;
- t.Ncircumflexbelow = 0x1e4a;
- t.Ncommaaccent = 0x0145;
- t.Ndotaccent = 0x1e44;
- t.Ndotbelow = 0x1e46;
- t.Nhookleft = 0x019d;
- t.Nineroman = 0x2168;
- t.Nj = 0x01cb;
- t.Njecyrillic = 0x040a;
- t.Nlinebelow = 0x1e48;
- t.Nmonospace = 0xff2e;
- t.Nowarmenian = 0x0546;
- t.Nsmall = 0xf76e;
- t.Ntilde = 0x00d1;
- t.Ntildesmall = 0xf7f1;
- t.Nu = 0x039d;
- t.O = 0x004f;
- t.OE = 0x0152;
- t.OEsmall = 0xf6fa;
- t.Oacute = 0x00d3;
- t.Oacutesmall = 0xf7f3;
- t.Obarredcyrillic = 0x04e8;
- t.Obarreddieresiscyrillic = 0x04ea;
- t.Obreve = 0x014e;
- t.Ocaron = 0x01d1;
- t.Ocenteredtilde = 0x019f;
- t.Ocircle = 0x24c4;
- t.Ocircumflex = 0x00d4;
- t.Ocircumflexacute = 0x1ed0;
- t.Ocircumflexdotbelow = 0x1ed8;
- t.Ocircumflexgrave = 0x1ed2;
- t.Ocircumflexhookabove = 0x1ed4;
- t.Ocircumflexsmall = 0xf7f4;
- t.Ocircumflextilde = 0x1ed6;
- t.Ocyrillic = 0x041e;
- t.Odblacute = 0x0150;
- t.Odblgrave = 0x020c;
- t.Odieresis = 0x00d6;
- t.Odieresiscyrillic = 0x04e6;
- t.Odieresissmall = 0xf7f6;
- t.Odotbelow = 0x1ecc;
- t.Ogoneksmall = 0xf6fb;
- t.Ograve = 0x00d2;
- t.Ogravesmall = 0xf7f2;
- t.Oharmenian = 0x0555;
- t.Ohm = 0x2126;
- t.Ohookabove = 0x1ece;
- t.Ohorn = 0x01a0;
- t.Ohornacute = 0x1eda;
- t.Ohorndotbelow = 0x1ee2;
- t.Ohorngrave = 0x1edc;
- t.Ohornhookabove = 0x1ede;
- t.Ohorntilde = 0x1ee0;
- t.Ohungarumlaut = 0x0150;
- t.Oi = 0x01a2;
- t.Oinvertedbreve = 0x020e;
- t.Omacron = 0x014c;
- t.Omacronacute = 0x1e52;
- t.Omacrongrave = 0x1e50;
- t.Omega = 0x2126;
- t.Omegacyrillic = 0x0460;
- t.Omegagreek = 0x03a9;
- t.Omegaroundcyrillic = 0x047a;
- t.Omegatitlocyrillic = 0x047c;
- t.Omegatonos = 0x038f;
- t.Omicron = 0x039f;
- t.Omicrontonos = 0x038c;
- t.Omonospace = 0xff2f;
- t.Oneroman = 0x2160;
- t.Oogonek = 0x01ea;
- t.Oogonekmacron = 0x01ec;
- t.Oopen = 0x0186;
- t.Oslash = 0x00d8;
- t.Oslashacute = 0x01fe;
- t.Oslashsmall = 0xf7f8;
- t.Osmall = 0xf76f;
- t.Ostrokeacute = 0x01fe;
- t.Otcyrillic = 0x047e;
- t.Otilde = 0x00d5;
- t.Otildeacute = 0x1e4c;
- t.Otildedieresis = 0x1e4e;
- t.Otildesmall = 0xf7f5;
- t.P = 0x0050;
- t.Pacute = 0x1e54;
- t.Pcircle = 0x24c5;
- t.Pdotaccent = 0x1e56;
- t.Pecyrillic = 0x041f;
- t.Peharmenian = 0x054a;
- t.Pemiddlehookcyrillic = 0x04a6;
- t.Phi = 0x03a6;
- t.Phook = 0x01a4;
- t.Pi = 0x03a0;
- t.Piwrarmenian = 0x0553;
- t.Pmonospace = 0xff30;
- t.Psi = 0x03a8;
- t.Psicyrillic = 0x0470;
- t.Psmall = 0xf770;
- t.Q = 0x0051;
- t.Qcircle = 0x24c6;
- t.Qmonospace = 0xff31;
- t.Qsmall = 0xf771;
- t.R = 0x0052;
- t.Raarmenian = 0x054c;
- t.Racute = 0x0154;
- t.Rcaron = 0x0158;
- t.Rcedilla = 0x0156;
- t.Rcircle = 0x24c7;
- t.Rcommaaccent = 0x0156;
- t.Rdblgrave = 0x0210;
- t.Rdotaccent = 0x1e58;
- t.Rdotbelow = 0x1e5a;
- t.Rdotbelowmacron = 0x1e5c;
- t.Reharmenian = 0x0550;
- t.Rfraktur = 0x211c;
- t.Rho = 0x03a1;
- t.Ringsmall = 0xf6fc;
- t.Rinvertedbreve = 0x0212;
- t.Rlinebelow = 0x1e5e;
- t.Rmonospace = 0xff32;
- t.Rsmall = 0xf772;
- t.Rsmallinverted = 0x0281;
- t.Rsmallinvertedsuperior = 0x02b6;
- t.S = 0x0053;
- t.SF010000 = 0x250c;
- t.SF020000 = 0x2514;
- t.SF030000 = 0x2510;
- t.SF040000 = 0x2518;
- t.SF050000 = 0x253c;
- t.SF060000 = 0x252c;
- t.SF070000 = 0x2534;
- t.SF080000 = 0x251c;
- t.SF090000 = 0x2524;
- t.SF100000 = 0x2500;
- t.SF110000 = 0x2502;
- t.SF190000 = 0x2561;
- t.SF200000 = 0x2562;
- t.SF210000 = 0x2556;
- t.SF220000 = 0x2555;
- t.SF230000 = 0x2563;
- t.SF240000 = 0x2551;
- t.SF250000 = 0x2557;
- t.SF260000 = 0x255d;
- t.SF270000 = 0x255c;
- t.SF280000 = 0x255b;
- t.SF360000 = 0x255e;
- t.SF370000 = 0x255f;
- t.SF380000 = 0x255a;
- t.SF390000 = 0x2554;
- t.SF400000 = 0x2569;
- t.SF410000 = 0x2566;
- t.SF420000 = 0x2560;
- t.SF430000 = 0x2550;
- t.SF440000 = 0x256c;
- t.SF450000 = 0x2567;
- t.SF460000 = 0x2568;
- t.SF470000 = 0x2564;
- t.SF480000 = 0x2565;
- t.SF490000 = 0x2559;
- t.SF500000 = 0x2558;
- t.SF510000 = 0x2552;
- t.SF520000 = 0x2553;
- t.SF530000 = 0x256b;
- t.SF540000 = 0x256a;
- t.Sacute = 0x015a;
- t.Sacutedotaccent = 0x1e64;
- t.Sampigreek = 0x03e0;
- t.Scaron = 0x0160;
- t.Scarondotaccent = 0x1e66;
- t.Scaronsmall = 0xf6fd;
- t.Scedilla = 0x015e;
- t.Schwa = 0x018f;
- t.Schwacyrillic = 0x04d8;
- t.Schwadieresiscyrillic = 0x04da;
- t.Scircle = 0x24c8;
- t.Scircumflex = 0x015c;
- t.Scommaaccent = 0x0218;
- t.Sdotaccent = 0x1e60;
- t.Sdotbelow = 0x1e62;
- t.Sdotbelowdotaccent = 0x1e68;
- t.Seharmenian = 0x054d;
- t.Sevenroman = 0x2166;
- t.Shaarmenian = 0x0547;
- t.Shacyrillic = 0x0428;
- t.Shchacyrillic = 0x0429;
- t.Sheicoptic = 0x03e2;
- t.Shhacyrillic = 0x04ba;
- t.Shimacoptic = 0x03ec;
- t.Sigma = 0x03a3;
- t.Sixroman = 0x2165;
- t.Smonospace = 0xff33;
- t.Softsigncyrillic = 0x042c;
- t.Ssmall = 0xf773;
- t.Stigmagreek = 0x03da;
- t.T = 0x0054;
- t.Tau = 0x03a4;
- t.Tbar = 0x0166;
- t.Tcaron = 0x0164;
- t.Tcedilla = 0x0162;
- t.Tcircle = 0x24c9;
- t.Tcircumflexbelow = 0x1e70;
- t.Tcommaaccent = 0x0162;
- t.Tdotaccent = 0x1e6a;
- t.Tdotbelow = 0x1e6c;
- t.Tecyrillic = 0x0422;
- t.Tedescendercyrillic = 0x04ac;
- t.Tenroman = 0x2169;
- t.Tetsecyrillic = 0x04b4;
- t.Theta = 0x0398;
- t.Thook = 0x01ac;
- t.Thorn = 0x00de;
- t.Thornsmall = 0xf7fe;
- t.Threeroman = 0x2162;
- t.Tildesmall = 0xf6fe;
- t.Tiwnarmenian = 0x054f;
- t.Tlinebelow = 0x1e6e;
- t.Tmonospace = 0xff34;
- t.Toarmenian = 0x0539;
- t.Tonefive = 0x01bc;
- t.Tonesix = 0x0184;
- t.Tonetwo = 0x01a7;
- t.Tretroflexhook = 0x01ae;
- t.Tsecyrillic = 0x0426;
- t.Tshecyrillic = 0x040b;
- t.Tsmall = 0xf774;
- t.Twelveroman = 0x216b;
- t.Tworoman = 0x2161;
- t.U = 0x0055;
- t.Uacute = 0x00da;
- t.Uacutesmall = 0xf7fa;
- t.Ubreve = 0x016c;
- t.Ucaron = 0x01d3;
- t.Ucircle = 0x24ca;
- t.Ucircumflex = 0x00db;
- t.Ucircumflexbelow = 0x1e76;
- t.Ucircumflexsmall = 0xf7fb;
- t.Ucyrillic = 0x0423;
- t.Udblacute = 0x0170;
- t.Udblgrave = 0x0214;
- t.Udieresis = 0x00dc;
- t.Udieresisacute = 0x01d7;
- t.Udieresisbelow = 0x1e72;
- t.Udieresiscaron = 0x01d9;
- t.Udieresiscyrillic = 0x04f0;
- t.Udieresisgrave = 0x01db;
- t.Udieresismacron = 0x01d5;
- t.Udieresissmall = 0xf7fc;
- t.Udotbelow = 0x1ee4;
- t.Ugrave = 0x00d9;
- t.Ugravesmall = 0xf7f9;
- t.Uhookabove = 0x1ee6;
- t.Uhorn = 0x01af;
- t.Uhornacute = 0x1ee8;
- t.Uhorndotbelow = 0x1ef0;
- t.Uhorngrave = 0x1eea;
- t.Uhornhookabove = 0x1eec;
- t.Uhorntilde = 0x1eee;
- t.Uhungarumlaut = 0x0170;
- t.Uhungarumlautcyrillic = 0x04f2;
- t.Uinvertedbreve = 0x0216;
- t.Ukcyrillic = 0x0478;
- t.Umacron = 0x016a;
- t.Umacroncyrillic = 0x04ee;
- t.Umacrondieresis = 0x1e7a;
- t.Umonospace = 0xff35;
- t.Uogonek = 0x0172;
- t.Upsilon = 0x03a5;
- t.Upsilon1 = 0x03d2;
- t.Upsilonacutehooksymbolgreek = 0x03d3;
- t.Upsilonafrican = 0x01b1;
- t.Upsilondieresis = 0x03ab;
- t.Upsilondieresishooksymbolgreek = 0x03d4;
- t.Upsilonhooksymbol = 0x03d2;
- t.Upsilontonos = 0x038e;
- t.Uring = 0x016e;
- t.Ushortcyrillic = 0x040e;
- t.Usmall = 0xf775;
- t.Ustraightcyrillic = 0x04ae;
- t.Ustraightstrokecyrillic = 0x04b0;
- t.Utilde = 0x0168;
- t.Utildeacute = 0x1e78;
- t.Utildebelow = 0x1e74;
- t.V = 0x0056;
- t.Vcircle = 0x24cb;
- t.Vdotbelow = 0x1e7e;
- t.Vecyrillic = 0x0412;
- t.Vewarmenian = 0x054e;
- t.Vhook = 0x01b2;
- t.Vmonospace = 0xff36;
- t.Voarmenian = 0x0548;
- t.Vsmall = 0xf776;
- t.Vtilde = 0x1e7c;
- t.W = 0x0057;
- t.Wacute = 0x1e82;
- t.Wcircle = 0x24cc;
- t.Wcircumflex = 0x0174;
- t.Wdieresis = 0x1e84;
- t.Wdotaccent = 0x1e86;
- t.Wdotbelow = 0x1e88;
- t.Wgrave = 0x1e80;
- t.Wmonospace = 0xff37;
- t.Wsmall = 0xf777;
- t.X = 0x0058;
- t.Xcircle = 0x24cd;
- t.Xdieresis = 0x1e8c;
- t.Xdotaccent = 0x1e8a;
- t.Xeharmenian = 0x053d;
- t.Xi = 0x039e;
- t.Xmonospace = 0xff38;
- t.Xsmall = 0xf778;
- t.Y = 0x0059;
- t.Yacute = 0x00dd;
- t.Yacutesmall = 0xf7fd;
- t.Yatcyrillic = 0x0462;
- t.Ycircle = 0x24ce;
- t.Ycircumflex = 0x0176;
- t.Ydieresis = 0x0178;
- t.Ydieresissmall = 0xf7ff;
- t.Ydotaccent = 0x1e8e;
- t.Ydotbelow = 0x1ef4;
- t.Yericyrillic = 0x042b;
- t.Yerudieresiscyrillic = 0x04f8;
- t.Ygrave = 0x1ef2;
- t.Yhook = 0x01b3;
- t.Yhookabove = 0x1ef6;
- t.Yiarmenian = 0x0545;
- t.Yicyrillic = 0x0407;
- t.Yiwnarmenian = 0x0552;
- t.Ymonospace = 0xff39;
- t.Ysmall = 0xf779;
- t.Ytilde = 0x1ef8;
- t.Yusbigcyrillic = 0x046a;
- t.Yusbigiotifiedcyrillic = 0x046c;
- t.Yuslittlecyrillic = 0x0466;
- t.Yuslittleiotifiedcyrillic = 0x0468;
- t.Z = 0x005a;
- t.Zaarmenian = 0x0536;
- t.Zacute = 0x0179;
- t.Zcaron = 0x017d;
- t.Zcaronsmall = 0xf6ff;
- t.Zcircle = 0x24cf;
- t.Zcircumflex = 0x1e90;
- t.Zdot = 0x017b;
- t.Zdotaccent = 0x017b;
- t.Zdotbelow = 0x1e92;
- t.Zecyrillic = 0x0417;
- t.Zedescendercyrillic = 0x0498;
- t.Zedieresiscyrillic = 0x04de;
- t.Zeta = 0x0396;
- t.Zhearmenian = 0x053a;
- t.Zhebrevecyrillic = 0x04c1;
- t.Zhecyrillic = 0x0416;
- t.Zhedescendercyrillic = 0x0496;
- t.Zhedieresiscyrillic = 0x04dc;
- t.Zlinebelow = 0x1e94;
- t.Zmonospace = 0xff3a;
- t.Zsmall = 0xf77a;
- t.Zstroke = 0x01b5;
- t.a = 0x0061;
- t.aabengali = 0x0986;
- t.aacute = 0x00e1;
- t.aadeva = 0x0906;
- t.aagujarati = 0x0a86;
- t.aagurmukhi = 0x0a06;
- t.aamatragurmukhi = 0x0a3e;
- t.aarusquare = 0x3303;
- t.aavowelsignbengali = 0x09be;
- t.aavowelsigndeva = 0x093e;
- t.aavowelsigngujarati = 0x0abe;
- t.abbreviationmarkarmenian = 0x055f;
- t.abbreviationsigndeva = 0x0970;
- t.abengali = 0x0985;
- t.abopomofo = 0x311a;
- t.abreve = 0x0103;
- t.abreveacute = 0x1eaf;
- t.abrevecyrillic = 0x04d1;
- t.abrevedotbelow = 0x1eb7;
- t.abrevegrave = 0x1eb1;
- t.abrevehookabove = 0x1eb3;
- t.abrevetilde = 0x1eb5;
- t.acaron = 0x01ce;
- t.acircle = 0x24d0;
- t.acircumflex = 0x00e2;
- t.acircumflexacute = 0x1ea5;
- t.acircumflexdotbelow = 0x1ead;
- t.acircumflexgrave = 0x1ea7;
- t.acircumflexhookabove = 0x1ea9;
- t.acircumflextilde = 0x1eab;
- t.acute = 0x00b4;
- t.acutebelowcmb = 0x0317;
- t.acutecmb = 0x0301;
- t.acutecomb = 0x0301;
- t.acutedeva = 0x0954;
- t.acutelowmod = 0x02cf;
- t.acutetonecmb = 0x0341;
- t.acyrillic = 0x0430;
- t.adblgrave = 0x0201;
- t.addakgurmukhi = 0x0a71;
- t.adeva = 0x0905;
- t.adieresis = 0x00e4;
- t.adieresiscyrillic = 0x04d3;
- t.adieresismacron = 0x01df;
- t.adotbelow = 0x1ea1;
- t.adotmacron = 0x01e1;
- t.ae = 0x00e6;
- t.aeacute = 0x01fd;
- t.aekorean = 0x3150;
- t.aemacron = 0x01e3;
- t.afii00208 = 0x2015;
- t.afii08941 = 0x20a4;
- t.afii10017 = 0x0410;
- t.afii10018 = 0x0411;
- t.afii10019 = 0x0412;
- t.afii10020 = 0x0413;
- t.afii10021 = 0x0414;
- t.afii10022 = 0x0415;
- t.afii10023 = 0x0401;
- t.afii10024 = 0x0416;
- t.afii10025 = 0x0417;
- t.afii10026 = 0x0418;
- t.afii10027 = 0x0419;
- t.afii10028 = 0x041a;
- t.afii10029 = 0x041b;
- t.afii10030 = 0x041c;
- t.afii10031 = 0x041d;
- t.afii10032 = 0x041e;
- t.afii10033 = 0x041f;
- t.afii10034 = 0x0420;
- t.afii10035 = 0x0421;
- t.afii10036 = 0x0422;
- t.afii10037 = 0x0423;
- t.afii10038 = 0x0424;
- t.afii10039 = 0x0425;
- t.afii10040 = 0x0426;
- t.afii10041 = 0x0427;
- t.afii10042 = 0x0428;
- t.afii10043 = 0x0429;
- t.afii10044 = 0x042a;
- t.afii10045 = 0x042b;
- t.afii10046 = 0x042c;
- t.afii10047 = 0x042d;
- t.afii10048 = 0x042e;
- t.afii10049 = 0x042f;
- t.afii10050 = 0x0490;
- t.afii10051 = 0x0402;
- t.afii10052 = 0x0403;
- t.afii10053 = 0x0404;
- t.afii10054 = 0x0405;
- t.afii10055 = 0x0406;
- t.afii10056 = 0x0407;
- t.afii10057 = 0x0408;
- t.afii10058 = 0x0409;
- t.afii10059 = 0x040a;
- t.afii10060 = 0x040b;
- t.afii10061 = 0x040c;
- t.afii10062 = 0x040e;
- t.afii10063 = 0xf6c4;
- t.afii10064 = 0xf6c5;
- t.afii10065 = 0x0430;
- t.afii10066 = 0x0431;
- t.afii10067 = 0x0432;
- t.afii10068 = 0x0433;
- t.afii10069 = 0x0434;
- t.afii10070 = 0x0435;
- t.afii10071 = 0x0451;
- t.afii10072 = 0x0436;
- t.afii10073 = 0x0437;
- t.afii10074 = 0x0438;
- t.afii10075 = 0x0439;
- t.afii10076 = 0x043a;
- t.afii10077 = 0x043b;
- t.afii10078 = 0x043c;
- t.afii10079 = 0x043d;
- t.afii10080 = 0x043e;
- t.afii10081 = 0x043f;
- t.afii10082 = 0x0440;
- t.afii10083 = 0x0441;
- t.afii10084 = 0x0442;
- t.afii10085 = 0x0443;
- t.afii10086 = 0x0444;
- t.afii10087 = 0x0445;
- t.afii10088 = 0x0446;
- t.afii10089 = 0x0447;
- t.afii10090 = 0x0448;
- t.afii10091 = 0x0449;
- t.afii10092 = 0x044a;
- t.afii10093 = 0x044b;
- t.afii10094 = 0x044c;
- t.afii10095 = 0x044d;
- t.afii10096 = 0x044e;
- t.afii10097 = 0x044f;
- t.afii10098 = 0x0491;
- t.afii10099 = 0x0452;
- t.afii10100 = 0x0453;
- t.afii10101 = 0x0454;
- t.afii10102 = 0x0455;
- t.afii10103 = 0x0456;
- t.afii10104 = 0x0457;
- t.afii10105 = 0x0458;
- t.afii10106 = 0x0459;
- t.afii10107 = 0x045a;
- t.afii10108 = 0x045b;
- t.afii10109 = 0x045c;
- t.afii10110 = 0x045e;
- t.afii10145 = 0x040f;
- t.afii10146 = 0x0462;
- t.afii10147 = 0x0472;
- t.afii10148 = 0x0474;
- t.afii10192 = 0xf6c6;
- t.afii10193 = 0x045f;
- t.afii10194 = 0x0463;
- t.afii10195 = 0x0473;
- t.afii10196 = 0x0475;
- t.afii10831 = 0xf6c7;
- t.afii10832 = 0xf6c8;
- t.afii10846 = 0x04d9;
- t.afii299 = 0x200e;
- t.afii300 = 0x200f;
- t.afii301 = 0x200d;
- t.afii57381 = 0x066a;
- t.afii57388 = 0x060c;
- t.afii57392 = 0x0660;
- t.afii57393 = 0x0661;
- t.afii57394 = 0x0662;
- t.afii57395 = 0x0663;
- t.afii57396 = 0x0664;
- t.afii57397 = 0x0665;
- t.afii57398 = 0x0666;
- t.afii57399 = 0x0667;
- t.afii57400 = 0x0668;
- t.afii57401 = 0x0669;
- t.afii57403 = 0x061b;
- t.afii57407 = 0x061f;
- t.afii57409 = 0x0621;
- t.afii57410 = 0x0622;
- t.afii57411 = 0x0623;
- t.afii57412 = 0x0624;
- t.afii57413 = 0x0625;
- t.afii57414 = 0x0626;
- t.afii57415 = 0x0627;
- t.afii57416 = 0x0628;
- t.afii57417 = 0x0629;
- t.afii57418 = 0x062a;
- t.afii57419 = 0x062b;
- t.afii57420 = 0x062c;
- t.afii57421 = 0x062d;
- t.afii57422 = 0x062e;
- t.afii57423 = 0x062f;
- t.afii57424 = 0x0630;
- t.afii57425 = 0x0631;
- t.afii57426 = 0x0632;
- t.afii57427 = 0x0633;
- t.afii57428 = 0x0634;
- t.afii57429 = 0x0635;
- t.afii57430 = 0x0636;
- t.afii57431 = 0x0637;
- t.afii57432 = 0x0638;
- t.afii57433 = 0x0639;
- t.afii57434 = 0x063a;
- t.afii57440 = 0x0640;
- t.afii57441 = 0x0641;
- t.afii57442 = 0x0642;
- t.afii57443 = 0x0643;
- t.afii57444 = 0x0644;
- t.afii57445 = 0x0645;
- t.afii57446 = 0x0646;
- t.afii57448 = 0x0648;
- t.afii57449 = 0x0649;
- t.afii57450 = 0x064a;
- t.afii57451 = 0x064b;
- t.afii57452 = 0x064c;
- t.afii57453 = 0x064d;
- t.afii57454 = 0x064e;
- t.afii57455 = 0x064f;
- t.afii57456 = 0x0650;
- t.afii57457 = 0x0651;
- t.afii57458 = 0x0652;
- t.afii57470 = 0x0647;
- t.afii57505 = 0x06a4;
- t.afii57506 = 0x067e;
- t.afii57507 = 0x0686;
- t.afii57508 = 0x0698;
- t.afii57509 = 0x06af;
- t.afii57511 = 0x0679;
- t.afii57512 = 0x0688;
- t.afii57513 = 0x0691;
- t.afii57514 = 0x06ba;
- t.afii57519 = 0x06d2;
- t.afii57534 = 0x06d5;
- t.afii57636 = 0x20aa;
- t.afii57645 = 0x05be;
- t.afii57658 = 0x05c3;
- t.afii57664 = 0x05d0;
- t.afii57665 = 0x05d1;
- t.afii57666 = 0x05d2;
- t.afii57667 = 0x05d3;
- t.afii57668 = 0x05d4;
- t.afii57669 = 0x05d5;
- t.afii57670 = 0x05d6;
- t.afii57671 = 0x05d7;
- t.afii57672 = 0x05d8;
- t.afii57673 = 0x05d9;
- t.afii57674 = 0x05da;
- t.afii57675 = 0x05db;
- t.afii57676 = 0x05dc;
- t.afii57677 = 0x05dd;
- t.afii57678 = 0x05de;
- t.afii57679 = 0x05df;
- t.afii57680 = 0x05e0;
- t.afii57681 = 0x05e1;
- t.afii57682 = 0x05e2;
- t.afii57683 = 0x05e3;
- t.afii57684 = 0x05e4;
- t.afii57685 = 0x05e5;
- t.afii57686 = 0x05e6;
- t.afii57687 = 0x05e7;
- t.afii57688 = 0x05e8;
- t.afii57689 = 0x05e9;
- t.afii57690 = 0x05ea;
- t.afii57694 = 0xfb2a;
- t.afii57695 = 0xfb2b;
- t.afii57700 = 0xfb4b;
- t.afii57705 = 0xfb1f;
- t.afii57716 = 0x05f0;
- t.afii57717 = 0x05f1;
- t.afii57718 = 0x05f2;
- t.afii57723 = 0xfb35;
- t.afii57793 = 0x05b4;
- t.afii57794 = 0x05b5;
- t.afii57795 = 0x05b6;
- t.afii57796 = 0x05bb;
- t.afii57797 = 0x05b8;
- t.afii57798 = 0x05b7;
- t.afii57799 = 0x05b0;
- t.afii57800 = 0x05b2;
- t.afii57801 = 0x05b1;
- t.afii57802 = 0x05b3;
- t.afii57803 = 0x05c2;
- t.afii57804 = 0x05c1;
- t.afii57806 = 0x05b9;
- t.afii57807 = 0x05bc;
- t.afii57839 = 0x05bd;
- t.afii57841 = 0x05bf;
- t.afii57842 = 0x05c0;
- t.afii57929 = 0x02bc;
- t.afii61248 = 0x2105;
- t.afii61289 = 0x2113;
- t.afii61352 = 0x2116;
- t.afii61573 = 0x202c;
- t.afii61574 = 0x202d;
- t.afii61575 = 0x202e;
- t.afii61664 = 0x200c;
- t.afii63167 = 0x066d;
- t.afii64937 = 0x02bd;
- t.agrave = 0x00e0;
- t.agujarati = 0x0a85;
- t.agurmukhi = 0x0a05;
- t.ahiragana = 0x3042;
- t.ahookabove = 0x1ea3;
- t.aibengali = 0x0990;
- t.aibopomofo = 0x311e;
- t.aideva = 0x0910;
- t.aiecyrillic = 0x04d5;
- t.aigujarati = 0x0a90;
- t.aigurmukhi = 0x0a10;
- t.aimatragurmukhi = 0x0a48;
- t.ainarabic = 0x0639;
- t.ainfinalarabic = 0xfeca;
- t.aininitialarabic = 0xfecb;
- t.ainmedialarabic = 0xfecc;
- t.ainvertedbreve = 0x0203;
- t.aivowelsignbengali = 0x09c8;
- t.aivowelsigndeva = 0x0948;
- t.aivowelsigngujarati = 0x0ac8;
- t.akatakana = 0x30a2;
- t.akatakanahalfwidth = 0xff71;
- t.akorean = 0x314f;
- t.alef = 0x05d0;
- t.alefarabic = 0x0627;
- t.alefdageshhebrew = 0xfb30;
- t.aleffinalarabic = 0xfe8e;
- t.alefhamzaabovearabic = 0x0623;
- t.alefhamzaabovefinalarabic = 0xfe84;
- t.alefhamzabelowarabic = 0x0625;
- t.alefhamzabelowfinalarabic = 0xfe88;
- t.alefhebrew = 0x05d0;
- t.aleflamedhebrew = 0xfb4f;
- t.alefmaddaabovearabic = 0x0622;
- t.alefmaddaabovefinalarabic = 0xfe82;
- t.alefmaksuraarabic = 0x0649;
- t.alefmaksurafinalarabic = 0xfef0;
- t.alefmaksurainitialarabic = 0xfef3;
- t.alefmaksuramedialarabic = 0xfef4;
- t.alefpatahhebrew = 0xfb2e;
- t.alefqamatshebrew = 0xfb2f;
- t.aleph = 0x2135;
- t.allequal = 0x224c;
- t.alpha = 0x03b1;
- t.alphatonos = 0x03ac;
- t.amacron = 0x0101;
- t.amonospace = 0xff41;
- t.ampersand = 0x0026;
- t.ampersandmonospace = 0xff06;
- t.ampersandsmall = 0xf726;
- t.amsquare = 0x33c2;
- t.anbopomofo = 0x3122;
- t.angbopomofo = 0x3124;
- t.angbracketleft = 0x3008;
- t.angbracketright = 0x3009;
- t.angkhankhuthai = 0x0e5a;
- t.angle = 0x2220;
- t.anglebracketleft = 0x3008;
- t.anglebracketleftvertical = 0xfe3f;
- t.anglebracketright = 0x3009;
- t.anglebracketrightvertical = 0xfe40;
- t.angleleft = 0x2329;
- t.angleright = 0x232a;
- t.angstrom = 0x212b;
- t.anoteleia = 0x0387;
- t.anudattadeva = 0x0952;
- t.anusvarabengali = 0x0982;
- t.anusvaradeva = 0x0902;
- t.anusvaragujarati = 0x0a82;
- t.aogonek = 0x0105;
- t.apaatosquare = 0x3300;
- t.aparen = 0x249c;
- t.apostrophearmenian = 0x055a;
- t.apostrophemod = 0x02bc;
- t.apple = 0xf8ff;
- t.approaches = 0x2250;
- t.approxequal = 0x2248;
- t.approxequalorimage = 0x2252;
- t.approximatelyequal = 0x2245;
- t.araeaekorean = 0x318e;
- t.araeakorean = 0x318d;
- t.arc = 0x2312;
- t.arighthalfring = 0x1e9a;
- t.aring = 0x00e5;
- t.aringacute = 0x01fb;
- t.aringbelow = 0x1e01;
- t.arrowboth = 0x2194;
- t.arrowdashdown = 0x21e3;
- t.arrowdashleft = 0x21e0;
- t.arrowdashright = 0x21e2;
- t.arrowdashup = 0x21e1;
- t.arrowdblboth = 0x21d4;
- t.arrowdbldown = 0x21d3;
- t.arrowdblleft = 0x21d0;
- t.arrowdblright = 0x21d2;
- t.arrowdblup = 0x21d1;
- t.arrowdown = 0x2193;
- t.arrowdownleft = 0x2199;
- t.arrowdownright = 0x2198;
- t.arrowdownwhite = 0x21e9;
- t.arrowheaddownmod = 0x02c5;
- t.arrowheadleftmod = 0x02c2;
- t.arrowheadrightmod = 0x02c3;
- t.arrowheadupmod = 0x02c4;
- t.arrowhorizex = 0xf8e7;
- t.arrowleft = 0x2190;
- t.arrowleftdbl = 0x21d0;
- t.arrowleftdblstroke = 0x21cd;
- t.arrowleftoverright = 0x21c6;
- t.arrowleftwhite = 0x21e6;
- t.arrowright = 0x2192;
- t.arrowrightdblstroke = 0x21cf;
- t.arrowrightheavy = 0x279e;
- t.arrowrightoverleft = 0x21c4;
- t.arrowrightwhite = 0x21e8;
- t.arrowtableft = 0x21e4;
- t.arrowtabright = 0x21e5;
- t.arrowup = 0x2191;
- t.arrowupdn = 0x2195;
- t.arrowupdnbse = 0x21a8;
- t.arrowupdownbase = 0x21a8;
- t.arrowupleft = 0x2196;
- t.arrowupleftofdown = 0x21c5;
- t.arrowupright = 0x2197;
- t.arrowupwhite = 0x21e7;
- t.arrowvertex = 0xf8e6;
- t.asciicircum = 0x005e;
- t.asciicircummonospace = 0xff3e;
- t.asciitilde = 0x007e;
- t.asciitildemonospace = 0xff5e;
- t.ascript = 0x0251;
- t.ascriptturned = 0x0252;
- t.asmallhiragana = 0x3041;
- t.asmallkatakana = 0x30a1;
- t.asmallkatakanahalfwidth = 0xff67;
- t.asterisk = 0x002a;
- t.asteriskaltonearabic = 0x066d;
- t.asteriskarabic = 0x066d;
- t.asteriskmath = 0x2217;
- t.asteriskmonospace = 0xff0a;
- t.asterisksmall = 0xfe61;
- t.asterism = 0x2042;
- t.asuperior = 0xf6e9;
- t.asymptoticallyequal = 0x2243;
- t.at = 0x0040;
- t.atilde = 0x00e3;
- t.atmonospace = 0xff20;
- t.atsmall = 0xfe6b;
- t.aturned = 0x0250;
- t.aubengali = 0x0994;
- t.aubopomofo = 0x3120;
- t.audeva = 0x0914;
- t.augujarati = 0x0a94;
- t.augurmukhi = 0x0a14;
- t.aulengthmarkbengali = 0x09d7;
- t.aumatragurmukhi = 0x0a4c;
- t.auvowelsignbengali = 0x09cc;
- t.auvowelsigndeva = 0x094c;
- t.auvowelsigngujarati = 0x0acc;
- t.avagrahadeva = 0x093d;
- t.aybarmenian = 0x0561;
- t.ayin = 0x05e2;
- t.ayinaltonehebrew = 0xfb20;
- t.ayinhebrew = 0x05e2;
- t.b = 0x0062;
- t.babengali = 0x09ac;
- t.backslash = 0x005c;
- t.backslashmonospace = 0xff3c;
- t.badeva = 0x092c;
- t.bagujarati = 0x0aac;
- t.bagurmukhi = 0x0a2c;
- t.bahiragana = 0x3070;
- t.bahtthai = 0x0e3f;
- t.bakatakana = 0x30d0;
- t.bar = 0x007c;
- t.barmonospace = 0xff5c;
- t.bbopomofo = 0x3105;
- t.bcircle = 0x24d1;
- t.bdotaccent = 0x1e03;
- t.bdotbelow = 0x1e05;
- t.beamedsixteenthnotes = 0x266c;
- t.because = 0x2235;
- t.becyrillic = 0x0431;
- t.beharabic = 0x0628;
- t.behfinalarabic = 0xfe90;
- t.behinitialarabic = 0xfe91;
- t.behiragana = 0x3079;
- t.behmedialarabic = 0xfe92;
- t.behmeeminitialarabic = 0xfc9f;
- t.behmeemisolatedarabic = 0xfc08;
- t.behnoonfinalarabic = 0xfc6d;
- t.bekatakana = 0x30d9;
- t.benarmenian = 0x0562;
- t.bet = 0x05d1;
- t.beta = 0x03b2;
- t.betasymbolgreek = 0x03d0;
- t.betdagesh = 0xfb31;
- t.betdageshhebrew = 0xfb31;
- t.bethebrew = 0x05d1;
- t.betrafehebrew = 0xfb4c;
- t.bhabengali = 0x09ad;
- t.bhadeva = 0x092d;
- t.bhagujarati = 0x0aad;
- t.bhagurmukhi = 0x0a2d;
- t.bhook = 0x0253;
- t.bihiragana = 0x3073;
- t.bikatakana = 0x30d3;
- t.bilabialclick = 0x0298;
- t.bindigurmukhi = 0x0a02;
- t.birusquare = 0x3331;
- t.blackcircle = 0x25cf;
- t.blackdiamond = 0x25c6;
- t.blackdownpointingtriangle = 0x25bc;
- t.blackleftpointingpointer = 0x25c4;
- t.blackleftpointingtriangle = 0x25c0;
- t.blacklenticularbracketleft = 0x3010;
- t.blacklenticularbracketleftvertical = 0xfe3b;
- t.blacklenticularbracketright = 0x3011;
- t.blacklenticularbracketrightvertical = 0xfe3c;
- t.blacklowerlefttriangle = 0x25e3;
- t.blacklowerrighttriangle = 0x25e2;
- t.blackrectangle = 0x25ac;
- t.blackrightpointingpointer = 0x25ba;
- t.blackrightpointingtriangle = 0x25b6;
- t.blacksmallsquare = 0x25aa;
- t.blacksmilingface = 0x263b;
- t.blacksquare = 0x25a0;
- t.blackstar = 0x2605;
- t.blackupperlefttriangle = 0x25e4;
- t.blackupperrighttriangle = 0x25e5;
- t.blackuppointingsmalltriangle = 0x25b4;
- t.blackuppointingtriangle = 0x25b2;
- t.blank = 0x2423;
- t.blinebelow = 0x1e07;
- t.block = 0x2588;
- t.bmonospace = 0xff42;
- t.bobaimaithai = 0x0e1a;
- t.bohiragana = 0x307c;
- t.bokatakana = 0x30dc;
- t.bparen = 0x249d;
- t.bqsquare = 0x33c3;
- t.braceex = 0xf8f4;
- t.braceleft = 0x007b;
- t.braceleftbt = 0xf8f3;
- t.braceleftmid = 0xf8f2;
- t.braceleftmonospace = 0xff5b;
- t.braceleftsmall = 0xfe5b;
- t.bracelefttp = 0xf8f1;
- t.braceleftvertical = 0xfe37;
- t.braceright = 0x007d;
- t.bracerightbt = 0xf8fe;
- t.bracerightmid = 0xf8fd;
- t.bracerightmonospace = 0xff5d;
- t.bracerightsmall = 0xfe5c;
- t.bracerighttp = 0xf8fc;
- t.bracerightvertical = 0xfe38;
- t.bracketleft = 0x005b;
- t.bracketleftbt = 0xf8f0;
- t.bracketleftex = 0xf8ef;
- t.bracketleftmonospace = 0xff3b;
- t.bracketlefttp = 0xf8ee;
- t.bracketright = 0x005d;
- t.bracketrightbt = 0xf8fb;
- t.bracketrightex = 0xf8fa;
- t.bracketrightmonospace = 0xff3d;
- t.bracketrighttp = 0xf8f9;
- t.breve = 0x02d8;
- t.brevebelowcmb = 0x032e;
- t.brevecmb = 0x0306;
- t.breveinvertedbelowcmb = 0x032f;
- t.breveinvertedcmb = 0x0311;
- t.breveinverteddoublecmb = 0x0361;
- t.bridgebelowcmb = 0x032a;
- t.bridgeinvertedbelowcmb = 0x033a;
- t.brokenbar = 0x00a6;
- t.bstroke = 0x0180;
- t.bsuperior = 0xf6ea;
- t.btopbar = 0x0183;
- t.buhiragana = 0x3076;
- t.bukatakana = 0x30d6;
- t.bullet = 0x2022;
- t.bulletinverse = 0x25d8;
- t.bulletoperator = 0x2219;
- t.bullseye = 0x25ce;
- t.c = 0x0063;
- t.caarmenian = 0x056e;
- t.cabengali = 0x099a;
- t.cacute = 0x0107;
- t.cadeva = 0x091a;
- t.cagujarati = 0x0a9a;
- t.cagurmukhi = 0x0a1a;
- t.calsquare = 0x3388;
- t.candrabindubengali = 0x0981;
- t.candrabinducmb = 0x0310;
- t.candrabindudeva = 0x0901;
- t.candrabindugujarati = 0x0a81;
- t.capslock = 0x21ea;
- t.careof = 0x2105;
- t.caron = 0x02c7;
- t.caronbelowcmb = 0x032c;
- t.caroncmb = 0x030c;
- t.carriagereturn = 0x21b5;
- t.cbopomofo = 0x3118;
- t.ccaron = 0x010d;
- t.ccedilla = 0x00e7;
- t.ccedillaacute = 0x1e09;
- t.ccircle = 0x24d2;
- t.ccircumflex = 0x0109;
- t.ccurl = 0x0255;
- t.cdot = 0x010b;
- t.cdotaccent = 0x010b;
- t.cdsquare = 0x33c5;
- t.cedilla = 0x00b8;
- t.cedillacmb = 0x0327;
- t.cent = 0x00a2;
- t.centigrade = 0x2103;
- t.centinferior = 0xf6df;
- t.centmonospace = 0xffe0;
- t.centoldstyle = 0xf7a2;
- t.centsuperior = 0xf6e0;
- t.chaarmenian = 0x0579;
- t.chabengali = 0x099b;
- t.chadeva = 0x091b;
- t.chagujarati = 0x0a9b;
- t.chagurmukhi = 0x0a1b;
- t.chbopomofo = 0x3114;
- t.cheabkhasiancyrillic = 0x04bd;
- t.checkmark = 0x2713;
- t.checyrillic = 0x0447;
- t.chedescenderabkhasiancyrillic = 0x04bf;
- t.chedescendercyrillic = 0x04b7;
- t.chedieresiscyrillic = 0x04f5;
- t.cheharmenian = 0x0573;
- t.chekhakassiancyrillic = 0x04cc;
- t.cheverticalstrokecyrillic = 0x04b9;
- t.chi = 0x03c7;
- t.chieuchacirclekorean = 0x3277;
- t.chieuchaparenkorean = 0x3217;
- t.chieuchcirclekorean = 0x3269;
- t.chieuchkorean = 0x314a;
- t.chieuchparenkorean = 0x3209;
- t.chochangthai = 0x0e0a;
- t.chochanthai = 0x0e08;
- t.chochingthai = 0x0e09;
- t.chochoethai = 0x0e0c;
- t.chook = 0x0188;
- t.cieucacirclekorean = 0x3276;
- t.cieucaparenkorean = 0x3216;
- t.cieuccirclekorean = 0x3268;
- t.cieuckorean = 0x3148;
- t.cieucparenkorean = 0x3208;
- t.cieucuparenkorean = 0x321c;
- t.circle = 0x25cb;
- t.circlecopyrt = 0x00a9;
- t.circlemultiply = 0x2297;
- t.circleot = 0x2299;
- t.circleplus = 0x2295;
- t.circlepostalmark = 0x3036;
- t.circlewithlefthalfblack = 0x25d0;
- t.circlewithrighthalfblack = 0x25d1;
- t.circumflex = 0x02c6;
- t.circumflexbelowcmb = 0x032d;
- t.circumflexcmb = 0x0302;
- t.clear = 0x2327;
- t.clickalveolar = 0x01c2;
- t.clickdental = 0x01c0;
- t.clicklateral = 0x01c1;
- t.clickretroflex = 0x01c3;
- t.club = 0x2663;
- t.clubsuitblack = 0x2663;
- t.clubsuitwhite = 0x2667;
- t.cmcubedsquare = 0x33a4;
- t.cmonospace = 0xff43;
- t.cmsquaredsquare = 0x33a0;
- t.coarmenian = 0x0581;
- t.colon = 0x003a;
- t.colonmonetary = 0x20a1;
- t.colonmonospace = 0xff1a;
- t.colonsign = 0x20a1;
- t.colonsmall = 0xfe55;
- t.colontriangularhalfmod = 0x02d1;
- t.colontriangularmod = 0x02d0;
- t.comma = 0x002c;
- t.commaabovecmb = 0x0313;
- t.commaaboverightcmb = 0x0315;
- t.commaaccent = 0xf6c3;
- t.commaarabic = 0x060c;
- t.commaarmenian = 0x055d;
- t.commainferior = 0xf6e1;
- t.commamonospace = 0xff0c;
- t.commareversedabovecmb = 0x0314;
- t.commareversedmod = 0x02bd;
- t.commasmall = 0xfe50;
- t.commasuperior = 0xf6e2;
- t.commaturnedabovecmb = 0x0312;
- t.commaturnedmod = 0x02bb;
- t.compass = 0x263c;
- t.congruent = 0x2245;
- t.contourintegral = 0x222e;
- t.control = 0x2303;
- t.controlACK = 0x0006;
- t.controlBEL = 0x0007;
- t.controlBS = 0x0008;
- t.controlCAN = 0x0018;
- t.controlCR = 0x000d;
- t.controlDC1 = 0x0011;
- t.controlDC2 = 0x0012;
- t.controlDC3 = 0x0013;
- t.controlDC4 = 0x0014;
- t.controlDEL = 0x007f;
- t.controlDLE = 0x0010;
- t.controlEM = 0x0019;
- t.controlENQ = 0x0005;
- t.controlEOT = 0x0004;
- t.controlESC = 0x001b;
- t.controlETB = 0x0017;
- t.controlETX = 0x0003;
- t.controlFF = 0x000c;
- t.controlFS = 0x001c;
- t.controlGS = 0x001d;
- t.controlHT = 0x0009;
- t.controlLF = 0x000a;
- t.controlNAK = 0x0015;
- t.controlNULL = 0x0000;
- t.controlRS = 0x001e;
- t.controlSI = 0x000f;
- t.controlSO = 0x000e;
- t.controlSOT = 0x0002;
- t.controlSTX = 0x0001;
- t.controlSUB = 0x001a;
- t.controlSYN = 0x0016;
- t.controlUS = 0x001f;
- t.controlVT = 0x000b;
- t.copyright = 0x00a9;
- t.copyrightsans = 0xf8e9;
- t.copyrightserif = 0xf6d9;
- t.cornerbracketleft = 0x300c;
- t.cornerbracketlefthalfwidth = 0xff62;
- t.cornerbracketleftvertical = 0xfe41;
- t.cornerbracketright = 0x300d;
- t.cornerbracketrighthalfwidth = 0xff63;
- t.cornerbracketrightvertical = 0xfe42;
- t.corporationsquare = 0x337f;
- t.cosquare = 0x33c7;
- t.coverkgsquare = 0x33c6;
- t.cparen = 0x249e;
- t.cruzeiro = 0x20a2;
- t.cstretched = 0x0297;
- t.curlyand = 0x22cf;
- t.curlyor = 0x22ce;
- t.currency = 0x00a4;
- t.cyrBreve = 0xf6d1;
- t.cyrFlex = 0xf6d2;
- t.cyrbreve = 0xf6d4;
- t.cyrflex = 0xf6d5;
- t.d = 0x0064;
- t.daarmenian = 0x0564;
- t.dabengali = 0x09a6;
- t.dadarabic = 0x0636;
- t.dadeva = 0x0926;
- t.dadfinalarabic = 0xfebe;
- t.dadinitialarabic = 0xfebf;
- t.dadmedialarabic = 0xfec0;
- t.dagesh = 0x05bc;
- t.dageshhebrew = 0x05bc;
- t.dagger = 0x2020;
- t.daggerdbl = 0x2021;
- t.dagujarati = 0x0aa6;
- t.dagurmukhi = 0x0a26;
- t.dahiragana = 0x3060;
- t.dakatakana = 0x30c0;
- t.dalarabic = 0x062f;
- t.dalet = 0x05d3;
- t.daletdagesh = 0xfb33;
- t.daletdageshhebrew = 0xfb33;
- t.dalethebrew = 0x05d3;
- t.dalfinalarabic = 0xfeaa;
- t.dammaarabic = 0x064f;
- t.dammalowarabic = 0x064f;
- t.dammatanaltonearabic = 0x064c;
- t.dammatanarabic = 0x064c;
- t.danda = 0x0964;
- t.dargahebrew = 0x05a7;
- t.dargalefthebrew = 0x05a7;
- t.dasiapneumatacyrilliccmb = 0x0485;
- t.dblGrave = 0xf6d3;
- t.dblanglebracketleft = 0x300a;
- t.dblanglebracketleftvertical = 0xfe3d;
- t.dblanglebracketright = 0x300b;
- t.dblanglebracketrightvertical = 0xfe3e;
- t.dblarchinvertedbelowcmb = 0x032b;
- t.dblarrowleft = 0x21d4;
- t.dblarrowright = 0x21d2;
- t.dbldanda = 0x0965;
- t.dblgrave = 0xf6d6;
- t.dblgravecmb = 0x030f;
- t.dblintegral = 0x222c;
- t.dbllowline = 0x2017;
- t.dbllowlinecmb = 0x0333;
- t.dbloverlinecmb = 0x033f;
- t.dblprimemod = 0x02ba;
- t.dblverticalbar = 0x2016;
- t.dblverticallineabovecmb = 0x030e;
- t.dbopomofo = 0x3109;
- t.dbsquare = 0x33c8;
- t.dcaron = 0x010f;
- t.dcedilla = 0x1e11;
- t.dcircle = 0x24d3;
- t.dcircumflexbelow = 0x1e13;
- t.dcroat = 0x0111;
- t.ddabengali = 0x09a1;
- t.ddadeva = 0x0921;
- t.ddagujarati = 0x0aa1;
- t.ddagurmukhi = 0x0a21;
- t.ddalarabic = 0x0688;
- t.ddalfinalarabic = 0xfb89;
- t.dddhadeva = 0x095c;
- t.ddhabengali = 0x09a2;
- t.ddhadeva = 0x0922;
- t.ddhagujarati = 0x0aa2;
- t.ddhagurmukhi = 0x0a22;
- t.ddotaccent = 0x1e0b;
- t.ddotbelow = 0x1e0d;
- t.decimalseparatorarabic = 0x066b;
- t.decimalseparatorpersian = 0x066b;
- t.decyrillic = 0x0434;
- t.degree = 0x00b0;
- t.dehihebrew = 0x05ad;
- t.dehiragana = 0x3067;
- t.deicoptic = 0x03ef;
- t.dekatakana = 0x30c7;
- t.deleteleft = 0x232b;
- t.deleteright = 0x2326;
- t.delta = 0x03b4;
- t.deltaturned = 0x018d;
- t.denominatorminusonenumeratorbengali = 0x09f8;
- t.dezh = 0x02a4;
- t.dhabengali = 0x09a7;
- t.dhadeva = 0x0927;
- t.dhagujarati = 0x0aa7;
- t.dhagurmukhi = 0x0a27;
- t.dhook = 0x0257;
- t.dialytikatonos = 0x0385;
- t.dialytikatonoscmb = 0x0344;
- t.diamond = 0x2666;
- t.diamondsuitwhite = 0x2662;
- t.dieresis = 0x00a8;
- t.dieresisacute = 0xf6d7;
- t.dieresisbelowcmb = 0x0324;
- t.dieresiscmb = 0x0308;
- t.dieresisgrave = 0xf6d8;
- t.dieresistonos = 0x0385;
- t.dihiragana = 0x3062;
- t.dikatakana = 0x30c2;
- t.dittomark = 0x3003;
- t.divide = 0x00f7;
- t.divides = 0x2223;
- t.divisionslash = 0x2215;
- t.djecyrillic = 0x0452;
- t.dkshade = 0x2593;
- t.dlinebelow = 0x1e0f;
- t.dlsquare = 0x3397;
- t.dmacron = 0x0111;
- t.dmonospace = 0xff44;
- t.dnblock = 0x2584;
- t.dochadathai = 0x0e0e;
- t.dodekthai = 0x0e14;
- t.dohiragana = 0x3069;
- t.dokatakana = 0x30c9;
- t.dollar = 0x0024;
- t.dollarinferior = 0xf6e3;
- t.dollarmonospace = 0xff04;
- t.dollaroldstyle = 0xf724;
- t.dollarsmall = 0xfe69;
- t.dollarsuperior = 0xf6e4;
- t.dong = 0x20ab;
- t.dorusquare = 0x3326;
- t.dotaccent = 0x02d9;
- t.dotaccentcmb = 0x0307;
- t.dotbelowcmb = 0x0323;
- t.dotbelowcomb = 0x0323;
- t.dotkatakana = 0x30fb;
- t.dotlessi = 0x0131;
- t.dotlessj = 0xf6be;
- t.dotlessjstrokehook = 0x0284;
- t.dotmath = 0x22c5;
- t.dottedcircle = 0x25cc;
- t.doubleyodpatah = 0xfb1f;
- t.doubleyodpatahhebrew = 0xfb1f;
- t.downtackbelowcmb = 0x031e;
- t.downtackmod = 0x02d5;
- t.dparen = 0x249f;
- t.dsuperior = 0xf6eb;
- t.dtail = 0x0256;
- t.dtopbar = 0x018c;
- t.duhiragana = 0x3065;
- t.dukatakana = 0x30c5;
- t.dz = 0x01f3;
- t.dzaltone = 0x02a3;
- t.dzcaron = 0x01c6;
- t.dzcurl = 0x02a5;
- t.dzeabkhasiancyrillic = 0x04e1;
- t.dzecyrillic = 0x0455;
- t.dzhecyrillic = 0x045f;
- t.e = 0x0065;
- t.eacute = 0x00e9;
- t.earth = 0x2641;
- t.ebengali = 0x098f;
- t.ebopomofo = 0x311c;
- t.ebreve = 0x0115;
- t.ecandradeva = 0x090d;
- t.ecandragujarati = 0x0a8d;
- t.ecandravowelsigndeva = 0x0945;
- t.ecandravowelsigngujarati = 0x0ac5;
- t.ecaron = 0x011b;
- t.ecedillabreve = 0x1e1d;
- t.echarmenian = 0x0565;
- t.echyiwnarmenian = 0x0587;
- t.ecircle = 0x24d4;
- t.ecircumflex = 0x00ea;
- t.ecircumflexacute = 0x1ebf;
- t.ecircumflexbelow = 0x1e19;
- t.ecircumflexdotbelow = 0x1ec7;
- t.ecircumflexgrave = 0x1ec1;
- t.ecircumflexhookabove = 0x1ec3;
- t.ecircumflextilde = 0x1ec5;
- t.ecyrillic = 0x0454;
- t.edblgrave = 0x0205;
- t.edeva = 0x090f;
- t.edieresis = 0x00eb;
- t.edot = 0x0117;
- t.edotaccent = 0x0117;
- t.edotbelow = 0x1eb9;
- t.eegurmukhi = 0x0a0f;
- t.eematragurmukhi = 0x0a47;
- t.efcyrillic = 0x0444;
- t.egrave = 0x00e8;
- t.egujarati = 0x0a8f;
- t.eharmenian = 0x0567;
- t.ehbopomofo = 0x311d;
- t.ehiragana = 0x3048;
- t.ehookabove = 0x1ebb;
- t.eibopomofo = 0x311f;
- t.eight = 0x0038;
- t.eightarabic = 0x0668;
- t.eightbengali = 0x09ee;
- t.eightcircle = 0x2467;
- t.eightcircleinversesansserif = 0x2791;
- t.eightdeva = 0x096e;
- t.eighteencircle = 0x2471;
- t.eighteenparen = 0x2485;
- t.eighteenperiod = 0x2499;
- t.eightgujarati = 0x0aee;
- t.eightgurmukhi = 0x0a6e;
- t.eighthackarabic = 0x0668;
- t.eighthangzhou = 0x3028;
- t.eighthnotebeamed = 0x266b;
- t.eightideographicparen = 0x3227;
- t.eightinferior = 0x2088;
- t.eightmonospace = 0xff18;
- t.eightoldstyle = 0xf738;
- t.eightparen = 0x247b;
- t.eightperiod = 0x248f;
- t.eightpersian = 0x06f8;
- t.eightroman = 0x2177;
- t.eightsuperior = 0x2078;
- t.eightthai = 0x0e58;
- t.einvertedbreve = 0x0207;
- t.eiotifiedcyrillic = 0x0465;
- t.ekatakana = 0x30a8;
- t.ekatakanahalfwidth = 0xff74;
- t.ekonkargurmukhi = 0x0a74;
- t.ekorean = 0x3154;
- t.elcyrillic = 0x043b;
- t.element = 0x2208;
- t.elevencircle = 0x246a;
- t.elevenparen = 0x247e;
- t.elevenperiod = 0x2492;
- t.elevenroman = 0x217a;
- t.ellipsis = 0x2026;
- t.ellipsisvertical = 0x22ee;
- t.emacron = 0x0113;
- t.emacronacute = 0x1e17;
- t.emacrongrave = 0x1e15;
- t.emcyrillic = 0x043c;
- t.emdash = 0x2014;
- t.emdashvertical = 0xfe31;
- t.emonospace = 0xff45;
- t.emphasismarkarmenian = 0x055b;
- t.emptyset = 0x2205;
- t.enbopomofo = 0x3123;
- t.encyrillic = 0x043d;
- t.endash = 0x2013;
- t.endashvertical = 0xfe32;
- t.endescendercyrillic = 0x04a3;
- t.eng = 0x014b;
- t.engbopomofo = 0x3125;
- t.enghecyrillic = 0x04a5;
- t.enhookcyrillic = 0x04c8;
- t.enspace = 0x2002;
- t.eogonek = 0x0119;
- t.eokorean = 0x3153;
- t.eopen = 0x025b;
- t.eopenclosed = 0x029a;
- t.eopenreversed = 0x025c;
- t.eopenreversedclosed = 0x025e;
- t.eopenreversedhook = 0x025d;
- t.eparen = 0x24a0;
- t.epsilon = 0x03b5;
- t.epsilontonos = 0x03ad;
- t.equal = 0x003d;
- t.equalmonospace = 0xff1d;
- t.equalsmall = 0xfe66;
- t.equalsuperior = 0x207c;
- t.equivalence = 0x2261;
- t.erbopomofo = 0x3126;
- t.ercyrillic = 0x0440;
- t.ereversed = 0x0258;
- t.ereversedcyrillic = 0x044d;
- t.escyrillic = 0x0441;
- t.esdescendercyrillic = 0x04ab;
- t.esh = 0x0283;
- t.eshcurl = 0x0286;
- t.eshortdeva = 0x090e;
- t.eshortvowelsigndeva = 0x0946;
- t.eshreversedloop = 0x01aa;
- t.eshsquatreversed = 0x0285;
- t.esmallhiragana = 0x3047;
- t.esmallkatakana = 0x30a7;
- t.esmallkatakanahalfwidth = 0xff6a;
- t.estimated = 0x212e;
- t.esuperior = 0xf6ec;
- t.eta = 0x03b7;
- t.etarmenian = 0x0568;
- t.etatonos = 0x03ae;
- t.eth = 0x00f0;
- t.etilde = 0x1ebd;
- t.etildebelow = 0x1e1b;
- t.etnahtafoukhhebrew = 0x0591;
- t.etnahtafoukhlefthebrew = 0x0591;
- t.etnahtahebrew = 0x0591;
- t.etnahtalefthebrew = 0x0591;
- t.eturned = 0x01dd;
- t.eukorean = 0x3161;
- t.euro = 0x20ac;
- t.evowelsignbengali = 0x09c7;
- t.evowelsigndeva = 0x0947;
- t.evowelsigngujarati = 0x0ac7;
- t.exclam = 0x0021;
- t.exclamarmenian = 0x055c;
- t.exclamdbl = 0x203c;
- t.exclamdown = 0x00a1;
- t.exclamdownsmall = 0xf7a1;
- t.exclammonospace = 0xff01;
- t.exclamsmall = 0xf721;
- t.existential = 0x2203;
- t.ezh = 0x0292;
- t.ezhcaron = 0x01ef;
- t.ezhcurl = 0x0293;
- t.ezhreversed = 0x01b9;
- t.ezhtail = 0x01ba;
- t.f = 0x0066;
- t.fadeva = 0x095e;
- t.fagurmukhi = 0x0a5e;
- t.fahrenheit = 0x2109;
- t.fathaarabic = 0x064e;
- t.fathalowarabic = 0x064e;
- t.fathatanarabic = 0x064b;
- t.fbopomofo = 0x3108;
- t.fcircle = 0x24d5;
- t.fdotaccent = 0x1e1f;
- t.feharabic = 0x0641;
- t.feharmenian = 0x0586;
- t.fehfinalarabic = 0xfed2;
- t.fehinitialarabic = 0xfed3;
- t.fehmedialarabic = 0xfed4;
- t.feicoptic = 0x03e5;
- t.female = 0x2640;
- t.ff = 0xfb00;
- t.f_f = 0xfb00;
- t.ffi = 0xfb03;
- t.ffl = 0xfb04;
- t.fi = 0xfb01;
- t.fifteencircle = 0x246e;
- t.fifteenparen = 0x2482;
- t.fifteenperiod = 0x2496;
- t.figuredash = 0x2012;
- t.filledbox = 0x25a0;
- t.filledrect = 0x25ac;
- t.finalkaf = 0x05da;
- t.finalkafdagesh = 0xfb3a;
- t.finalkafdageshhebrew = 0xfb3a;
- t.finalkafhebrew = 0x05da;
- t.finalmem = 0x05dd;
- t.finalmemhebrew = 0x05dd;
- t.finalnun = 0x05df;
- t.finalnunhebrew = 0x05df;
- t.finalpe = 0x05e3;
- t.finalpehebrew = 0x05e3;
- t.finaltsadi = 0x05e5;
- t.finaltsadihebrew = 0x05e5;
- t.firsttonechinese = 0x02c9;
- t.fisheye = 0x25c9;
- t.fitacyrillic = 0x0473;
- t.five = 0x0035;
- t.fivearabic = 0x0665;
- t.fivebengali = 0x09eb;
- t.fivecircle = 0x2464;
- t.fivecircleinversesansserif = 0x278e;
- t.fivedeva = 0x096b;
- t.fiveeighths = 0x215d;
- t.fivegujarati = 0x0aeb;
- t.fivegurmukhi = 0x0a6b;
- t.fivehackarabic = 0x0665;
- t.fivehangzhou = 0x3025;
- t.fiveideographicparen = 0x3224;
- t.fiveinferior = 0x2085;
- t.fivemonospace = 0xff15;
- t.fiveoldstyle = 0xf735;
- t.fiveparen = 0x2478;
- t.fiveperiod = 0x248c;
- t.fivepersian = 0x06f5;
- t.fiveroman = 0x2174;
- t.fivesuperior = 0x2075;
- t.fivethai = 0x0e55;
- t.fl = 0xfb02;
- t.florin = 0x0192;
- t.fmonospace = 0xff46;
- t.fmsquare = 0x3399;
- t.fofanthai = 0x0e1f;
- t.fofathai = 0x0e1d;
- t.fongmanthai = 0x0e4f;
- t.forall = 0x2200;
- t.four = 0x0034;
- t.fourarabic = 0x0664;
- t.fourbengali = 0x09ea;
- t.fourcircle = 0x2463;
- t.fourcircleinversesansserif = 0x278d;
- t.fourdeva = 0x096a;
- t.fourgujarati = 0x0aea;
- t.fourgurmukhi = 0x0a6a;
- t.fourhackarabic = 0x0664;
- t.fourhangzhou = 0x3024;
- t.fourideographicparen = 0x3223;
- t.fourinferior = 0x2084;
- t.fourmonospace = 0xff14;
- t.fournumeratorbengali = 0x09f7;
- t.fouroldstyle = 0xf734;
- t.fourparen = 0x2477;
- t.fourperiod = 0x248b;
- t.fourpersian = 0x06f4;
- t.fourroman = 0x2173;
- t.foursuperior = 0x2074;
- t.fourteencircle = 0x246d;
- t.fourteenparen = 0x2481;
- t.fourteenperiod = 0x2495;
- t.fourthai = 0x0e54;
- t.fourthtonechinese = 0x02cb;
- t.fparen = 0x24a1;
- t.fraction = 0x2044;
- t.franc = 0x20a3;
- t.g = 0x0067;
- t.gabengali = 0x0997;
- t.gacute = 0x01f5;
- t.gadeva = 0x0917;
- t.gafarabic = 0x06af;
- t.gaffinalarabic = 0xfb93;
- t.gafinitialarabic = 0xfb94;
- t.gafmedialarabic = 0xfb95;
- t.gagujarati = 0x0a97;
- t.gagurmukhi = 0x0a17;
- t.gahiragana = 0x304c;
- t.gakatakana = 0x30ac;
- t.gamma = 0x03b3;
- t.gammalatinsmall = 0x0263;
- t.gammasuperior = 0x02e0;
- t.gangiacoptic = 0x03eb;
- t.gbopomofo = 0x310d;
- t.gbreve = 0x011f;
- t.gcaron = 0x01e7;
- t.gcedilla = 0x0123;
- t.gcircle = 0x24d6;
- t.gcircumflex = 0x011d;
- t.gcommaaccent = 0x0123;
- t.gdot = 0x0121;
- t.gdotaccent = 0x0121;
- t.gecyrillic = 0x0433;
- t.gehiragana = 0x3052;
- t.gekatakana = 0x30b2;
- t.geometricallyequal = 0x2251;
- t.gereshaccenthebrew = 0x059c;
- t.gereshhebrew = 0x05f3;
- t.gereshmuqdamhebrew = 0x059d;
- t.germandbls = 0x00df;
- t.gershayimaccenthebrew = 0x059e;
- t.gershayimhebrew = 0x05f4;
- t.getamark = 0x3013;
- t.ghabengali = 0x0998;
- t.ghadarmenian = 0x0572;
- t.ghadeva = 0x0918;
- t.ghagujarati = 0x0a98;
- t.ghagurmukhi = 0x0a18;
- t.ghainarabic = 0x063a;
- t.ghainfinalarabic = 0xfece;
- t.ghaininitialarabic = 0xfecf;
- t.ghainmedialarabic = 0xfed0;
- t.ghemiddlehookcyrillic = 0x0495;
- t.ghestrokecyrillic = 0x0493;
- t.gheupturncyrillic = 0x0491;
- t.ghhadeva = 0x095a;
- t.ghhagurmukhi = 0x0a5a;
- t.ghook = 0x0260;
- t.ghzsquare = 0x3393;
- t.gihiragana = 0x304e;
- t.gikatakana = 0x30ae;
- t.gimarmenian = 0x0563;
- t.gimel = 0x05d2;
- t.gimeldagesh = 0xfb32;
- t.gimeldageshhebrew = 0xfb32;
- t.gimelhebrew = 0x05d2;
- t.gjecyrillic = 0x0453;
- t.glottalinvertedstroke = 0x01be;
- t.glottalstop = 0x0294;
- t.glottalstopinverted = 0x0296;
- t.glottalstopmod = 0x02c0;
- t.glottalstopreversed = 0x0295;
- t.glottalstopreversedmod = 0x02c1;
- t.glottalstopreversedsuperior = 0x02e4;
- t.glottalstopstroke = 0x02a1;
- t.glottalstopstrokereversed = 0x02a2;
- t.gmacron = 0x1e21;
- t.gmonospace = 0xff47;
- t.gohiragana = 0x3054;
- t.gokatakana = 0x30b4;
- t.gparen = 0x24a2;
- t.gpasquare = 0x33ac;
- t.gradient = 0x2207;
- t.grave = 0x0060;
- t.gravebelowcmb = 0x0316;
- t.gravecmb = 0x0300;
- t.gravecomb = 0x0300;
- t.gravedeva = 0x0953;
- t.gravelowmod = 0x02ce;
- t.gravemonospace = 0xff40;
- t.gravetonecmb = 0x0340;
- t.greater = 0x003e;
- t.greaterequal = 0x2265;
- t.greaterequalorless = 0x22db;
- t.greatermonospace = 0xff1e;
- t.greaterorequivalent = 0x2273;
- t.greaterorless = 0x2277;
- t.greateroverequal = 0x2267;
- t.greatersmall = 0xfe65;
- t.gscript = 0x0261;
- t.gstroke = 0x01e5;
- t.guhiragana = 0x3050;
- t.guillemotleft = 0x00ab;
- t.guillemotright = 0x00bb;
- t.guilsinglleft = 0x2039;
- t.guilsinglright = 0x203a;
- t.gukatakana = 0x30b0;
- t.guramusquare = 0x3318;
- t.gysquare = 0x33c9;
- t.h = 0x0068;
- t.haabkhasiancyrillic = 0x04a9;
- t.haaltonearabic = 0x06c1;
- t.habengali = 0x09b9;
- t.hadescendercyrillic = 0x04b3;
- t.hadeva = 0x0939;
- t.hagujarati = 0x0ab9;
- t.hagurmukhi = 0x0a39;
- t.haharabic = 0x062d;
- t.hahfinalarabic = 0xfea2;
- t.hahinitialarabic = 0xfea3;
- t.hahiragana = 0x306f;
- t.hahmedialarabic = 0xfea4;
- t.haitusquare = 0x332a;
- t.hakatakana = 0x30cf;
- t.hakatakanahalfwidth = 0xff8a;
- t.halantgurmukhi = 0x0a4d;
- t.hamzaarabic = 0x0621;
- t.hamzalowarabic = 0x0621;
- t.hangulfiller = 0x3164;
- t.hardsigncyrillic = 0x044a;
- t.harpoonleftbarbup = 0x21bc;
- t.harpoonrightbarbup = 0x21c0;
- t.hasquare = 0x33ca;
- t.hatafpatah = 0x05b2;
- t.hatafpatah16 = 0x05b2;
- t.hatafpatah23 = 0x05b2;
- t.hatafpatah2f = 0x05b2;
- t.hatafpatahhebrew = 0x05b2;
- t.hatafpatahnarrowhebrew = 0x05b2;
- t.hatafpatahquarterhebrew = 0x05b2;
- t.hatafpatahwidehebrew = 0x05b2;
- t.hatafqamats = 0x05b3;
- t.hatafqamats1b = 0x05b3;
- t.hatafqamats28 = 0x05b3;
- t.hatafqamats34 = 0x05b3;
- t.hatafqamatshebrew = 0x05b3;
- t.hatafqamatsnarrowhebrew = 0x05b3;
- t.hatafqamatsquarterhebrew = 0x05b3;
- t.hatafqamatswidehebrew = 0x05b3;
- t.hatafsegol = 0x05b1;
- t.hatafsegol17 = 0x05b1;
- t.hatafsegol24 = 0x05b1;
- t.hatafsegol30 = 0x05b1;
- t.hatafsegolhebrew = 0x05b1;
- t.hatafsegolnarrowhebrew = 0x05b1;
- t.hatafsegolquarterhebrew = 0x05b1;
- t.hatafsegolwidehebrew = 0x05b1;
- t.hbar = 0x0127;
- t.hbopomofo = 0x310f;
- t.hbrevebelow = 0x1e2b;
- t.hcedilla = 0x1e29;
- t.hcircle = 0x24d7;
- t.hcircumflex = 0x0125;
- t.hdieresis = 0x1e27;
- t.hdotaccent = 0x1e23;
- t.hdotbelow = 0x1e25;
- t.he = 0x05d4;
- t.heart = 0x2665;
- t.heartsuitblack = 0x2665;
- t.heartsuitwhite = 0x2661;
- t.hedagesh = 0xfb34;
- t.hedageshhebrew = 0xfb34;
- t.hehaltonearabic = 0x06c1;
- t.heharabic = 0x0647;
- t.hehebrew = 0x05d4;
- t.hehfinalaltonearabic = 0xfba7;
- t.hehfinalalttwoarabic = 0xfeea;
- t.hehfinalarabic = 0xfeea;
- t.hehhamzaabovefinalarabic = 0xfba5;
- t.hehhamzaaboveisolatedarabic = 0xfba4;
- t.hehinitialaltonearabic = 0xfba8;
- t.hehinitialarabic = 0xfeeb;
- t.hehiragana = 0x3078;
- t.hehmedialaltonearabic = 0xfba9;
- t.hehmedialarabic = 0xfeec;
- t.heiseierasquare = 0x337b;
- t.hekatakana = 0x30d8;
- t.hekatakanahalfwidth = 0xff8d;
- t.hekutaarusquare = 0x3336;
- t.henghook = 0x0267;
- t.herutusquare = 0x3339;
- t.het = 0x05d7;
- t.hethebrew = 0x05d7;
- t.hhook = 0x0266;
- t.hhooksuperior = 0x02b1;
- t.hieuhacirclekorean = 0x327b;
- t.hieuhaparenkorean = 0x321b;
- t.hieuhcirclekorean = 0x326d;
- t.hieuhkorean = 0x314e;
- t.hieuhparenkorean = 0x320d;
- t.hihiragana = 0x3072;
- t.hikatakana = 0x30d2;
- t.hikatakanahalfwidth = 0xff8b;
- t.hiriq = 0x05b4;
- t.hiriq14 = 0x05b4;
- t.hiriq21 = 0x05b4;
- t.hiriq2d = 0x05b4;
- t.hiriqhebrew = 0x05b4;
- t.hiriqnarrowhebrew = 0x05b4;
- t.hiriqquarterhebrew = 0x05b4;
- t.hiriqwidehebrew = 0x05b4;
- t.hlinebelow = 0x1e96;
- t.hmonospace = 0xff48;
- t.hoarmenian = 0x0570;
- t.hohipthai = 0x0e2b;
- t.hohiragana = 0x307b;
- t.hokatakana = 0x30db;
- t.hokatakanahalfwidth = 0xff8e;
- t.holam = 0x05b9;
- t.holam19 = 0x05b9;
- t.holam26 = 0x05b9;
- t.holam32 = 0x05b9;
- t.holamhebrew = 0x05b9;
- t.holamnarrowhebrew = 0x05b9;
- t.holamquarterhebrew = 0x05b9;
- t.holamwidehebrew = 0x05b9;
- t.honokhukthai = 0x0e2e;
- t.hookabovecomb = 0x0309;
- t.hookcmb = 0x0309;
- t.hookpalatalizedbelowcmb = 0x0321;
- t.hookretroflexbelowcmb = 0x0322;
- t.hoonsquare = 0x3342;
- t.horicoptic = 0x03e9;
- t.horizontalbar = 0x2015;
- t.horncmb = 0x031b;
- t.hotsprings = 0x2668;
- t.house = 0x2302;
- t.hparen = 0x24a3;
- t.hsuperior = 0x02b0;
- t.hturned = 0x0265;
- t.huhiragana = 0x3075;
- t.huiitosquare = 0x3333;
- t.hukatakana = 0x30d5;
- t.hukatakanahalfwidth = 0xff8c;
- t.hungarumlaut = 0x02dd;
- t.hungarumlautcmb = 0x030b;
- t.hv = 0x0195;
- t.hyphen = 0x002d;
- t.hypheninferior = 0xf6e5;
- t.hyphenmonospace = 0xff0d;
- t.hyphensmall = 0xfe63;
- t.hyphensuperior = 0xf6e6;
- t.hyphentwo = 0x2010;
- t.i = 0x0069;
- t.iacute = 0x00ed;
- t.iacyrillic = 0x044f;
- t.ibengali = 0x0987;
- t.ibopomofo = 0x3127;
- t.ibreve = 0x012d;
- t.icaron = 0x01d0;
- t.icircle = 0x24d8;
- t.icircumflex = 0x00ee;
- t.icyrillic = 0x0456;
- t.idblgrave = 0x0209;
- t.ideographearthcircle = 0x328f;
- t.ideographfirecircle = 0x328b;
- t.ideographicallianceparen = 0x323f;
- t.ideographiccallparen = 0x323a;
- t.ideographiccentrecircle = 0x32a5;
- t.ideographicclose = 0x3006;
- t.ideographiccomma = 0x3001;
- t.ideographiccommaleft = 0xff64;
- t.ideographiccongratulationparen = 0x3237;
- t.ideographiccorrectcircle = 0x32a3;
- t.ideographicearthparen = 0x322f;
- t.ideographicenterpriseparen = 0x323d;
- t.ideographicexcellentcircle = 0x329d;
- t.ideographicfestivalparen = 0x3240;
- t.ideographicfinancialcircle = 0x3296;
- t.ideographicfinancialparen = 0x3236;
- t.ideographicfireparen = 0x322b;
- t.ideographichaveparen = 0x3232;
- t.ideographichighcircle = 0x32a4;
- t.ideographiciterationmark = 0x3005;
- t.ideographiclaborcircle = 0x3298;
- t.ideographiclaborparen = 0x3238;
- t.ideographicleftcircle = 0x32a7;
- t.ideographiclowcircle = 0x32a6;
- t.ideographicmedicinecircle = 0x32a9;
- t.ideographicmetalparen = 0x322e;
- t.ideographicmoonparen = 0x322a;
- t.ideographicnameparen = 0x3234;
- t.ideographicperiod = 0x3002;
- t.ideographicprintcircle = 0x329e;
- t.ideographicreachparen = 0x3243;
- t.ideographicrepresentparen = 0x3239;
- t.ideographicresourceparen = 0x323e;
- t.ideographicrightcircle = 0x32a8;
- t.ideographicsecretcircle = 0x3299;
- t.ideographicselfparen = 0x3242;
- t.ideographicsocietyparen = 0x3233;
- t.ideographicspace = 0x3000;
- t.ideographicspecialparen = 0x3235;
- t.ideographicstockparen = 0x3231;
- t.ideographicstudyparen = 0x323b;
- t.ideographicsunparen = 0x3230;
- t.ideographicsuperviseparen = 0x323c;
- t.ideographicwaterparen = 0x322c;
- t.ideographicwoodparen = 0x322d;
- t.ideographiczero = 0x3007;
- t.ideographmetalcircle = 0x328e;
- t.ideographmooncircle = 0x328a;
- t.ideographnamecircle = 0x3294;
- t.ideographsuncircle = 0x3290;
- t.ideographwatercircle = 0x328c;
- t.ideographwoodcircle = 0x328d;
- t.ideva = 0x0907;
- t.idieresis = 0x00ef;
- t.idieresisacute = 0x1e2f;
- t.idieresiscyrillic = 0x04e5;
- t.idotbelow = 0x1ecb;
- t.iebrevecyrillic = 0x04d7;
- t.iecyrillic = 0x0435;
- t.ieungacirclekorean = 0x3275;
- t.ieungaparenkorean = 0x3215;
- t.ieungcirclekorean = 0x3267;
- t.ieungkorean = 0x3147;
- t.ieungparenkorean = 0x3207;
- t.igrave = 0x00ec;
- t.igujarati = 0x0a87;
- t.igurmukhi = 0x0a07;
- t.ihiragana = 0x3044;
- t.ihookabove = 0x1ec9;
- t.iibengali = 0x0988;
- t.iicyrillic = 0x0438;
- t.iideva = 0x0908;
- t.iigujarati = 0x0a88;
- t.iigurmukhi = 0x0a08;
- t.iimatragurmukhi = 0x0a40;
- t.iinvertedbreve = 0x020b;
- t.iishortcyrillic = 0x0439;
- t.iivowelsignbengali = 0x09c0;
- t.iivowelsigndeva = 0x0940;
- t.iivowelsigngujarati = 0x0ac0;
- t.ij = 0x0133;
- t.ikatakana = 0x30a4;
- t.ikatakanahalfwidth = 0xff72;
- t.ikorean = 0x3163;
- t.ilde = 0x02dc;
- t.iluyhebrew = 0x05ac;
- t.imacron = 0x012b;
- t.imacroncyrillic = 0x04e3;
- t.imageorapproximatelyequal = 0x2253;
- t.imatragurmukhi = 0x0a3f;
- t.imonospace = 0xff49;
- t.increment = 0x2206;
- t.infinity = 0x221e;
- t.iniarmenian = 0x056b;
- t.integral = 0x222b;
- t.integralbottom = 0x2321;
- t.integralbt = 0x2321;
- t.integralex = 0xf8f5;
- t.integraltop = 0x2320;
- t.integraltp = 0x2320;
- t.intersection = 0x2229;
- t.intisquare = 0x3305;
- t.invbullet = 0x25d8;
- t.invcircle = 0x25d9;
- t.invsmileface = 0x263b;
- t.iocyrillic = 0x0451;
- t.iogonek = 0x012f;
- t.iota = 0x03b9;
- t.iotadieresis = 0x03ca;
- t.iotadieresistonos = 0x0390;
- t.iotalatin = 0x0269;
- t.iotatonos = 0x03af;
- t.iparen = 0x24a4;
- t.irigurmukhi = 0x0a72;
- t.ismallhiragana = 0x3043;
- t.ismallkatakana = 0x30a3;
- t.ismallkatakanahalfwidth = 0xff68;
- t.issharbengali = 0x09fa;
- t.istroke = 0x0268;
- t.isuperior = 0xf6ed;
- t.iterationhiragana = 0x309d;
- t.iterationkatakana = 0x30fd;
- t.itilde = 0x0129;
- t.itildebelow = 0x1e2d;
- t.iubopomofo = 0x3129;
- t.iucyrillic = 0x044e;
- t.ivowelsignbengali = 0x09bf;
- t.ivowelsigndeva = 0x093f;
- t.ivowelsigngujarati = 0x0abf;
- t.izhitsacyrillic = 0x0475;
- t.izhitsadblgravecyrillic = 0x0477;
- t.j = 0x006a;
- t.jaarmenian = 0x0571;
- t.jabengali = 0x099c;
- t.jadeva = 0x091c;
- t.jagujarati = 0x0a9c;
- t.jagurmukhi = 0x0a1c;
- t.jbopomofo = 0x3110;
- t.jcaron = 0x01f0;
- t.jcircle = 0x24d9;
- t.jcircumflex = 0x0135;
- t.jcrossedtail = 0x029d;
- t.jdotlessstroke = 0x025f;
- t.jecyrillic = 0x0458;
- t.jeemarabic = 0x062c;
- t.jeemfinalarabic = 0xfe9e;
- t.jeeminitialarabic = 0xfe9f;
- t.jeemmedialarabic = 0xfea0;
- t.jeharabic = 0x0698;
- t.jehfinalarabic = 0xfb8b;
- t.jhabengali = 0x099d;
- t.jhadeva = 0x091d;
- t.jhagujarati = 0x0a9d;
- t.jhagurmukhi = 0x0a1d;
- t.jheharmenian = 0x057b;
- t.jis = 0x3004;
- t.jmonospace = 0xff4a;
- t.jparen = 0x24a5;
- t.jsuperior = 0x02b2;
- t.k = 0x006b;
- t.kabashkircyrillic = 0x04a1;
- t.kabengali = 0x0995;
- t.kacute = 0x1e31;
- t.kacyrillic = 0x043a;
- t.kadescendercyrillic = 0x049b;
- t.kadeva = 0x0915;
- t.kaf = 0x05db;
- t.kafarabic = 0x0643;
- t.kafdagesh = 0xfb3b;
- t.kafdageshhebrew = 0xfb3b;
- t.kaffinalarabic = 0xfeda;
- t.kafhebrew = 0x05db;
- t.kafinitialarabic = 0xfedb;
- t.kafmedialarabic = 0xfedc;
- t.kafrafehebrew = 0xfb4d;
- t.kagujarati = 0x0a95;
- t.kagurmukhi = 0x0a15;
- t.kahiragana = 0x304b;
- t.kahookcyrillic = 0x04c4;
- t.kakatakana = 0x30ab;
- t.kakatakanahalfwidth = 0xff76;
- t.kappa = 0x03ba;
- t.kappasymbolgreek = 0x03f0;
- t.kapyeounmieumkorean = 0x3171;
- t.kapyeounphieuphkorean = 0x3184;
- t.kapyeounpieupkorean = 0x3178;
- t.kapyeounssangpieupkorean = 0x3179;
- t.karoriisquare = 0x330d;
- t.kashidaautoarabic = 0x0640;
- t.kashidaautonosidebearingarabic = 0x0640;
- t.kasmallkatakana = 0x30f5;
- t.kasquare = 0x3384;
- t.kasraarabic = 0x0650;
- t.kasratanarabic = 0x064d;
- t.kastrokecyrillic = 0x049f;
- t.katahiraprolongmarkhalfwidth = 0xff70;
- t.kaverticalstrokecyrillic = 0x049d;
- t.kbopomofo = 0x310e;
- t.kcalsquare = 0x3389;
- t.kcaron = 0x01e9;
- t.kcedilla = 0x0137;
- t.kcircle = 0x24da;
- t.kcommaaccent = 0x0137;
- t.kdotbelow = 0x1e33;
- t.keharmenian = 0x0584;
- t.kehiragana = 0x3051;
- t.kekatakana = 0x30b1;
- t.kekatakanahalfwidth = 0xff79;
- t.kenarmenian = 0x056f;
- t.kesmallkatakana = 0x30f6;
- t.kgreenlandic = 0x0138;
- t.khabengali = 0x0996;
- t.khacyrillic = 0x0445;
- t.khadeva = 0x0916;
- t.khagujarati = 0x0a96;
- t.khagurmukhi = 0x0a16;
- t.khaharabic = 0x062e;
- t.khahfinalarabic = 0xfea6;
- t.khahinitialarabic = 0xfea7;
- t.khahmedialarabic = 0xfea8;
- t.kheicoptic = 0x03e7;
- t.khhadeva = 0x0959;
- t.khhagurmukhi = 0x0a59;
- t.khieukhacirclekorean = 0x3278;
- t.khieukhaparenkorean = 0x3218;
- t.khieukhcirclekorean = 0x326a;
- t.khieukhkorean = 0x314b;
- t.khieukhparenkorean = 0x320a;
- t.khokhaithai = 0x0e02;
- t.khokhonthai = 0x0e05;
- t.khokhuatthai = 0x0e03;
- t.khokhwaithai = 0x0e04;
- t.khomutthai = 0x0e5b;
- t.khook = 0x0199;
- t.khorakhangthai = 0x0e06;
- t.khzsquare = 0x3391;
- t.kihiragana = 0x304d;
- t.kikatakana = 0x30ad;
- t.kikatakanahalfwidth = 0xff77;
- t.kiroguramusquare = 0x3315;
- t.kiromeetorusquare = 0x3316;
- t.kirosquare = 0x3314;
- t.kiyeokacirclekorean = 0x326e;
- t.kiyeokaparenkorean = 0x320e;
- t.kiyeokcirclekorean = 0x3260;
- t.kiyeokkorean = 0x3131;
- t.kiyeokparenkorean = 0x3200;
- t.kiyeoksioskorean = 0x3133;
- t.kjecyrillic = 0x045c;
- t.klinebelow = 0x1e35;
- t.klsquare = 0x3398;
- t.kmcubedsquare = 0x33a6;
- t.kmonospace = 0xff4b;
- t.kmsquaredsquare = 0x33a2;
- t.kohiragana = 0x3053;
- t.kohmsquare = 0x33c0;
- t.kokaithai = 0x0e01;
- t.kokatakana = 0x30b3;
- t.kokatakanahalfwidth = 0xff7a;
- t.kooposquare = 0x331e;
- t.koppacyrillic = 0x0481;
- t.koreanstandardsymbol = 0x327f;
- t.koroniscmb = 0x0343;
- t.kparen = 0x24a6;
- t.kpasquare = 0x33aa;
- t.ksicyrillic = 0x046f;
- t.ktsquare = 0x33cf;
- t.kturned = 0x029e;
- t.kuhiragana = 0x304f;
- t.kukatakana = 0x30af;
- t.kukatakanahalfwidth = 0xff78;
- t.kvsquare = 0x33b8;
- t.kwsquare = 0x33be;
- t.l = 0x006c;
- t.labengali = 0x09b2;
- t.lacute = 0x013a;
- t.ladeva = 0x0932;
- t.lagujarati = 0x0ab2;
- t.lagurmukhi = 0x0a32;
- t.lakkhangyaothai = 0x0e45;
- t.lamaleffinalarabic = 0xfefc;
- t.lamalefhamzaabovefinalarabic = 0xfef8;
- t.lamalefhamzaaboveisolatedarabic = 0xfef7;
- t.lamalefhamzabelowfinalarabic = 0xfefa;
- t.lamalefhamzabelowisolatedarabic = 0xfef9;
- t.lamalefisolatedarabic = 0xfefb;
- t.lamalefmaddaabovefinalarabic = 0xfef6;
- t.lamalefmaddaaboveisolatedarabic = 0xfef5;
- t.lamarabic = 0x0644;
- t.lambda = 0x03bb;
- t.lambdastroke = 0x019b;
- t.lamed = 0x05dc;
- t.lameddagesh = 0xfb3c;
- t.lameddageshhebrew = 0xfb3c;
- t.lamedhebrew = 0x05dc;
- t.lamfinalarabic = 0xfede;
- t.lamhahinitialarabic = 0xfcca;
- t.laminitialarabic = 0xfedf;
- t.lamjeeminitialarabic = 0xfcc9;
- t.lamkhahinitialarabic = 0xfccb;
- t.lamlamhehisolatedarabic = 0xfdf2;
- t.lammedialarabic = 0xfee0;
- t.lammeemhahinitialarabic = 0xfd88;
- t.lammeeminitialarabic = 0xfccc;
- t.largecircle = 0x25ef;
- t.lbar = 0x019a;
- t.lbelt = 0x026c;
- t.lbopomofo = 0x310c;
- t.lcaron = 0x013e;
- t.lcedilla = 0x013c;
- t.lcircle = 0x24db;
- t.lcircumflexbelow = 0x1e3d;
- t.lcommaaccent = 0x013c;
- t.ldot = 0x0140;
- t.ldotaccent = 0x0140;
- t.ldotbelow = 0x1e37;
- t.ldotbelowmacron = 0x1e39;
- t.leftangleabovecmb = 0x031a;
- t.lefttackbelowcmb = 0x0318;
- t.less = 0x003c;
- t.lessequal = 0x2264;
- t.lessequalorgreater = 0x22da;
- t.lessmonospace = 0xff1c;
- t.lessorequivalent = 0x2272;
- t.lessorgreater = 0x2276;
- t.lessoverequal = 0x2266;
- t.lesssmall = 0xfe64;
- t.lezh = 0x026e;
- t.lfblock = 0x258c;
- t.lhookretroflex = 0x026d;
- t.lira = 0x20a4;
- t.liwnarmenian = 0x056c;
- t.lj = 0x01c9;
- t.ljecyrillic = 0x0459;
- t.ll = 0xf6c0;
- t.lladeva = 0x0933;
- t.llagujarati = 0x0ab3;
- t.llinebelow = 0x1e3b;
- t.llladeva = 0x0934;
- t.llvocalicbengali = 0x09e1;
- t.llvocalicdeva = 0x0961;
- t.llvocalicvowelsignbengali = 0x09e3;
- t.llvocalicvowelsigndeva = 0x0963;
- t.lmiddletilde = 0x026b;
- t.lmonospace = 0xff4c;
- t.lmsquare = 0x33d0;
- t.lochulathai = 0x0e2c;
- t.logicaland = 0x2227;
- t.logicalnot = 0x00ac;
- t.logicalnotreversed = 0x2310;
- t.logicalor = 0x2228;
- t.lolingthai = 0x0e25;
- t.longs = 0x017f;
- t.lowlinecenterline = 0xfe4e;
- t.lowlinecmb = 0x0332;
- t.lowlinedashed = 0xfe4d;
- t.lozenge = 0x25ca;
- t.lparen = 0x24a7;
- t.lslash = 0x0142;
- t.lsquare = 0x2113;
- t.lsuperior = 0xf6ee;
- t.ltshade = 0x2591;
- t.luthai = 0x0e26;
- t.lvocalicbengali = 0x098c;
- t.lvocalicdeva = 0x090c;
- t.lvocalicvowelsignbengali = 0x09e2;
- t.lvocalicvowelsigndeva = 0x0962;
- t.lxsquare = 0x33d3;
- t.m = 0x006d;
- t.mabengali = 0x09ae;
- t.macron = 0x00af;
- t.macronbelowcmb = 0x0331;
- t.macroncmb = 0x0304;
- t.macronlowmod = 0x02cd;
- t.macronmonospace = 0xffe3;
- t.macute = 0x1e3f;
- t.madeva = 0x092e;
- t.magujarati = 0x0aae;
- t.magurmukhi = 0x0a2e;
- t.mahapakhhebrew = 0x05a4;
- t.mahapakhlefthebrew = 0x05a4;
- t.mahiragana = 0x307e;
- t.maichattawalowleftthai = 0xf895;
- t.maichattawalowrightthai = 0xf894;
- t.maichattawathai = 0x0e4b;
- t.maichattawaupperleftthai = 0xf893;
- t.maieklowleftthai = 0xf88c;
- t.maieklowrightthai = 0xf88b;
- t.maiekthai = 0x0e48;
- t.maiekupperleftthai = 0xf88a;
- t.maihanakatleftthai = 0xf884;
- t.maihanakatthai = 0x0e31;
- t.maitaikhuleftthai = 0xf889;
- t.maitaikhuthai = 0x0e47;
- t.maitholowleftthai = 0xf88f;
- t.maitholowrightthai = 0xf88e;
- t.maithothai = 0x0e49;
- t.maithoupperleftthai = 0xf88d;
- t.maitrilowleftthai = 0xf892;
- t.maitrilowrightthai = 0xf891;
- t.maitrithai = 0x0e4a;
- t.maitriupperleftthai = 0xf890;
- t.maiyamokthai = 0x0e46;
- t.makatakana = 0x30de;
- t.makatakanahalfwidth = 0xff8f;
- t.male = 0x2642;
- t.mansyonsquare = 0x3347;
- t.maqafhebrew = 0x05be;
- t.mars = 0x2642;
- t.masoracirclehebrew = 0x05af;
- t.masquare = 0x3383;
- t.mbopomofo = 0x3107;
- t.mbsquare = 0x33d4;
- t.mcircle = 0x24dc;
- t.mcubedsquare = 0x33a5;
- t.mdotaccent = 0x1e41;
- t.mdotbelow = 0x1e43;
- t.meemarabic = 0x0645;
- t.meemfinalarabic = 0xfee2;
- t.meeminitialarabic = 0xfee3;
- t.meemmedialarabic = 0xfee4;
- t.meemmeeminitialarabic = 0xfcd1;
- t.meemmeemisolatedarabic = 0xfc48;
- t.meetorusquare = 0x334d;
- t.mehiragana = 0x3081;
- t.meizierasquare = 0x337e;
- t.mekatakana = 0x30e1;
- t.mekatakanahalfwidth = 0xff92;
- t.mem = 0x05de;
- t.memdagesh = 0xfb3e;
- t.memdageshhebrew = 0xfb3e;
- t.memhebrew = 0x05de;
- t.menarmenian = 0x0574;
- t.merkhahebrew = 0x05a5;
- t.merkhakefulahebrew = 0x05a6;
- t.merkhakefulalefthebrew = 0x05a6;
- t.merkhalefthebrew = 0x05a5;
- t.mhook = 0x0271;
- t.mhzsquare = 0x3392;
- t.middledotkatakanahalfwidth = 0xff65;
- t.middot = 0x00b7;
- t.mieumacirclekorean = 0x3272;
- t.mieumaparenkorean = 0x3212;
- t.mieumcirclekorean = 0x3264;
- t.mieumkorean = 0x3141;
- t.mieumpansioskorean = 0x3170;
- t.mieumparenkorean = 0x3204;
- t.mieumpieupkorean = 0x316e;
- t.mieumsioskorean = 0x316f;
- t.mihiragana = 0x307f;
- t.mikatakana = 0x30df;
- t.mikatakanahalfwidth = 0xff90;
- t.minus = 0x2212;
- t.minusbelowcmb = 0x0320;
- t.minuscircle = 0x2296;
- t.minusmod = 0x02d7;
- t.minusplus = 0x2213;
- t.minute = 0x2032;
- t.miribaarusquare = 0x334a;
- t.mirisquare = 0x3349;
- t.mlonglegturned = 0x0270;
- t.mlsquare = 0x3396;
- t.mmcubedsquare = 0x33a3;
- t.mmonospace = 0xff4d;
- t.mmsquaredsquare = 0x339f;
- t.mohiragana = 0x3082;
- t.mohmsquare = 0x33c1;
- t.mokatakana = 0x30e2;
- t.mokatakanahalfwidth = 0xff93;
- t.molsquare = 0x33d6;
- t.momathai = 0x0e21;
- t.moverssquare = 0x33a7;
- t.moverssquaredsquare = 0x33a8;
- t.mparen = 0x24a8;
- t.mpasquare = 0x33ab;
- t.mssquare = 0x33b3;
- t.msuperior = 0xf6ef;
- t.mturned = 0x026f;
- t.mu = 0x00b5;
- t.mu1 = 0x00b5;
- t.muasquare = 0x3382;
- t.muchgreater = 0x226b;
- t.muchless = 0x226a;
- t.mufsquare = 0x338c;
- t.mugreek = 0x03bc;
- t.mugsquare = 0x338d;
- t.muhiragana = 0x3080;
- t.mukatakana = 0x30e0;
- t.mukatakanahalfwidth = 0xff91;
- t.mulsquare = 0x3395;
- t.multiply = 0x00d7;
- t.mumsquare = 0x339b;
- t.munahhebrew = 0x05a3;
- t.munahlefthebrew = 0x05a3;
- t.musicalnote = 0x266a;
- t.musicalnotedbl = 0x266b;
- t.musicflatsign = 0x266d;
- t.musicsharpsign = 0x266f;
- t.mussquare = 0x33b2;
- t.muvsquare = 0x33b6;
- t.muwsquare = 0x33bc;
- t.mvmegasquare = 0x33b9;
- t.mvsquare = 0x33b7;
- t.mwmegasquare = 0x33bf;
- t.mwsquare = 0x33bd;
- t.n = 0x006e;
- t.nabengali = 0x09a8;
- t.nabla = 0x2207;
- t.nacute = 0x0144;
- t.nadeva = 0x0928;
- t.nagujarati = 0x0aa8;
- t.nagurmukhi = 0x0a28;
- t.nahiragana = 0x306a;
- t.nakatakana = 0x30ca;
- t.nakatakanahalfwidth = 0xff85;
- t.napostrophe = 0x0149;
- t.nasquare = 0x3381;
- t.nbopomofo = 0x310b;
- t.nbspace = 0x00a0;
- t.ncaron = 0x0148;
- t.ncedilla = 0x0146;
- t.ncircle = 0x24dd;
- t.ncircumflexbelow = 0x1e4b;
- t.ncommaaccent = 0x0146;
- t.ndotaccent = 0x1e45;
- t.ndotbelow = 0x1e47;
- t.nehiragana = 0x306d;
- t.nekatakana = 0x30cd;
- t.nekatakanahalfwidth = 0xff88;
- t.newsheqelsign = 0x20aa;
- t.nfsquare = 0x338b;
- t.ngabengali = 0x0999;
- t.ngadeva = 0x0919;
- t.ngagujarati = 0x0a99;
- t.ngagurmukhi = 0x0a19;
- t.ngonguthai = 0x0e07;
- t.nhiragana = 0x3093;
- t.nhookleft = 0x0272;
- t.nhookretroflex = 0x0273;
- t.nieunacirclekorean = 0x326f;
- t.nieunaparenkorean = 0x320f;
- t.nieuncieuckorean = 0x3135;
- t.nieuncirclekorean = 0x3261;
- t.nieunhieuhkorean = 0x3136;
- t.nieunkorean = 0x3134;
- t.nieunpansioskorean = 0x3168;
- t.nieunparenkorean = 0x3201;
- t.nieunsioskorean = 0x3167;
- t.nieuntikeutkorean = 0x3166;
- t.nihiragana = 0x306b;
- t.nikatakana = 0x30cb;
- t.nikatakanahalfwidth = 0xff86;
- t.nikhahitleftthai = 0xf899;
- t.nikhahitthai = 0x0e4d;
- t.nine = 0x0039;
- t.ninearabic = 0x0669;
- t.ninebengali = 0x09ef;
- t.ninecircle = 0x2468;
- t.ninecircleinversesansserif = 0x2792;
- t.ninedeva = 0x096f;
- t.ninegujarati = 0x0aef;
- t.ninegurmukhi = 0x0a6f;
- t.ninehackarabic = 0x0669;
- t.ninehangzhou = 0x3029;
- t.nineideographicparen = 0x3228;
- t.nineinferior = 0x2089;
- t.ninemonospace = 0xff19;
- t.nineoldstyle = 0xf739;
- t.nineparen = 0x247c;
- t.nineperiod = 0x2490;
- t.ninepersian = 0x06f9;
- t.nineroman = 0x2178;
- t.ninesuperior = 0x2079;
- t.nineteencircle = 0x2472;
- t.nineteenparen = 0x2486;
- t.nineteenperiod = 0x249a;
- t.ninethai = 0x0e59;
- t.nj = 0x01cc;
- t.njecyrillic = 0x045a;
- t.nkatakana = 0x30f3;
- t.nkatakanahalfwidth = 0xff9d;
- t.nlegrightlong = 0x019e;
- t.nlinebelow = 0x1e49;
- t.nmonospace = 0xff4e;
- t.nmsquare = 0x339a;
- t.nnabengali = 0x09a3;
- t.nnadeva = 0x0923;
- t.nnagujarati = 0x0aa3;
- t.nnagurmukhi = 0x0a23;
- t.nnnadeva = 0x0929;
- t.nohiragana = 0x306e;
- t.nokatakana = 0x30ce;
- t.nokatakanahalfwidth = 0xff89;
- t.nonbreakingspace = 0x00a0;
- t.nonenthai = 0x0e13;
- t.nonuthai = 0x0e19;
- t.noonarabic = 0x0646;
- t.noonfinalarabic = 0xfee6;
- t.noonghunnaarabic = 0x06ba;
- t.noonghunnafinalarabic = 0xfb9f;
- t.nooninitialarabic = 0xfee7;
- t.noonjeeminitialarabic = 0xfcd2;
- t.noonjeemisolatedarabic = 0xfc4b;
- t.noonmedialarabic = 0xfee8;
- t.noonmeeminitialarabic = 0xfcd5;
- t.noonmeemisolatedarabic = 0xfc4e;
- t.noonnoonfinalarabic = 0xfc8d;
- t.notcontains = 0x220c;
- t.notelement = 0x2209;
- t.notelementof = 0x2209;
- t.notequal = 0x2260;
- t.notgreater = 0x226f;
- t.notgreaternorequal = 0x2271;
- t.notgreaternorless = 0x2279;
- t.notidentical = 0x2262;
- t.notless = 0x226e;
- t.notlessnorequal = 0x2270;
- t.notparallel = 0x2226;
- t.notprecedes = 0x2280;
- t.notsubset = 0x2284;
- t.notsucceeds = 0x2281;
- t.notsuperset = 0x2285;
- t.nowarmenian = 0x0576;
- t.nparen = 0x24a9;
- t.nssquare = 0x33b1;
- t.nsuperior = 0x207f;
- t.ntilde = 0x00f1;
- t.nu = 0x03bd;
- t.nuhiragana = 0x306c;
- t.nukatakana = 0x30cc;
- t.nukatakanahalfwidth = 0xff87;
- t.nuktabengali = 0x09bc;
- t.nuktadeva = 0x093c;
- t.nuktagujarati = 0x0abc;
- t.nuktagurmukhi = 0x0a3c;
- t.numbersign = 0x0023;
- t.numbersignmonospace = 0xff03;
- t.numbersignsmall = 0xfe5f;
- t.numeralsigngreek = 0x0374;
- t.numeralsignlowergreek = 0x0375;
- t.numero = 0x2116;
- t.nun = 0x05e0;
- t.nundagesh = 0xfb40;
- t.nundageshhebrew = 0xfb40;
- t.nunhebrew = 0x05e0;
- t.nvsquare = 0x33b5;
- t.nwsquare = 0x33bb;
- t.nyabengali = 0x099e;
- t.nyadeva = 0x091e;
- t.nyagujarati = 0x0a9e;
- t.nyagurmukhi = 0x0a1e;
- t.o = 0x006f;
- t.oacute = 0x00f3;
- t.oangthai = 0x0e2d;
- t.obarred = 0x0275;
- t.obarredcyrillic = 0x04e9;
- t.obarreddieresiscyrillic = 0x04eb;
- t.obengali = 0x0993;
- t.obopomofo = 0x311b;
- t.obreve = 0x014f;
- t.ocandradeva = 0x0911;
- t.ocandragujarati = 0x0a91;
- t.ocandravowelsigndeva = 0x0949;
- t.ocandravowelsigngujarati = 0x0ac9;
- t.ocaron = 0x01d2;
- t.ocircle = 0x24de;
- t.ocircumflex = 0x00f4;
- t.ocircumflexacute = 0x1ed1;
- t.ocircumflexdotbelow = 0x1ed9;
- t.ocircumflexgrave = 0x1ed3;
- t.ocircumflexhookabove = 0x1ed5;
- t.ocircumflextilde = 0x1ed7;
- t.ocyrillic = 0x043e;
- t.odblacute = 0x0151;
- t.odblgrave = 0x020d;
- t.odeva = 0x0913;
- t.odieresis = 0x00f6;
- t.odieresiscyrillic = 0x04e7;
- t.odotbelow = 0x1ecd;
- t.oe = 0x0153;
- t.oekorean = 0x315a;
- t.ogonek = 0x02db;
- t.ogonekcmb = 0x0328;
- t.ograve = 0x00f2;
- t.ogujarati = 0x0a93;
- t.oharmenian = 0x0585;
- t.ohiragana = 0x304a;
- t.ohookabove = 0x1ecf;
- t.ohorn = 0x01a1;
- t.ohornacute = 0x1edb;
- t.ohorndotbelow = 0x1ee3;
- t.ohorngrave = 0x1edd;
- t.ohornhookabove = 0x1edf;
- t.ohorntilde = 0x1ee1;
- t.ohungarumlaut = 0x0151;
- t.oi = 0x01a3;
- t.oinvertedbreve = 0x020f;
- t.okatakana = 0x30aa;
- t.okatakanahalfwidth = 0xff75;
- t.okorean = 0x3157;
- t.olehebrew = 0x05ab;
- t.omacron = 0x014d;
- t.omacronacute = 0x1e53;
- t.omacrongrave = 0x1e51;
- t.omdeva = 0x0950;
- t.omega = 0x03c9;
- t.omega1 = 0x03d6;
- t.omegacyrillic = 0x0461;
- t.omegalatinclosed = 0x0277;
- t.omegaroundcyrillic = 0x047b;
- t.omegatitlocyrillic = 0x047d;
- t.omegatonos = 0x03ce;
- t.omgujarati = 0x0ad0;
- t.omicron = 0x03bf;
- t.omicrontonos = 0x03cc;
- t.omonospace = 0xff4f;
- t.one = 0x0031;
- t.onearabic = 0x0661;
- t.onebengali = 0x09e7;
- t.onecircle = 0x2460;
- t.onecircleinversesansserif = 0x278a;
- t.onedeva = 0x0967;
- t.onedotenleader = 0x2024;
- t.oneeighth = 0x215b;
- t.onefitted = 0xf6dc;
- t.onegujarati = 0x0ae7;
- t.onegurmukhi = 0x0a67;
- t.onehackarabic = 0x0661;
- t.onehalf = 0x00bd;
- t.onehangzhou = 0x3021;
- t.oneideographicparen = 0x3220;
- t.oneinferior = 0x2081;
- t.onemonospace = 0xff11;
- t.onenumeratorbengali = 0x09f4;
- t.oneoldstyle = 0xf731;
- t.oneparen = 0x2474;
- t.oneperiod = 0x2488;
- t.onepersian = 0x06f1;
- t.onequarter = 0x00bc;
- t.oneroman = 0x2170;
- t.onesuperior = 0x00b9;
- t.onethai = 0x0e51;
- t.onethird = 0x2153;
- t.oogonek = 0x01eb;
- t.oogonekmacron = 0x01ed;
- t.oogurmukhi = 0x0a13;
- t.oomatragurmukhi = 0x0a4b;
- t.oopen = 0x0254;
- t.oparen = 0x24aa;
- t.openbullet = 0x25e6;
- t.option = 0x2325;
- t.ordfeminine = 0x00aa;
- t.ordmasculine = 0x00ba;
- t.orthogonal = 0x221f;
- t.oshortdeva = 0x0912;
- t.oshortvowelsigndeva = 0x094a;
- t.oslash = 0x00f8;
- t.oslashacute = 0x01ff;
- t.osmallhiragana = 0x3049;
- t.osmallkatakana = 0x30a9;
- t.osmallkatakanahalfwidth = 0xff6b;
- t.ostrokeacute = 0x01ff;
- t.osuperior = 0xf6f0;
- t.otcyrillic = 0x047f;
- t.otilde = 0x00f5;
- t.otildeacute = 0x1e4d;
- t.otildedieresis = 0x1e4f;
- t.oubopomofo = 0x3121;
- t.overline = 0x203e;
- t.overlinecenterline = 0xfe4a;
- t.overlinecmb = 0x0305;
- t.overlinedashed = 0xfe49;
- t.overlinedblwavy = 0xfe4c;
- t.overlinewavy = 0xfe4b;
- t.overscore = 0x00af;
- t.ovowelsignbengali = 0x09cb;
- t.ovowelsigndeva = 0x094b;
- t.ovowelsigngujarati = 0x0acb;
- t.p = 0x0070;
- t.paampssquare = 0x3380;
- t.paasentosquare = 0x332b;
- t.pabengali = 0x09aa;
- t.pacute = 0x1e55;
- t.padeva = 0x092a;
- t.pagedown = 0x21df;
- t.pageup = 0x21de;
- t.pagujarati = 0x0aaa;
- t.pagurmukhi = 0x0a2a;
- t.pahiragana = 0x3071;
- t.paiyannoithai = 0x0e2f;
- t.pakatakana = 0x30d1;
- t.palatalizationcyrilliccmb = 0x0484;
- t.palochkacyrillic = 0x04c0;
- t.pansioskorean = 0x317f;
- t.paragraph = 0x00b6;
- t.parallel = 0x2225;
- t.parenleft = 0x0028;
- t.parenleftaltonearabic = 0xfd3e;
- t.parenleftbt = 0xf8ed;
- t.parenleftex = 0xf8ec;
- t.parenleftinferior = 0x208d;
- t.parenleftmonospace = 0xff08;
- t.parenleftsmall = 0xfe59;
- t.parenleftsuperior = 0x207d;
- t.parenlefttp = 0xf8eb;
- t.parenleftvertical = 0xfe35;
- t.parenright = 0x0029;
- t.parenrightaltonearabic = 0xfd3f;
- t.parenrightbt = 0xf8f8;
- t.parenrightex = 0xf8f7;
- t.parenrightinferior = 0x208e;
- t.parenrightmonospace = 0xff09;
- t.parenrightsmall = 0xfe5a;
- t.parenrightsuperior = 0x207e;
- t.parenrighttp = 0xf8f6;
- t.parenrightvertical = 0xfe36;
- t.partialdiff = 0x2202;
- t.paseqhebrew = 0x05c0;
- t.pashtahebrew = 0x0599;
- t.pasquare = 0x33a9;
- t.patah = 0x05b7;
- t.patah11 = 0x05b7;
- t.patah1d = 0x05b7;
- t.patah2a = 0x05b7;
- t.patahhebrew = 0x05b7;
- t.patahnarrowhebrew = 0x05b7;
- t.patahquarterhebrew = 0x05b7;
- t.patahwidehebrew = 0x05b7;
- t.pazerhebrew = 0x05a1;
- t.pbopomofo = 0x3106;
- t.pcircle = 0x24df;
- t.pdotaccent = 0x1e57;
- t.pe = 0x05e4;
- t.pecyrillic = 0x043f;
- t.pedagesh = 0xfb44;
- t.pedageshhebrew = 0xfb44;
- t.peezisquare = 0x333b;
- t.pefinaldageshhebrew = 0xfb43;
- t.peharabic = 0x067e;
- t.peharmenian = 0x057a;
- t.pehebrew = 0x05e4;
- t.pehfinalarabic = 0xfb57;
- t.pehinitialarabic = 0xfb58;
- t.pehiragana = 0x307a;
- t.pehmedialarabic = 0xfb59;
- t.pekatakana = 0x30da;
- t.pemiddlehookcyrillic = 0x04a7;
- t.perafehebrew = 0xfb4e;
- t.percent = 0x0025;
- t.percentarabic = 0x066a;
- t.percentmonospace = 0xff05;
- t.percentsmall = 0xfe6a;
- t.period = 0x002e;
- t.periodarmenian = 0x0589;
- t.periodcentered = 0x00b7;
- t.periodhalfwidth = 0xff61;
- t.periodinferior = 0xf6e7;
- t.periodmonospace = 0xff0e;
- t.periodsmall = 0xfe52;
- t.periodsuperior = 0xf6e8;
- t.perispomenigreekcmb = 0x0342;
- t.perpendicular = 0x22a5;
- t.perthousand = 0x2030;
- t.peseta = 0x20a7;
- t.pfsquare = 0x338a;
- t.phabengali = 0x09ab;
- t.phadeva = 0x092b;
- t.phagujarati = 0x0aab;
- t.phagurmukhi = 0x0a2b;
- t.phi = 0x03c6;
- t.phi1 = 0x03d5;
- t.phieuphacirclekorean = 0x327a;
- t.phieuphaparenkorean = 0x321a;
- t.phieuphcirclekorean = 0x326c;
- t.phieuphkorean = 0x314d;
- t.phieuphparenkorean = 0x320c;
- t.philatin = 0x0278;
- t.phinthuthai = 0x0e3a;
- t.phisymbolgreek = 0x03d5;
- t.phook = 0x01a5;
- t.phophanthai = 0x0e1e;
- t.phophungthai = 0x0e1c;
- t.phosamphaothai = 0x0e20;
- t.pi = 0x03c0;
- t.pieupacirclekorean = 0x3273;
- t.pieupaparenkorean = 0x3213;
- t.pieupcieuckorean = 0x3176;
- t.pieupcirclekorean = 0x3265;
- t.pieupkiyeokkorean = 0x3172;
- t.pieupkorean = 0x3142;
- t.pieupparenkorean = 0x3205;
- t.pieupsioskiyeokkorean = 0x3174;
- t.pieupsioskorean = 0x3144;
- t.pieupsiostikeutkorean = 0x3175;
- t.pieupthieuthkorean = 0x3177;
- t.pieuptikeutkorean = 0x3173;
- t.pihiragana = 0x3074;
- t.pikatakana = 0x30d4;
- t.pisymbolgreek = 0x03d6;
- t.piwrarmenian = 0x0583;
- t.plus = 0x002b;
- t.plusbelowcmb = 0x031f;
- t.pluscircle = 0x2295;
- t.plusminus = 0x00b1;
- t.plusmod = 0x02d6;
- t.plusmonospace = 0xff0b;
- t.plussmall = 0xfe62;
- t.plussuperior = 0x207a;
- t.pmonospace = 0xff50;
- t.pmsquare = 0x33d8;
- t.pohiragana = 0x307d;
- t.pointingindexdownwhite = 0x261f;
- t.pointingindexleftwhite = 0x261c;
- t.pointingindexrightwhite = 0x261e;
- t.pointingindexupwhite = 0x261d;
- t.pokatakana = 0x30dd;
- t.poplathai = 0x0e1b;
- t.postalmark = 0x3012;
- t.postalmarkface = 0x3020;
- t.pparen = 0x24ab;
- t.precedes = 0x227a;
- t.prescription = 0x211e;
- t.primemod = 0x02b9;
- t.primereversed = 0x2035;
- t.product = 0x220f;
- t.projective = 0x2305;
- t.prolongedkana = 0x30fc;
- t.propellor = 0x2318;
- t.propersubset = 0x2282;
- t.propersuperset = 0x2283;
- t.proportion = 0x2237;
- t.proportional = 0x221d;
- t.psi = 0x03c8;
- t.psicyrillic = 0x0471;
- t.psilipneumatacyrilliccmb = 0x0486;
- t.pssquare = 0x33b0;
- t.puhiragana = 0x3077;
- t.pukatakana = 0x30d7;
- t.pvsquare = 0x33b4;
- t.pwsquare = 0x33ba;
- t.q = 0x0071;
- t.qadeva = 0x0958;
- t.qadmahebrew = 0x05a8;
- t.qafarabic = 0x0642;
- t.qaffinalarabic = 0xfed6;
- t.qafinitialarabic = 0xfed7;
- t.qafmedialarabic = 0xfed8;
- t.qamats = 0x05b8;
- t.qamats10 = 0x05b8;
- t.qamats1a = 0x05b8;
- t.qamats1c = 0x05b8;
- t.qamats27 = 0x05b8;
- t.qamats29 = 0x05b8;
- t.qamats33 = 0x05b8;
- t.qamatsde = 0x05b8;
- t.qamatshebrew = 0x05b8;
- t.qamatsnarrowhebrew = 0x05b8;
- t.qamatsqatanhebrew = 0x05b8;
- t.qamatsqatannarrowhebrew = 0x05b8;
- t.qamatsqatanquarterhebrew = 0x05b8;
- t.qamatsqatanwidehebrew = 0x05b8;
- t.qamatsquarterhebrew = 0x05b8;
- t.qamatswidehebrew = 0x05b8;
- t.qarneyparahebrew = 0x059f;
- t.qbopomofo = 0x3111;
- t.qcircle = 0x24e0;
- t.qhook = 0x02a0;
- t.qmonospace = 0xff51;
- t.qof = 0x05e7;
- t.qofdagesh = 0xfb47;
- t.qofdageshhebrew = 0xfb47;
- t.qofhebrew = 0x05e7;
- t.qparen = 0x24ac;
- t.quarternote = 0x2669;
- t.qubuts = 0x05bb;
- t.qubuts18 = 0x05bb;
- t.qubuts25 = 0x05bb;
- t.qubuts31 = 0x05bb;
- t.qubutshebrew = 0x05bb;
- t.qubutsnarrowhebrew = 0x05bb;
- t.qubutsquarterhebrew = 0x05bb;
- t.qubutswidehebrew = 0x05bb;
- t.question = 0x003f;
- t.questionarabic = 0x061f;
- t.questionarmenian = 0x055e;
- t.questiondown = 0x00bf;
- t.questiondownsmall = 0xf7bf;
- t.questiongreek = 0x037e;
- t.questionmonospace = 0xff1f;
- t.questionsmall = 0xf73f;
- t.quotedbl = 0x0022;
- t.quotedblbase = 0x201e;
- t.quotedblleft = 0x201c;
- t.quotedblmonospace = 0xff02;
- t.quotedblprime = 0x301e;
- t.quotedblprimereversed = 0x301d;
- t.quotedblright = 0x201d;
- t.quoteleft = 0x2018;
- t.quoteleftreversed = 0x201b;
- t.quotereversed = 0x201b;
- t.quoteright = 0x2019;
- t.quoterightn = 0x0149;
- t.quotesinglbase = 0x201a;
- t.quotesingle = 0x0027;
- t.quotesinglemonospace = 0xff07;
- t.r = 0x0072;
- t.raarmenian = 0x057c;
- t.rabengali = 0x09b0;
- t.racute = 0x0155;
- t.radeva = 0x0930;
- t.radical = 0x221a;
- t.radicalex = 0xf8e5;
- t.radoverssquare = 0x33ae;
- t.radoverssquaredsquare = 0x33af;
- t.radsquare = 0x33ad;
- t.rafe = 0x05bf;
- t.rafehebrew = 0x05bf;
- t.ragujarati = 0x0ab0;
- t.ragurmukhi = 0x0a30;
- t.rahiragana = 0x3089;
- t.rakatakana = 0x30e9;
- t.rakatakanahalfwidth = 0xff97;
- t.ralowerdiagonalbengali = 0x09f1;
- t.ramiddlediagonalbengali = 0x09f0;
- t.ramshorn = 0x0264;
- t.ratio = 0x2236;
- t.rbopomofo = 0x3116;
- t.rcaron = 0x0159;
- t.rcedilla = 0x0157;
- t.rcircle = 0x24e1;
- t.rcommaaccent = 0x0157;
- t.rdblgrave = 0x0211;
- t.rdotaccent = 0x1e59;
- t.rdotbelow = 0x1e5b;
- t.rdotbelowmacron = 0x1e5d;
- t.referencemark = 0x203b;
- t.reflexsubset = 0x2286;
- t.reflexsuperset = 0x2287;
- t.registered = 0x00ae;
- t.registersans = 0xf8e8;
- t.registerserif = 0xf6da;
- t.reharabic = 0x0631;
- t.reharmenian = 0x0580;
- t.rehfinalarabic = 0xfeae;
- t.rehiragana = 0x308c;
- t.rekatakana = 0x30ec;
- t.rekatakanahalfwidth = 0xff9a;
- t.resh = 0x05e8;
- t.reshdageshhebrew = 0xfb48;
- t.reshhebrew = 0x05e8;
- t.reversedtilde = 0x223d;
- t.reviahebrew = 0x0597;
- t.reviamugrashhebrew = 0x0597;
- t.revlogicalnot = 0x2310;
- t.rfishhook = 0x027e;
- t.rfishhookreversed = 0x027f;
- t.rhabengali = 0x09dd;
- t.rhadeva = 0x095d;
- t.rho = 0x03c1;
- t.rhook = 0x027d;
- t.rhookturned = 0x027b;
- t.rhookturnedsuperior = 0x02b5;
- t.rhosymbolgreek = 0x03f1;
- t.rhotichookmod = 0x02de;
- t.rieulacirclekorean = 0x3271;
- t.rieulaparenkorean = 0x3211;
- t.rieulcirclekorean = 0x3263;
- t.rieulhieuhkorean = 0x3140;
- t.rieulkiyeokkorean = 0x313a;
- t.rieulkiyeoksioskorean = 0x3169;
- t.rieulkorean = 0x3139;
- t.rieulmieumkorean = 0x313b;
- t.rieulpansioskorean = 0x316c;
- t.rieulparenkorean = 0x3203;
- t.rieulphieuphkorean = 0x313f;
- t.rieulpieupkorean = 0x313c;
- t.rieulpieupsioskorean = 0x316b;
- t.rieulsioskorean = 0x313d;
- t.rieulthieuthkorean = 0x313e;
- t.rieultikeutkorean = 0x316a;
- t.rieulyeorinhieuhkorean = 0x316d;
- t.rightangle = 0x221f;
- t.righttackbelowcmb = 0x0319;
- t.righttriangle = 0x22bf;
- t.rihiragana = 0x308a;
- t.rikatakana = 0x30ea;
- t.rikatakanahalfwidth = 0xff98;
- t.ring = 0x02da;
- t.ringbelowcmb = 0x0325;
- t.ringcmb = 0x030a;
- t.ringhalfleft = 0x02bf;
- t.ringhalfleftarmenian = 0x0559;
- t.ringhalfleftbelowcmb = 0x031c;
- t.ringhalfleftcentered = 0x02d3;
- t.ringhalfright = 0x02be;
- t.ringhalfrightbelowcmb = 0x0339;
- t.ringhalfrightcentered = 0x02d2;
- t.rinvertedbreve = 0x0213;
- t.rittorusquare = 0x3351;
- t.rlinebelow = 0x1e5f;
- t.rlongleg = 0x027c;
- t.rlonglegturned = 0x027a;
- t.rmonospace = 0xff52;
- t.rohiragana = 0x308d;
- t.rokatakana = 0x30ed;
- t.rokatakanahalfwidth = 0xff9b;
- t.roruathai = 0x0e23;
- t.rparen = 0x24ad;
- t.rrabengali = 0x09dc;
- t.rradeva = 0x0931;
- t.rragurmukhi = 0x0a5c;
- t.rreharabic = 0x0691;
- t.rrehfinalarabic = 0xfb8d;
- t.rrvocalicbengali = 0x09e0;
- t.rrvocalicdeva = 0x0960;
- t.rrvocalicgujarati = 0x0ae0;
- t.rrvocalicvowelsignbengali = 0x09c4;
- t.rrvocalicvowelsigndeva = 0x0944;
- t.rrvocalicvowelsigngujarati = 0x0ac4;
- t.rsuperior = 0xf6f1;
- t.rtblock = 0x2590;
- t.rturned = 0x0279;
- t.rturnedsuperior = 0x02b4;
- t.ruhiragana = 0x308b;
- t.rukatakana = 0x30eb;
- t.rukatakanahalfwidth = 0xff99;
- t.rupeemarkbengali = 0x09f2;
- t.rupeesignbengali = 0x09f3;
- t.rupiah = 0xf6dd;
- t.ruthai = 0x0e24;
- t.rvocalicbengali = 0x098b;
- t.rvocalicdeva = 0x090b;
- t.rvocalicgujarati = 0x0a8b;
- t.rvocalicvowelsignbengali = 0x09c3;
- t.rvocalicvowelsigndeva = 0x0943;
- t.rvocalicvowelsigngujarati = 0x0ac3;
- t.s = 0x0073;
- t.sabengali = 0x09b8;
- t.sacute = 0x015b;
- t.sacutedotaccent = 0x1e65;
- t.sadarabic = 0x0635;
- t.sadeva = 0x0938;
- t.sadfinalarabic = 0xfeba;
- t.sadinitialarabic = 0xfebb;
- t.sadmedialarabic = 0xfebc;
- t.sagujarati = 0x0ab8;
- t.sagurmukhi = 0x0a38;
- t.sahiragana = 0x3055;
- t.sakatakana = 0x30b5;
- t.sakatakanahalfwidth = 0xff7b;
- t.sallallahoualayhewasallamarabic = 0xfdfa;
- t.samekh = 0x05e1;
- t.samekhdagesh = 0xfb41;
- t.samekhdageshhebrew = 0xfb41;
- t.samekhhebrew = 0x05e1;
- t.saraaathai = 0x0e32;
- t.saraaethai = 0x0e41;
- t.saraaimaimalaithai = 0x0e44;
- t.saraaimaimuanthai = 0x0e43;
- t.saraamthai = 0x0e33;
- t.saraathai = 0x0e30;
- t.saraethai = 0x0e40;
- t.saraiileftthai = 0xf886;
- t.saraiithai = 0x0e35;
- t.saraileftthai = 0xf885;
- t.saraithai = 0x0e34;
- t.saraothai = 0x0e42;
- t.saraueeleftthai = 0xf888;
- t.saraueethai = 0x0e37;
- t.saraueleftthai = 0xf887;
- t.sarauethai = 0x0e36;
- t.sarauthai = 0x0e38;
- t.sarauuthai = 0x0e39;
- t.sbopomofo = 0x3119;
- t.scaron = 0x0161;
- t.scarondotaccent = 0x1e67;
- t.scedilla = 0x015f;
- t.schwa = 0x0259;
- t.schwacyrillic = 0x04d9;
- t.schwadieresiscyrillic = 0x04db;
- t.schwahook = 0x025a;
- t.scircle = 0x24e2;
- t.scircumflex = 0x015d;
- t.scommaaccent = 0x0219;
- t.sdotaccent = 0x1e61;
- t.sdotbelow = 0x1e63;
- t.sdotbelowdotaccent = 0x1e69;
- t.seagullbelowcmb = 0x033c;
- t.second = 0x2033;
- t.secondtonechinese = 0x02ca;
- t.section = 0x00a7;
- t.seenarabic = 0x0633;
- t.seenfinalarabic = 0xfeb2;
- t.seeninitialarabic = 0xfeb3;
- t.seenmedialarabic = 0xfeb4;
- t.segol = 0x05b6;
- t.segol13 = 0x05b6;
- t.segol1f = 0x05b6;
- t.segol2c = 0x05b6;
- t.segolhebrew = 0x05b6;
- t.segolnarrowhebrew = 0x05b6;
- t.segolquarterhebrew = 0x05b6;
- t.segoltahebrew = 0x0592;
- t.segolwidehebrew = 0x05b6;
- t.seharmenian = 0x057d;
- t.sehiragana = 0x305b;
- t.sekatakana = 0x30bb;
- t.sekatakanahalfwidth = 0xff7e;
- t.semicolon = 0x003b;
- t.semicolonarabic = 0x061b;
- t.semicolonmonospace = 0xff1b;
- t.semicolonsmall = 0xfe54;
- t.semivoicedmarkkana = 0x309c;
- t.semivoicedmarkkanahalfwidth = 0xff9f;
- t.sentisquare = 0x3322;
- t.sentosquare = 0x3323;
- t.seven = 0x0037;
- t.sevenarabic = 0x0667;
- t.sevenbengali = 0x09ed;
- t.sevencircle = 0x2466;
- t.sevencircleinversesansserif = 0x2790;
- t.sevendeva = 0x096d;
- t.seveneighths = 0x215e;
- t.sevengujarati = 0x0aed;
- t.sevengurmukhi = 0x0a6d;
- t.sevenhackarabic = 0x0667;
- t.sevenhangzhou = 0x3027;
- t.sevenideographicparen = 0x3226;
- t.seveninferior = 0x2087;
- t.sevenmonospace = 0xff17;
- t.sevenoldstyle = 0xf737;
- t.sevenparen = 0x247a;
- t.sevenperiod = 0x248e;
- t.sevenpersian = 0x06f7;
- t.sevenroman = 0x2176;
- t.sevensuperior = 0x2077;
- t.seventeencircle = 0x2470;
- t.seventeenparen = 0x2484;
- t.seventeenperiod = 0x2498;
- t.seventhai = 0x0e57;
- t.sfthyphen = 0x00ad;
- t.shaarmenian = 0x0577;
- t.shabengali = 0x09b6;
- t.shacyrillic = 0x0448;
- t.shaddaarabic = 0x0651;
- t.shaddadammaarabic = 0xfc61;
- t.shaddadammatanarabic = 0xfc5e;
- t.shaddafathaarabic = 0xfc60;
- t.shaddakasraarabic = 0xfc62;
- t.shaddakasratanarabic = 0xfc5f;
- t.shade = 0x2592;
- t.shadedark = 0x2593;
- t.shadelight = 0x2591;
- t.shademedium = 0x2592;
- t.shadeva = 0x0936;
- t.shagujarati = 0x0ab6;
- t.shagurmukhi = 0x0a36;
- t.shalshelethebrew = 0x0593;
- t.shbopomofo = 0x3115;
- t.shchacyrillic = 0x0449;
- t.sheenarabic = 0x0634;
- t.sheenfinalarabic = 0xfeb6;
- t.sheeninitialarabic = 0xfeb7;
- t.sheenmedialarabic = 0xfeb8;
- t.sheicoptic = 0x03e3;
- t.sheqel = 0x20aa;
- t.sheqelhebrew = 0x20aa;
- t.sheva = 0x05b0;
- t.sheva115 = 0x05b0;
- t.sheva15 = 0x05b0;
- t.sheva22 = 0x05b0;
- t.sheva2e = 0x05b0;
- t.shevahebrew = 0x05b0;
- t.shevanarrowhebrew = 0x05b0;
- t.shevaquarterhebrew = 0x05b0;
- t.shevawidehebrew = 0x05b0;
- t.shhacyrillic = 0x04bb;
- t.shimacoptic = 0x03ed;
- t.shin = 0x05e9;
- t.shindagesh = 0xfb49;
- t.shindageshhebrew = 0xfb49;
- t.shindageshshindot = 0xfb2c;
- t.shindageshshindothebrew = 0xfb2c;
- t.shindageshsindot = 0xfb2d;
- t.shindageshsindothebrew = 0xfb2d;
- t.shindothebrew = 0x05c1;
- t.shinhebrew = 0x05e9;
- t.shinshindot = 0xfb2a;
- t.shinshindothebrew = 0xfb2a;
- t.shinsindot = 0xfb2b;
- t.shinsindothebrew = 0xfb2b;
- t.shook = 0x0282;
- t.sigma = 0x03c3;
- t.sigma1 = 0x03c2;
- t.sigmafinal = 0x03c2;
- t.sigmalunatesymbolgreek = 0x03f2;
- t.sihiragana = 0x3057;
- t.sikatakana = 0x30b7;
- t.sikatakanahalfwidth = 0xff7c;
- t.siluqhebrew = 0x05bd;
- t.siluqlefthebrew = 0x05bd;
- t.similar = 0x223c;
- t.sindothebrew = 0x05c2;
- t.siosacirclekorean = 0x3274;
- t.siosaparenkorean = 0x3214;
- t.sioscieuckorean = 0x317e;
- t.sioscirclekorean = 0x3266;
- t.sioskiyeokkorean = 0x317a;
- t.sioskorean = 0x3145;
- t.siosnieunkorean = 0x317b;
- t.siosparenkorean = 0x3206;
- t.siospieupkorean = 0x317d;
- t.siostikeutkorean = 0x317c;
- t.six = 0x0036;
- t.sixarabic = 0x0666;
- t.sixbengali = 0x09ec;
- t.sixcircle = 0x2465;
- t.sixcircleinversesansserif = 0x278f;
- t.sixdeva = 0x096c;
- t.sixgujarati = 0x0aec;
- t.sixgurmukhi = 0x0a6c;
- t.sixhackarabic = 0x0666;
- t.sixhangzhou = 0x3026;
- t.sixideographicparen = 0x3225;
- t.sixinferior = 0x2086;
- t.sixmonospace = 0xff16;
- t.sixoldstyle = 0xf736;
- t.sixparen = 0x2479;
- t.sixperiod = 0x248d;
- t.sixpersian = 0x06f6;
- t.sixroman = 0x2175;
- t.sixsuperior = 0x2076;
- t.sixteencircle = 0x246f;
- t.sixteencurrencydenominatorbengali = 0x09f9;
- t.sixteenparen = 0x2483;
- t.sixteenperiod = 0x2497;
- t.sixthai = 0x0e56;
- t.slash = 0x002f;
- t.slashmonospace = 0xff0f;
- t.slong = 0x017f;
- t.slongdotaccent = 0x1e9b;
- t.smileface = 0x263a;
- t.smonospace = 0xff53;
- t.sofpasuqhebrew = 0x05c3;
- t.softhyphen = 0x00ad;
- t.softsigncyrillic = 0x044c;
- t.sohiragana = 0x305d;
- t.sokatakana = 0x30bd;
- t.sokatakanahalfwidth = 0xff7f;
- t.soliduslongoverlaycmb = 0x0338;
- t.solidusshortoverlaycmb = 0x0337;
- t.sorusithai = 0x0e29;
- t.sosalathai = 0x0e28;
- t.sosothai = 0x0e0b;
- t.sosuathai = 0x0e2a;
- t.space = 0x0020;
- t.spacehackarabic = 0x0020;
- t.spade = 0x2660;
- t.spadesuitblack = 0x2660;
- t.spadesuitwhite = 0x2664;
- t.sparen = 0x24ae;
- t.squarebelowcmb = 0x033b;
- t.squarecc = 0x33c4;
- t.squarecm = 0x339d;
- t.squarediagonalcrosshatchfill = 0x25a9;
- t.squarehorizontalfill = 0x25a4;
- t.squarekg = 0x338f;
- t.squarekm = 0x339e;
- t.squarekmcapital = 0x33ce;
- t.squareln = 0x33d1;
- t.squarelog = 0x33d2;
- t.squaremg = 0x338e;
- t.squaremil = 0x33d5;
- t.squaremm = 0x339c;
- t.squaremsquared = 0x33a1;
- t.squareorthogonalcrosshatchfill = 0x25a6;
- t.squareupperlefttolowerrightfill = 0x25a7;
- t.squareupperrighttolowerleftfill = 0x25a8;
- t.squareverticalfill = 0x25a5;
- t.squarewhitewithsmallblack = 0x25a3;
- t.srsquare = 0x33db;
- t.ssabengali = 0x09b7;
- t.ssadeva = 0x0937;
- t.ssagujarati = 0x0ab7;
- t.ssangcieuckorean = 0x3149;
- t.ssanghieuhkorean = 0x3185;
- t.ssangieungkorean = 0x3180;
- t.ssangkiyeokkorean = 0x3132;
- t.ssangnieunkorean = 0x3165;
- t.ssangpieupkorean = 0x3143;
- t.ssangsioskorean = 0x3146;
- t.ssangtikeutkorean = 0x3138;
- t.ssuperior = 0xf6f2;
- t.sterling = 0x00a3;
- t.sterlingmonospace = 0xffe1;
- t.strokelongoverlaycmb = 0x0336;
- t.strokeshortoverlaycmb = 0x0335;
- t.subset = 0x2282;
- t.subsetnotequal = 0x228a;
- t.subsetorequal = 0x2286;
- t.succeeds = 0x227b;
- t.suchthat = 0x220b;
- t.suhiragana = 0x3059;
- t.sukatakana = 0x30b9;
- t.sukatakanahalfwidth = 0xff7d;
- t.sukunarabic = 0x0652;
- t.summation = 0x2211;
- t.sun = 0x263c;
- t.superset = 0x2283;
- t.supersetnotequal = 0x228b;
- t.supersetorequal = 0x2287;
- t.svsquare = 0x33dc;
- t.syouwaerasquare = 0x337c;
- t.t = 0x0074;
- t.tabengali = 0x09a4;
- t.tackdown = 0x22a4;
- t.tackleft = 0x22a3;
- t.tadeva = 0x0924;
- t.tagujarati = 0x0aa4;
- t.tagurmukhi = 0x0a24;
- t.taharabic = 0x0637;
- t.tahfinalarabic = 0xfec2;
- t.tahinitialarabic = 0xfec3;
- t.tahiragana = 0x305f;
- t.tahmedialarabic = 0xfec4;
- t.taisyouerasquare = 0x337d;
- t.takatakana = 0x30bf;
- t.takatakanahalfwidth = 0xff80;
- t.tatweelarabic = 0x0640;
- t.tau = 0x03c4;
- t.tav = 0x05ea;
- t.tavdages = 0xfb4a;
- t.tavdagesh = 0xfb4a;
- t.tavdageshhebrew = 0xfb4a;
- t.tavhebrew = 0x05ea;
- t.tbar = 0x0167;
- t.tbopomofo = 0x310a;
- t.tcaron = 0x0165;
- t.tccurl = 0x02a8;
- t.tcedilla = 0x0163;
- t.tcheharabic = 0x0686;
- t.tchehfinalarabic = 0xfb7b;
- t.tchehinitialarabic = 0xfb7c;
- t.tchehmedialarabic = 0xfb7d;
- t.tcircle = 0x24e3;
- t.tcircumflexbelow = 0x1e71;
- t.tcommaaccent = 0x0163;
- t.tdieresis = 0x1e97;
- t.tdotaccent = 0x1e6b;
- t.tdotbelow = 0x1e6d;
- t.tecyrillic = 0x0442;
- t.tedescendercyrillic = 0x04ad;
- t.teharabic = 0x062a;
- t.tehfinalarabic = 0xfe96;
- t.tehhahinitialarabic = 0xfca2;
- t.tehhahisolatedarabic = 0xfc0c;
- t.tehinitialarabic = 0xfe97;
- t.tehiragana = 0x3066;
- t.tehjeeminitialarabic = 0xfca1;
- t.tehjeemisolatedarabic = 0xfc0b;
- t.tehmarbutaarabic = 0x0629;
- t.tehmarbutafinalarabic = 0xfe94;
- t.tehmedialarabic = 0xfe98;
- t.tehmeeminitialarabic = 0xfca4;
- t.tehmeemisolatedarabic = 0xfc0e;
- t.tehnoonfinalarabic = 0xfc73;
- t.tekatakana = 0x30c6;
- t.tekatakanahalfwidth = 0xff83;
- t.telephone = 0x2121;
- t.telephoneblack = 0x260e;
- t.telishagedolahebrew = 0x05a0;
- t.telishaqetanahebrew = 0x05a9;
- t.tencircle = 0x2469;
- t.tenideographicparen = 0x3229;
- t.tenparen = 0x247d;
- t.tenperiod = 0x2491;
- t.tenroman = 0x2179;
- t.tesh = 0x02a7;
- t.tet = 0x05d8;
- t.tetdagesh = 0xfb38;
- t.tetdageshhebrew = 0xfb38;
- t.tethebrew = 0x05d8;
- t.tetsecyrillic = 0x04b5;
- t.tevirhebrew = 0x059b;
- t.tevirlefthebrew = 0x059b;
- t.thabengali = 0x09a5;
- t.thadeva = 0x0925;
- t.thagujarati = 0x0aa5;
- t.thagurmukhi = 0x0a25;
- t.thalarabic = 0x0630;
- t.thalfinalarabic = 0xfeac;
- t.thanthakhatlowleftthai = 0xf898;
- t.thanthakhatlowrightthai = 0xf897;
- t.thanthakhatthai = 0x0e4c;
- t.thanthakhatupperleftthai = 0xf896;
- t.theharabic = 0x062b;
- t.thehfinalarabic = 0xfe9a;
- t.thehinitialarabic = 0xfe9b;
- t.thehmedialarabic = 0xfe9c;
- t.thereexists = 0x2203;
- t.therefore = 0x2234;
- t.theta = 0x03b8;
- t.theta1 = 0x03d1;
- t.thetasymbolgreek = 0x03d1;
- t.thieuthacirclekorean = 0x3279;
- t.thieuthaparenkorean = 0x3219;
- t.thieuthcirclekorean = 0x326b;
- t.thieuthkorean = 0x314c;
- t.thieuthparenkorean = 0x320b;
- t.thirteencircle = 0x246c;
- t.thirteenparen = 0x2480;
- t.thirteenperiod = 0x2494;
- t.thonangmonthothai = 0x0e11;
- t.thook = 0x01ad;
- t.thophuthaothai = 0x0e12;
- t.thorn = 0x00fe;
- t.thothahanthai = 0x0e17;
- t.thothanthai = 0x0e10;
- t.thothongthai = 0x0e18;
- t.thothungthai = 0x0e16;
- t.thousandcyrillic = 0x0482;
- t.thousandsseparatorarabic = 0x066c;
- t.thousandsseparatorpersian = 0x066c;
- t.three = 0x0033;
- t.threearabic = 0x0663;
- t.threebengali = 0x09e9;
- t.threecircle = 0x2462;
- t.threecircleinversesansserif = 0x278c;
- t.threedeva = 0x0969;
- t.threeeighths = 0x215c;
- t.threegujarati = 0x0ae9;
- t.threegurmukhi = 0x0a69;
- t.threehackarabic = 0x0663;
- t.threehangzhou = 0x3023;
- t.threeideographicparen = 0x3222;
- t.threeinferior = 0x2083;
- t.threemonospace = 0xff13;
- t.threenumeratorbengali = 0x09f6;
- t.threeoldstyle = 0xf733;
- t.threeparen = 0x2476;
- t.threeperiod = 0x248a;
- t.threepersian = 0x06f3;
- t.threequarters = 0x00be;
- t.threequartersemdash = 0xf6de;
- t.threeroman = 0x2172;
- t.threesuperior = 0x00b3;
- t.threethai = 0x0e53;
- t.thzsquare = 0x3394;
- t.tihiragana = 0x3061;
- t.tikatakana = 0x30c1;
- t.tikatakanahalfwidth = 0xff81;
- t.tikeutacirclekorean = 0x3270;
- t.tikeutaparenkorean = 0x3210;
- t.tikeutcirclekorean = 0x3262;
- t.tikeutkorean = 0x3137;
- t.tikeutparenkorean = 0x3202;
- t.tilde = 0x02dc;
- t.tildebelowcmb = 0x0330;
- t.tildecmb = 0x0303;
- t.tildecomb = 0x0303;
- t.tildedoublecmb = 0x0360;
- t.tildeoperator = 0x223c;
- t.tildeoverlaycmb = 0x0334;
- t.tildeverticalcmb = 0x033e;
- t.timescircle = 0x2297;
- t.tipehahebrew = 0x0596;
- t.tipehalefthebrew = 0x0596;
- t.tippigurmukhi = 0x0a70;
- t.titlocyrilliccmb = 0x0483;
- t.tiwnarmenian = 0x057f;
- t.tlinebelow = 0x1e6f;
- t.tmonospace = 0xff54;
- t.toarmenian = 0x0569;
- t.tohiragana = 0x3068;
- t.tokatakana = 0x30c8;
- t.tokatakanahalfwidth = 0xff84;
- t.tonebarextrahighmod = 0x02e5;
- t.tonebarextralowmod = 0x02e9;
- t.tonebarhighmod = 0x02e6;
- t.tonebarlowmod = 0x02e8;
- t.tonebarmidmod = 0x02e7;
- t.tonefive = 0x01bd;
- t.tonesix = 0x0185;
- t.tonetwo = 0x01a8;
- t.tonos = 0x0384;
- t.tonsquare = 0x3327;
- t.topatakthai = 0x0e0f;
- t.tortoiseshellbracketleft = 0x3014;
- t.tortoiseshellbracketleftsmall = 0xfe5d;
- t.tortoiseshellbracketleftvertical = 0xfe39;
- t.tortoiseshellbracketright = 0x3015;
- t.tortoiseshellbracketrightsmall = 0xfe5e;
- t.tortoiseshellbracketrightvertical = 0xfe3a;
- t.totaothai = 0x0e15;
- t.tpalatalhook = 0x01ab;
- t.tparen = 0x24af;
- t.trademark = 0x2122;
- t.trademarksans = 0xf8ea;
- t.trademarkserif = 0xf6db;
- t.tretroflexhook = 0x0288;
- t.triagdn = 0x25bc;
- t.triaglf = 0x25c4;
- t.triagrt = 0x25ba;
- t.triagup = 0x25b2;
- t.ts = 0x02a6;
- t.tsadi = 0x05e6;
- t.tsadidagesh = 0xfb46;
- t.tsadidageshhebrew = 0xfb46;
- t.tsadihebrew = 0x05e6;
- t.tsecyrillic = 0x0446;
- t.tsere = 0x05b5;
- t.tsere12 = 0x05b5;
- t.tsere1e = 0x05b5;
- t.tsere2b = 0x05b5;
- t.tserehebrew = 0x05b5;
- t.tserenarrowhebrew = 0x05b5;
- t.tserequarterhebrew = 0x05b5;
- t.tserewidehebrew = 0x05b5;
- t.tshecyrillic = 0x045b;
- t.tsuperior = 0xf6f3;
- t.ttabengali = 0x099f;
- t.ttadeva = 0x091f;
- t.ttagujarati = 0x0a9f;
- t.ttagurmukhi = 0x0a1f;
- t.tteharabic = 0x0679;
- t.ttehfinalarabic = 0xfb67;
- t.ttehinitialarabic = 0xfb68;
- t.ttehmedialarabic = 0xfb69;
- t.tthabengali = 0x09a0;
- t.tthadeva = 0x0920;
- t.tthagujarati = 0x0aa0;
- t.tthagurmukhi = 0x0a20;
- t.tturned = 0x0287;
- t.tuhiragana = 0x3064;
- t.tukatakana = 0x30c4;
- t.tukatakanahalfwidth = 0xff82;
- t.tusmallhiragana = 0x3063;
- t.tusmallkatakana = 0x30c3;
- t.tusmallkatakanahalfwidth = 0xff6f;
- t.twelvecircle = 0x246b;
- t.twelveparen = 0x247f;
- t.twelveperiod = 0x2493;
- t.twelveroman = 0x217b;
- t.twentycircle = 0x2473;
- t.twentyhangzhou = 0x5344;
- t.twentyparen = 0x2487;
- t.twentyperiod = 0x249b;
- t.two = 0x0032;
- t.twoarabic = 0x0662;
- t.twobengali = 0x09e8;
- t.twocircle = 0x2461;
- t.twocircleinversesansserif = 0x278b;
- t.twodeva = 0x0968;
- t.twodotenleader = 0x2025;
- t.twodotleader = 0x2025;
- t.twodotleadervertical = 0xfe30;
- t.twogujarati = 0x0ae8;
- t.twogurmukhi = 0x0a68;
- t.twohackarabic = 0x0662;
- t.twohangzhou = 0x3022;
- t.twoideographicparen = 0x3221;
- t.twoinferior = 0x2082;
- t.twomonospace = 0xff12;
- t.twonumeratorbengali = 0x09f5;
- t.twooldstyle = 0xf732;
- t.twoparen = 0x2475;
- t.twoperiod = 0x2489;
- t.twopersian = 0x06f2;
- t.tworoman = 0x2171;
- t.twostroke = 0x01bb;
- t.twosuperior = 0x00b2;
- t.twothai = 0x0e52;
- t.twothirds = 0x2154;
- t.u = 0x0075;
- t.uacute = 0x00fa;
- t.ubar = 0x0289;
- t.ubengali = 0x0989;
- t.ubopomofo = 0x3128;
- t.ubreve = 0x016d;
- t.ucaron = 0x01d4;
- t.ucircle = 0x24e4;
- t.ucircumflex = 0x00fb;
- t.ucircumflexbelow = 0x1e77;
- t.ucyrillic = 0x0443;
- t.udattadeva = 0x0951;
- t.udblacute = 0x0171;
- t.udblgrave = 0x0215;
- t.udeva = 0x0909;
- t.udieresis = 0x00fc;
- t.udieresisacute = 0x01d8;
- t.udieresisbelow = 0x1e73;
- t.udieresiscaron = 0x01da;
- t.udieresiscyrillic = 0x04f1;
- t.udieresisgrave = 0x01dc;
- t.udieresismacron = 0x01d6;
- t.udotbelow = 0x1ee5;
- t.ugrave = 0x00f9;
- t.ugujarati = 0x0a89;
- t.ugurmukhi = 0x0a09;
- t.uhiragana = 0x3046;
- t.uhookabove = 0x1ee7;
- t.uhorn = 0x01b0;
- t.uhornacute = 0x1ee9;
- t.uhorndotbelow = 0x1ef1;
- t.uhorngrave = 0x1eeb;
- t.uhornhookabove = 0x1eed;
- t.uhorntilde = 0x1eef;
- t.uhungarumlaut = 0x0171;
- t.uhungarumlautcyrillic = 0x04f3;
- t.uinvertedbreve = 0x0217;
- t.ukatakana = 0x30a6;
- t.ukatakanahalfwidth = 0xff73;
- t.ukcyrillic = 0x0479;
- t.ukorean = 0x315c;
- t.umacron = 0x016b;
- t.umacroncyrillic = 0x04ef;
- t.umacrondieresis = 0x1e7b;
- t.umatragurmukhi = 0x0a41;
- t.umonospace = 0xff55;
- t.underscore = 0x005f;
- t.underscoredbl = 0x2017;
- t.underscoremonospace = 0xff3f;
- t.underscorevertical = 0xfe33;
- t.underscorewavy = 0xfe4f;
- t.union = 0x222a;
- t.universal = 0x2200;
- t.uogonek = 0x0173;
- t.uparen = 0x24b0;
- t.upblock = 0x2580;
- t.upperdothebrew = 0x05c4;
- t.upsilon = 0x03c5;
- t.upsilondieresis = 0x03cb;
- t.upsilondieresistonos = 0x03b0;
- t.upsilonlatin = 0x028a;
- t.upsilontonos = 0x03cd;
- t.uptackbelowcmb = 0x031d;
- t.uptackmod = 0x02d4;
- t.uragurmukhi = 0x0a73;
- t.uring = 0x016f;
- t.ushortcyrillic = 0x045e;
- t.usmallhiragana = 0x3045;
- t.usmallkatakana = 0x30a5;
- t.usmallkatakanahalfwidth = 0xff69;
- t.ustraightcyrillic = 0x04af;
- t.ustraightstrokecyrillic = 0x04b1;
- t.utilde = 0x0169;
- t.utildeacute = 0x1e79;
- t.utildebelow = 0x1e75;
- t.uubengali = 0x098a;
- t.uudeva = 0x090a;
- t.uugujarati = 0x0a8a;
- t.uugurmukhi = 0x0a0a;
- t.uumatragurmukhi = 0x0a42;
- t.uuvowelsignbengali = 0x09c2;
- t.uuvowelsigndeva = 0x0942;
- t.uuvowelsigngujarati = 0x0ac2;
- t.uvowelsignbengali = 0x09c1;
- t.uvowelsigndeva = 0x0941;
- t.uvowelsigngujarati = 0x0ac1;
- t.v = 0x0076;
- t.vadeva = 0x0935;
- t.vagujarati = 0x0ab5;
- t.vagurmukhi = 0x0a35;
- t.vakatakana = 0x30f7;
- t.vav = 0x05d5;
- t.vavdagesh = 0xfb35;
- t.vavdagesh65 = 0xfb35;
- t.vavdageshhebrew = 0xfb35;
- t.vavhebrew = 0x05d5;
- t.vavholam = 0xfb4b;
- t.vavholamhebrew = 0xfb4b;
- t.vavvavhebrew = 0x05f0;
- t.vavyodhebrew = 0x05f1;
- t.vcircle = 0x24e5;
- t.vdotbelow = 0x1e7f;
- t.vecyrillic = 0x0432;
- t.veharabic = 0x06a4;
- t.vehfinalarabic = 0xfb6b;
- t.vehinitialarabic = 0xfb6c;
- t.vehmedialarabic = 0xfb6d;
- t.vekatakana = 0x30f9;
- t.venus = 0x2640;
- t.verticalbar = 0x007c;
- t.verticallineabovecmb = 0x030d;
- t.verticallinebelowcmb = 0x0329;
- t.verticallinelowmod = 0x02cc;
- t.verticallinemod = 0x02c8;
- t.vewarmenian = 0x057e;
- t.vhook = 0x028b;
- t.vikatakana = 0x30f8;
- t.viramabengali = 0x09cd;
- t.viramadeva = 0x094d;
- t.viramagujarati = 0x0acd;
- t.visargabengali = 0x0983;
- t.visargadeva = 0x0903;
- t.visargagujarati = 0x0a83;
- t.vmonospace = 0xff56;
- t.voarmenian = 0x0578;
- t.voicediterationhiragana = 0x309e;
- t.voicediterationkatakana = 0x30fe;
- t.voicedmarkkana = 0x309b;
- t.voicedmarkkanahalfwidth = 0xff9e;
- t.vokatakana = 0x30fa;
- t.vparen = 0x24b1;
- t.vtilde = 0x1e7d;
- t.vturned = 0x028c;
- t.vuhiragana = 0x3094;
- t.vukatakana = 0x30f4;
- t.w = 0x0077;
- t.wacute = 0x1e83;
- t.waekorean = 0x3159;
- t.wahiragana = 0x308f;
- t.wakatakana = 0x30ef;
- t.wakatakanahalfwidth = 0xff9c;
- t.wakorean = 0x3158;
- t.wasmallhiragana = 0x308e;
- t.wasmallkatakana = 0x30ee;
- t.wattosquare = 0x3357;
- t.wavedash = 0x301c;
- t.wavyunderscorevertical = 0xfe34;
- t.wawarabic = 0x0648;
- t.wawfinalarabic = 0xfeee;
- t.wawhamzaabovearabic = 0x0624;
- t.wawhamzaabovefinalarabic = 0xfe86;
- t.wbsquare = 0x33dd;
- t.wcircle = 0x24e6;
- t.wcircumflex = 0x0175;
- t.wdieresis = 0x1e85;
- t.wdotaccent = 0x1e87;
- t.wdotbelow = 0x1e89;
- t.wehiragana = 0x3091;
- t.weierstrass = 0x2118;
- t.wekatakana = 0x30f1;
- t.wekorean = 0x315e;
- t.weokorean = 0x315d;
- t.wgrave = 0x1e81;
- t.whitebullet = 0x25e6;
- t.whitecircle = 0x25cb;
- t.whitecircleinverse = 0x25d9;
- t.whitecornerbracketleft = 0x300e;
- t.whitecornerbracketleftvertical = 0xfe43;
- t.whitecornerbracketright = 0x300f;
- t.whitecornerbracketrightvertical = 0xfe44;
- t.whitediamond = 0x25c7;
- t.whitediamondcontainingblacksmalldiamond = 0x25c8;
- t.whitedownpointingsmalltriangle = 0x25bf;
- t.whitedownpointingtriangle = 0x25bd;
- t.whiteleftpointingsmalltriangle = 0x25c3;
- t.whiteleftpointingtriangle = 0x25c1;
- t.whitelenticularbracketleft = 0x3016;
- t.whitelenticularbracketright = 0x3017;
- t.whiterightpointingsmalltriangle = 0x25b9;
- t.whiterightpointingtriangle = 0x25b7;
- t.whitesmallsquare = 0x25ab;
- t.whitesmilingface = 0x263a;
- t.whitesquare = 0x25a1;
- t.whitestar = 0x2606;
- t.whitetelephone = 0x260f;
- t.whitetortoiseshellbracketleft = 0x3018;
- t.whitetortoiseshellbracketright = 0x3019;
- t.whiteuppointingsmalltriangle = 0x25b5;
- t.whiteuppointingtriangle = 0x25b3;
- t.wihiragana = 0x3090;
- t.wikatakana = 0x30f0;
- t.wikorean = 0x315f;
- t.wmonospace = 0xff57;
- t.wohiragana = 0x3092;
- t.wokatakana = 0x30f2;
- t.wokatakanahalfwidth = 0xff66;
- t.won = 0x20a9;
- t.wonmonospace = 0xffe6;
- t.wowaenthai = 0x0e27;
- t.wparen = 0x24b2;
- t.wring = 0x1e98;
- t.wsuperior = 0x02b7;
- t.wturned = 0x028d;
- t.wynn = 0x01bf;
- t.x = 0x0078;
- t.xabovecmb = 0x033d;
- t.xbopomofo = 0x3112;
- t.xcircle = 0x24e7;
- t.xdieresis = 0x1e8d;
- t.xdotaccent = 0x1e8b;
- t.xeharmenian = 0x056d;
- t.xi = 0x03be;
- t.xmonospace = 0xff58;
- t.xparen = 0x24b3;
- t.xsuperior = 0x02e3;
- t.y = 0x0079;
- t.yaadosquare = 0x334e;
- t.yabengali = 0x09af;
- t.yacute = 0x00fd;
- t.yadeva = 0x092f;
- t.yaekorean = 0x3152;
- t.yagujarati = 0x0aaf;
- t.yagurmukhi = 0x0a2f;
- t.yahiragana = 0x3084;
- t.yakatakana = 0x30e4;
- t.yakatakanahalfwidth = 0xff94;
- t.yakorean = 0x3151;
- t.yamakkanthai = 0x0e4e;
- t.yasmallhiragana = 0x3083;
- t.yasmallkatakana = 0x30e3;
- t.yasmallkatakanahalfwidth = 0xff6c;
- t.yatcyrillic = 0x0463;
- t.ycircle = 0x24e8;
- t.ycircumflex = 0x0177;
- t.ydieresis = 0x00ff;
- t.ydotaccent = 0x1e8f;
- t.ydotbelow = 0x1ef5;
- t.yeharabic = 0x064a;
- t.yehbarreearabic = 0x06d2;
- t.yehbarreefinalarabic = 0xfbaf;
- t.yehfinalarabic = 0xfef2;
- t.yehhamzaabovearabic = 0x0626;
- t.yehhamzaabovefinalarabic = 0xfe8a;
- t.yehhamzaaboveinitialarabic = 0xfe8b;
- t.yehhamzaabovemedialarabic = 0xfe8c;
- t.yehinitialarabic = 0xfef3;
- t.yehmedialarabic = 0xfef4;
- t.yehmeeminitialarabic = 0xfcdd;
- t.yehmeemisolatedarabic = 0xfc58;
- t.yehnoonfinalarabic = 0xfc94;
- t.yehthreedotsbelowarabic = 0x06d1;
- t.yekorean = 0x3156;
- t.yen = 0x00a5;
- t.yenmonospace = 0xffe5;
- t.yeokorean = 0x3155;
- t.yeorinhieuhkorean = 0x3186;
- t.yerahbenyomohebrew = 0x05aa;
- t.yerahbenyomolefthebrew = 0x05aa;
- t.yericyrillic = 0x044b;
- t.yerudieresiscyrillic = 0x04f9;
- t.yesieungkorean = 0x3181;
- t.yesieungpansioskorean = 0x3183;
- t.yesieungsioskorean = 0x3182;
- t.yetivhebrew = 0x059a;
- t.ygrave = 0x1ef3;
- t.yhook = 0x01b4;
- t.yhookabove = 0x1ef7;
- t.yiarmenian = 0x0575;
- t.yicyrillic = 0x0457;
- t.yikorean = 0x3162;
- t.yinyang = 0x262f;
- t.yiwnarmenian = 0x0582;
- t.ymonospace = 0xff59;
- t.yod = 0x05d9;
- t.yoddagesh = 0xfb39;
- t.yoddageshhebrew = 0xfb39;
- t.yodhebrew = 0x05d9;
- t.yodyodhebrew = 0x05f2;
- t.yodyodpatahhebrew = 0xfb1f;
- t.yohiragana = 0x3088;
- t.yoikorean = 0x3189;
- t.yokatakana = 0x30e8;
- t.yokatakanahalfwidth = 0xff96;
- t.yokorean = 0x315b;
- t.yosmallhiragana = 0x3087;
- t.yosmallkatakana = 0x30e7;
- t.yosmallkatakanahalfwidth = 0xff6e;
- t.yotgreek = 0x03f3;
- t.yoyaekorean = 0x3188;
- t.yoyakorean = 0x3187;
- t.yoyakthai = 0x0e22;
- t.yoyingthai = 0x0e0d;
- t.yparen = 0x24b4;
- t.ypogegrammeni = 0x037a;
- t.ypogegrammenigreekcmb = 0x0345;
- t.yr = 0x01a6;
- t.yring = 0x1e99;
- t.ysuperior = 0x02b8;
- t.ytilde = 0x1ef9;
- t.yturned = 0x028e;
- t.yuhiragana = 0x3086;
- t.yuikorean = 0x318c;
- t.yukatakana = 0x30e6;
- t.yukatakanahalfwidth = 0xff95;
- t.yukorean = 0x3160;
- t.yusbigcyrillic = 0x046b;
- t.yusbigiotifiedcyrillic = 0x046d;
- t.yuslittlecyrillic = 0x0467;
- t.yuslittleiotifiedcyrillic = 0x0469;
- t.yusmallhiragana = 0x3085;
- t.yusmallkatakana = 0x30e5;
- t.yusmallkatakanahalfwidth = 0xff6d;
- t.yuyekorean = 0x318b;
- t.yuyeokorean = 0x318a;
- t.yyabengali = 0x09df;
- t.yyadeva = 0x095f;
- t.z = 0x007a;
- t.zaarmenian = 0x0566;
- t.zacute = 0x017a;
- t.zadeva = 0x095b;
- t.zagurmukhi = 0x0a5b;
- t.zaharabic = 0x0638;
- t.zahfinalarabic = 0xfec6;
- t.zahinitialarabic = 0xfec7;
- t.zahiragana = 0x3056;
- t.zahmedialarabic = 0xfec8;
- t.zainarabic = 0x0632;
- t.zainfinalarabic = 0xfeb0;
- t.zakatakana = 0x30b6;
- t.zaqefgadolhebrew = 0x0595;
- t.zaqefqatanhebrew = 0x0594;
- t.zarqahebrew = 0x0598;
- t.zayin = 0x05d6;
- t.zayindagesh = 0xfb36;
- t.zayindageshhebrew = 0xfb36;
- t.zayinhebrew = 0x05d6;
- t.zbopomofo = 0x3117;
- t.zcaron = 0x017e;
- t.zcircle = 0x24e9;
- t.zcircumflex = 0x1e91;
- t.zcurl = 0x0291;
- t.zdot = 0x017c;
- t.zdotaccent = 0x017c;
- t.zdotbelow = 0x1e93;
- t.zecyrillic = 0x0437;
- t.zedescendercyrillic = 0x0499;
- t.zedieresiscyrillic = 0x04df;
- t.zehiragana = 0x305c;
- t.zekatakana = 0x30bc;
- t.zero = 0x0030;
- t.zeroarabic = 0x0660;
- t.zerobengali = 0x09e6;
- t.zerodeva = 0x0966;
- t.zerogujarati = 0x0ae6;
- t.zerogurmukhi = 0x0a66;
- t.zerohackarabic = 0x0660;
- t.zeroinferior = 0x2080;
- t.zeromonospace = 0xff10;
- t.zerooldstyle = 0xf730;
- t.zeropersian = 0x06f0;
- t.zerosuperior = 0x2070;
- t.zerothai = 0x0e50;
- t.zerowidthjoiner = 0xfeff;
- t.zerowidthnonjoiner = 0x200c;
- t.zerowidthspace = 0x200b;
- t.zeta = 0x03b6;
- t.zhbopomofo = 0x3113;
- t.zhearmenian = 0x056a;
- t.zhebrevecyrillic = 0x04c2;
- t.zhecyrillic = 0x0436;
- t.zhedescendercyrillic = 0x0497;
- t.zhedieresiscyrillic = 0x04dd;
- t.zihiragana = 0x3058;
- t.zikatakana = 0x30b8;
- t.zinorhebrew = 0x05ae;
- t.zlinebelow = 0x1e95;
- t.zmonospace = 0xff5a;
- t.zohiragana = 0x305e;
- t.zokatakana = 0x30be;
- t.zparen = 0x24b5;
- t.zretroflexhook = 0x0290;
- t.zstroke = 0x01b6;
- t.zuhiragana = 0x305a;
- t.zukatakana = 0x30ba;
- t[".notdef"] = 0x0000;
- t.angbracketleftbig = 0x2329;
- t.angbracketleftBig = 0x2329;
- t.angbracketleftbigg = 0x2329;
- t.angbracketleftBigg = 0x2329;
- t.angbracketrightBig = 0x232a;
- t.angbracketrightbig = 0x232a;
- t.angbracketrightBigg = 0x232a;
- t.angbracketrightbigg = 0x232a;
- t.arrowhookleft = 0x21aa;
- t.arrowhookright = 0x21a9;
- t.arrowlefttophalf = 0x21bc;
- t.arrowleftbothalf = 0x21bd;
- t.arrownortheast = 0x2197;
- t.arrownorthwest = 0x2196;
- t.arrowrighttophalf = 0x21c0;
- t.arrowrightbothalf = 0x21c1;
- t.arrowsoutheast = 0x2198;
- t.arrowsouthwest = 0x2199;
- t.backslashbig = 0x2216;
- t.backslashBig = 0x2216;
- t.backslashBigg = 0x2216;
- t.backslashbigg = 0x2216;
- t.bardbl = 0x2016;
- t.bracehtipdownleft = 0xfe37;
- t.bracehtipdownright = 0xfe37;
- t.bracehtipupleft = 0xfe38;
- t.bracehtipupright = 0xfe38;
- t.braceleftBig = 0x007b;
- t.braceleftbig = 0x007b;
- t.braceleftbigg = 0x007b;
- t.braceleftBigg = 0x007b;
- t.bracerightBig = 0x007d;
- t.bracerightbig = 0x007d;
- t.bracerightbigg = 0x007d;
- t.bracerightBigg = 0x007d;
- t.bracketleftbig = 0x005b;
- t.bracketleftBig = 0x005b;
- t.bracketleftbigg = 0x005b;
- t.bracketleftBigg = 0x005b;
- t.bracketrightBig = 0x005d;
- t.bracketrightbig = 0x005d;
- t.bracketrightbigg = 0x005d;
- t.bracketrightBigg = 0x005d;
- t.ceilingleftbig = 0x2308;
- t.ceilingleftBig = 0x2308;
- t.ceilingleftBigg = 0x2308;
- t.ceilingleftbigg = 0x2308;
- t.ceilingrightbig = 0x2309;
- t.ceilingrightBig = 0x2309;
- t.ceilingrightbigg = 0x2309;
- t.ceilingrightBigg = 0x2309;
- t.circledotdisplay = 0x2299;
- t.circledottext = 0x2299;
- t.circlemultiplydisplay = 0x2297;
- t.circlemultiplytext = 0x2297;
- t.circleplusdisplay = 0x2295;
- t.circleplustext = 0x2295;
- t.contintegraldisplay = 0x222e;
- t.contintegraltext = 0x222e;
- t.coproductdisplay = 0x2210;
- t.coproducttext = 0x2210;
- t.floorleftBig = 0x230a;
- t.floorleftbig = 0x230a;
- t.floorleftbigg = 0x230a;
- t.floorleftBigg = 0x230a;
- t.floorrightbig = 0x230b;
- t.floorrightBig = 0x230b;
- t.floorrightBigg = 0x230b;
- t.floorrightbigg = 0x230b;
- t.hatwide = 0x0302;
- t.hatwider = 0x0302;
- t.hatwidest = 0x0302;
- t.intercal = 0x1d40;
- t.integraldisplay = 0x222b;
- t.integraltext = 0x222b;
- t.intersectiondisplay = 0x22c2;
- t.intersectiontext = 0x22c2;
- t.logicalanddisplay = 0x2227;
- t.logicalandtext = 0x2227;
- t.logicalordisplay = 0x2228;
- t.logicalortext = 0x2228;
- t.parenleftBig = 0x0028;
- t.parenleftbig = 0x0028;
- t.parenleftBigg = 0x0028;
- t.parenleftbigg = 0x0028;
- t.parenrightBig = 0x0029;
- t.parenrightbig = 0x0029;
- t.parenrightBigg = 0x0029;
- t.parenrightbigg = 0x0029;
- t.prime = 0x2032;
- t.productdisplay = 0x220f;
- t.producttext = 0x220f;
- t.radicalbig = 0x221a;
- t.radicalBig = 0x221a;
- t.radicalBigg = 0x221a;
- t.radicalbigg = 0x221a;
- t.radicalbt = 0x221a;
- t.radicaltp = 0x221a;
- t.radicalvertex = 0x221a;
- t.slashbig = 0x002f;
- t.slashBig = 0x002f;
- t.slashBigg = 0x002f;
- t.slashbigg = 0x002f;
- t.summationdisplay = 0x2211;
- t.summationtext = 0x2211;
- t.tildewide = 0x02dc;
- t.tildewider = 0x02dc;
- t.tildewidest = 0x02dc;
- t.uniondisplay = 0x22c3;
- t.unionmultidisplay = 0x228e;
- t.unionmultitext = 0x228e;
- t.unionsqdisplay = 0x2294;
- t.unionsqtext = 0x2294;
- t.uniontext = 0x22c3;
- t.vextenddouble = 0x2225;
- t.vextendsingle = 0x2223;
+/* 33 */
+/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
+
+__w_pdfjs_require__.r(__webpack_exports__);
+/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
+/* harmony export */   "getDingbatsGlyphsUnicode": () => /* binding */ getDingbatsGlyphsUnicode,
+/* harmony export */   "getGlyphsUnicode": () => /* binding */ getGlyphsUnicode
+/* harmony export */ });
+/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);
+
+var getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function 
() {
+ return [
+  "A",
+  0x0041,
+  "AE",
+  0x00c6,
+  "AEacute",
+  0x01fc,
+  "AEmacron",
+  0x01e2,
+  "AEsmall",
+  0xf7e6,
+  "Aacute",
+  0x00c1,
+  "Aacutesmall",
+  0xf7e1,
+  "Abreve",
+  0x0102,
+  "Abreveacute",
+  0x1eae,
+  "Abrevecyrillic",
+  0x04d0,
+  "Abrevedotbelow",
+  0x1eb6,
+  "Abrevegrave",
+  0x1eb0,
+  "Abrevehookabove",
+  0x1eb2,
+  "Abrevetilde",
+  0x1eb4,
+  "Acaron",
+  0x01cd,
+  "Acircle",
+  0x24b6,
+  "Acircumflex",
+  0x00c2,
+  "Acircumflexacute",
+  0x1ea4,
+  "Acircumflexdotbelow",
+  0x1eac,
+  "Acircumflexgrave",
+  0x1ea6,
+  "Acircumflexhookabove",
+  0x1ea8,
+  "Acircumflexsmall",
+  0xf7e2,
+  "Acircumflextilde",
+  0x1eaa,
+  "Acute",
+  0xf6c9,
+  "Acutesmall",
+  0xf7b4,
+  "Acyrillic",
+  0x0410,
+  "Adblgrave",
+  0x0200,
+  "Adieresis",
+  0x00c4,
+  "Adieresiscyrillic",
+  0x04d2,
+  "Adieresismacron",
+  0x01de,
+  "Adieresissmall",
+  0xf7e4,
+  "Adotbelow",
+  0x1ea0,
+  "Adotmacron",
+  0x01e0,
+  "Agrave",
+  0x00c0,
+  "Agravesmall",
+  0xf7e0,
+  "Ahookabove",
+  0x1ea2,
+  "Aiecyrillic",
+  0x04d4,
+  "Ainvertedbreve",
+  0x0202,
+  "Alpha",
+  0x0391,
+  "Alphatonos",
+  0x0386,
+  "Amacron",
+  0x0100,
+  "Amonospace",
+  0xff21,
+  "Aogonek",
+  0x0104,
+  "Aring",
+  0x00c5,
+  "Aringacute",
+  0x01fa,
+  "Aringbelow",
+  0x1e00,
+  "Aringsmall",
+  0xf7e5,
+  "Asmall",
+  0xf761,
+  "Atilde",
+  0x00c3,
+  "Atildesmall",
+  0xf7e3,
+  "Aybarmenian",
+  0x0531,
+  "B",
+  0x0042,
+  "Bcircle",
+  0x24b7,
+  "Bdotaccent",
+  0x1e02,
+  "Bdotbelow",
+  0x1e04,
+  "Becyrillic",
+  0x0411,
+  "Benarmenian",
+  0x0532,
+  "Beta",
+  0x0392,
+  "Bhook",
+  0x0181,
+  "Blinebelow",
+  0x1e06,
+  "Bmonospace",
+  0xff22,
+  "Brevesmall",
+  0xf6f4,
+  "Bsmall",
+  0xf762,
+  "Btopbar",
+  0x0182,
+  "C",
+  0x0043,
+  "Caarmenian",
+  0x053e,
+  "Cacute",
+  0x0106,
+  "Caron",
+  0xf6ca,
+  "Caronsmall",
+  0xf6f5,
+  "Ccaron",
+  0x010c,
+  "Ccedilla",
+  0x00c7,
+  "Ccedillaacute",
+  0x1e08,
+  "Ccedillasmall",
+  0xf7e7,
+  "Ccircle",
+  0x24b8,
+  "Ccircumflex",
+  0x0108,
+  "Cdot",
+  0x010a,
+  "Cdotaccent",
+  0x010a,
+  "Cedillasmall",
+  0xf7b8,
+  "Chaarmenian",
+  0x0549,
+  "Cheabkhasiancyrillic",
+  0x04bc,
+  "Checyrillic",
+  0x0427,
+  "Chedescenderabkhasiancyrillic",
+  0x04be,
+  "Chedescendercyrillic",
+  0x04b6,
+  "Chedieresiscyrillic",
+  0x04f4,
+  "Cheharmenian",
+  0x0543,
+  "Chekhakassiancyrillic",
+  0x04cb,
+  "Cheverticalstrokecyrillic",
+  0x04b8,
+  "Chi",
+  0x03a7,
+  "Chook",
+  0x0187,
+  "Circumflexsmall",
+  0xf6f6,
+  "Cmonospace",
+  0xff23,
+  "Coarmenian",
+  0x0551,
+  "Csmall",
+  0xf763,
+  "D",
+  0x0044,
+  "DZ",
+  0x01f1,
+  "DZcaron",
+  0x01c4,
+  "Daarmenian",
+  0x0534,
+  "Dafrican",
+  0x0189,
+  "Dcaron",
+  0x010e,
+  "Dcedilla",
+  0x1e10,
+  "Dcircle",
+  0x24b9,
+  "Dcircumflexbelow",
+  0x1e12,
+  "Dcroat",
+  0x0110,
+  "Ddotaccent",
+  0x1e0a,
+  "Ddotbelow",
+  0x1e0c,
+  "Decyrillic",
+  0x0414,
+  "Deicoptic",
+  0x03ee,
+  "Delta",
+  0x2206,
+  "Deltagreek",
+  0x0394,
+  "Dhook",
+  0x018a,
+  "Dieresis",
+  0xf6cb,
+  "DieresisAcute",
+  0xf6cc,
+  "DieresisGrave",
+  0xf6cd,
+  "Dieresissmall",
+  0xf7a8,
+  "Digammagreek",
+  0x03dc,
+  "Djecyrillic",
+  0x0402,
+  "Dlinebelow",
+  0x1e0e,
+  "Dmonospace",
+  0xff24,
+  "Dotaccentsmall",
+  0xf6f7,
+  "Dslash",
+  0x0110,
+  "Dsmall",
+  0xf764,
+  "Dtopbar",
+  0x018b,
+  "Dz",
+  0x01f2,
+  "Dzcaron",
+  0x01c5,
+  "Dzeabkhasiancyrillic",
+  0x04e0,
+  "Dzecyrillic",
+  0x0405,
+  "Dzhecyrillic",
+  0x040f,
+  "E",
+  0x0045,
+  "Eacute",
+  0x00c9,
+  "Eacutesmall",
+  0xf7e9,
+  "Ebreve",
+  0x0114,
+  "Ecaron",
+  0x011a,
+  "Ecedillabreve",
+  0x1e1c,
+  "Echarmenian",
+  0x0535,
+  "Ecircle",
+  0x24ba,
+  "Ecircumflex",
+  0x00ca,
+  "Ecircumflexacute",
+  0x1ebe,
+  "Ecircumflexbelow",
+  0x1e18,
+  "Ecircumflexdotbelow",
+  0x1ec6,
+  "Ecircumflexgrave",
+  0x1ec0,
+  "Ecircumflexhookabove",
+  0x1ec2,
+  "Ecircumflexsmall",
+  0xf7ea,
+  "Ecircumflextilde",
+  0x1ec4,
+  "Ecyrillic",
+  0x0404,
+  "Edblgrave",
+  0x0204,
+  "Edieresis",
+  0x00cb,
+  "Edieresissmall",
+  0xf7eb,
+  "Edot",
+  0x0116,
+  "Edotaccent",
+  0x0116,
+  "Edotbelow",
+  0x1eb8,
+  "Efcyrillic",
+  0x0424,
+  "Egrave",
+  0x00c8,
+  "Egravesmall",
+  0xf7e8,
+  "Eharmenian",
+  0x0537,
+  "Ehookabove",
+  0x1eba,
+  "Eightroman",
+  0x2167,
+  "Einvertedbreve",
+  0x0206,
+  "Eiotifiedcyrillic",
+  0x0464,
+  "Elcyrillic",
+  0x041b,
+  "Elevenroman",
+  0x216a,
+  "Emacron",
+  0x0112,
+  "Emacronacute",
+  0x1e16,
+  "Emacrongrave",
+  0x1e14,
+  "Emcyrillic",
+  0x041c,
+  "Emonospace",
+  0xff25,
+  "Encyrillic",
+  0x041d,
+  "Endescendercyrillic",
+  0x04a2,
+  "Eng",
+  0x014a,
+  "Enghecyrillic",
+  0x04a4,
+  "Enhookcyrillic",
+  0x04c7,
+  "Eogonek",
+  0x0118,
+  "Eopen",
+  0x0190,
+  "Epsilon",
+  0x0395,
+  "Epsilontonos",
+  0x0388,
+  "Ercyrillic",
+  0x0420,
+  "Ereversed",
+  0x018e,
+  "Ereversedcyrillic",
+  0x042d,
+  "Escyrillic",
+  0x0421,
+  "Esdescendercyrillic",
+  0x04aa,
+  "Esh",
+  0x01a9,
+  "Esmall",
+  0xf765,
+  "Eta",
+  0x0397,
+  "Etarmenian",
+  0x0538,
+  "Etatonos",
+  0x0389,
+  "Eth",
+  0x00d0,
+  "Ethsmall",
+  0xf7f0,
+  "Etilde",
+  0x1ebc,
+  "Etildebelow",
+  0x1e1a,
+  "Euro",
+  0x20ac,
+  "Ezh",
+  0x01b7,
+  "Ezhcaron",
+  0x01ee,
+  "Ezhreversed",
+  0x01b8,
+  "F",
+  0x0046,
+  "Fcircle",
+  0x24bb,
+  "Fdotaccent",
+  0x1e1e,
+  "Feharmenian",
+  0x0556,
+  "Feicoptic",
+  0x03e4,
+  "Fhook",
+  0x0191,
+  "Fitacyrillic",
+  0x0472,
+  "Fiveroman",
+  0x2164,
+  "Fmonospace",
+  0xff26,
+  "Fourroman",
+  0x2163,
+  "Fsmall",
+  0xf766,
+  "G",
+  0x0047,
+  "GBsquare",
+  0x3387,
+  "Gacute",
+  0x01f4,
+  "Gamma",
+  0x0393,
+  "Gammaafrican",
+  0x0194,
+  "Gangiacoptic",
+  0x03ea,
+  "Gbreve",
+  0x011e,
+  "Gcaron",
+  0x01e6,
+  "Gcedilla",
+  0x0122,
+  "Gcircle",
+  0x24bc,
+  "Gcircumflex",
+  0x011c,
+  "Gcommaaccent",
+  0x0122,
+  "Gdot",
+  0x0120,
+  "Gdotaccent",
+  0x0120,
+  "Gecyrillic",
+  0x0413,
+  "Ghadarmenian",
+  0x0542,
+  "Ghemiddlehookcyrillic",
+  0x0494,
+  "Ghestrokecyrillic",
+  0x0492,
+  "Gheupturncyrillic",
+  0x0490,
+  "Ghook",
+  0x0193,
+  "Gimarmenian",
+  0x0533,
+  "Gjecyrillic",
+  0x0403,
+  "Gmacron",
+  0x1e20,
+  "Gmonospace",
+  0xff27,
+  "Grave",
+  0xf6ce,
+  "Gravesmall",
+  0xf760,
+  "Gsmall",
+  0xf767,
+  "Gsmallhook",
+  0x029b,
+  "Gstroke",
+  0x01e4,
+  "H",
+  0x0048,
+  "H18533",
+  0x25cf,
+  "H18543",
+  0x25aa,
+  "H18551",
+  0x25ab,
+  "H22073",
+  0x25a1,
+  "HPsquare",
+  0x33cb,
+  "Haabkhasiancyrillic",
+  0x04a8,
+  "Hadescendercyrillic",
+  0x04b2,
+  "Hardsigncyrillic",
+  0x042a,
+  "Hbar",
+  0x0126,
+  "Hbrevebelow",
+  0x1e2a,
+  "Hcedilla",
+  0x1e28,
+  "Hcircle",
+  0x24bd,
+  "Hcircumflex",
+  0x0124,
+  "Hdieresis",
+  0x1e26,
+  "Hdotaccent",
+  0x1e22,
+  "Hdotbelow",
+  0x1e24,
+  "Hmonospace",
+  0xff28,
+  "Hoarmenian",
+  0x0540,
+  "Horicoptic",
+  0x03e8,
+  "Hsmall",
+  0xf768,
+  "Hungarumlaut",
+  0xf6cf,
+  "Hungarumlautsmall",
+  0xf6f8,
+  "Hzsquare",
+  0x3390,
+  "I",
+  0x0049,
+  "IAcyrillic",
+  0x042f,
+  "IJ",
+  0x0132,
+  "IUcyrillic",
+  0x042e,
+  "Iacute",
+  0x00cd,
+  "Iacutesmall",
+  0xf7ed,
+  "Ibreve",
+  0x012c,
+  "Icaron",
+  0x01cf,
+  "Icircle",
+  0x24be,
+  "Icircumflex",
+  0x00ce,
+  "Icircumflexsmall",
+  0xf7ee,
+  "Icyrillic",
+  0x0406,
+  "Idblgrave",
+  0x0208,
+  "Idieresis",
+  0x00cf,
+  "Idieresisacute",
+  0x1e2e,
+  "Idieresiscyrillic",
+  0x04e4,
+  "Idieresissmall",
+  0xf7ef,
+  "Idot",
+  0x0130,
+  "Idotaccent",
+  0x0130,
+  "Idotbelow",
+  0x1eca,
+  "Iebrevecyrillic",
+  0x04d6,
+  "Iecyrillic",
+  0x0415,
+  "Ifraktur",
+  0x2111,
+  "Igrave",
+  0x00cc,
+  "Igravesmall",
+  0xf7ec,
+  "Ihookabove",
+  0x1ec8,
+  "Iicyrillic",
+  0x0418,
+  "Iinvertedbreve",
+  0x020a,
+  "Iishortcyrillic",
+  0x0419,
+  "Imacron",
+  0x012a,
+  "Imacroncyrillic",
+  0x04e2,
+  "Imonospace",
+  0xff29,
+  "Iniarmenian",
+  0x053b,
+  "Iocyrillic",
+  0x0401,
+  "Iogonek",
+  0x012e,
+  "Iota",
+  0x0399,
+  "Iotaafrican",
+  0x0196,
+  "Iotadieresis",
+  0x03aa,
+  "Iotatonos",
+  0x038a,
+  "Ismall",
+  0xf769,
+  "Istroke",
+  0x0197,
+  "Itilde",
+  0x0128,
+  "Itildebelow",
+  0x1e2c,
+  "Izhitsacyrillic",
+  0x0474,
+  "Izhitsadblgravecyrillic",
+  0x0476,
+  "J",
+  0x004a,
+  "Jaarmenian",
+  0x0541,
+  "Jcircle",
+  0x24bf,
+  "Jcircumflex",
+  0x0134,
+  "Jecyrillic",
+  0x0408,
+  "Jheharmenian",
+  0x054b,
+  "Jmonospace",
+  0xff2a,
+  "Jsmall",
+  0xf76a,
+  "K",
+  0x004b,
+  "KBsquare",
+  0x3385,
+  "KKsquare",
+  0x33cd,
+  "Kabashkircyrillic",
+  0x04a0,
+  "Kacute",
+  0x1e30,
+  "Kacyrillic",
+  0x041a,
+  "Kadescendercyrillic",
+  0x049a,
+  "Kahookcyrillic",
+  0x04c3,
+  "Kappa",
+  0x039a,
+  "Kastrokecyrillic",
+  0x049e,
+  "Kaverticalstrokecyrillic",
+  0x049c,
+  "Kcaron",
+  0x01e8,
+  "Kcedilla",
+  0x0136,
+  "Kcircle",
+  0x24c0,
+  "Kcommaaccent",
+  0x0136,
+  "Kdotbelow",
+  0x1e32,
+  "Keharmenian",
+  0x0554,
+  "Kenarmenian",
+  0x053f,
+  "Khacyrillic",
+  0x0425,
+  "Kheicoptic",
+  0x03e6,
+  "Khook",
+  0x0198,
+  "Kjecyrillic",
+  0x040c,
+  "Klinebelow",
+  0x1e34,
+  "Kmonospace",
+  0xff2b,
+  "Koppacyrillic",
+  0x0480,
+  "Koppagreek",
+  0x03de,
+  "Ksicyrillic",
+  0x046e,
+  "Ksmall",
+  0xf76b,
+  "L",
+  0x004c,
+  "LJ",
+  0x01c7,
+  "LL",
+  0xf6bf,
+  "Lacute",
+  0x0139,
+  "Lambda",
+  0x039b,
+  "Lcaron",
+  0x013d,
+  "Lcedilla",
+  0x013b,
+  "Lcircle",
+  0x24c1,
+  "Lcircumflexbelow",
+  0x1e3c,
+  "Lcommaaccent",
+  0x013b,
+  "Ldot",
+  0x013f,
+  "Ldotaccent",
+  0x013f,
+  "Ldotbelow",
+  0x1e36,
+  "Ldotbelowmacron",
+  0x1e38,
+  "Liwnarmenian",
+  0x053c,
+  "Lj",
+  0x01c8,
+  "Ljecyrillic",
+  0x0409,
+  "Llinebelow",
+  0x1e3a,
+  "Lmonospace",
+  0xff2c,
+  "Lslash",
+  0x0141,
+  "Lslashsmall",
+  0xf6f9,
+  "Lsmall",
+  0xf76c,
+  "M",
+  0x004d,
+  "MBsquare",
+  0x3386,
+  "Macron",
+  0xf6d0,
+  "Macronsmall",
+  0xf7af,
+  "Macute",
+  0x1e3e,
+  "Mcircle",
+  0x24c2,
+  "Mdotaccent",
+  0x1e40,
+  "Mdotbelow",
+  0x1e42,
+  "Menarmenian",
+  0x0544,
+  "Mmonospace",
+  0xff2d,
+  "Msmall",
+  0xf76d,
+  "Mturned",
+  0x019c,
+  "Mu",
+  0x039c,
+  "N",
+  0x004e,
+  "NJ",
+  0x01ca,
+  "Nacute",
+  0x0143,
+  "Ncaron",
+  0x0147,
+  "Ncedilla",
+  0x0145,
+  "Ncircle",
+  0x24c3,
+  "Ncircumflexbelow",
+  0x1e4a,
+  "Ncommaaccent",
+  0x0145,
+  "Ndotaccent",
+  0x1e44,
+  "Ndotbelow",
+  0x1e46,
+  "Nhookleft",
+  0x019d,
+  "Nineroman",
+  0x2168,
+  "Nj",
+  0x01cb,
+  "Njecyrillic",
+  0x040a,
+  "Nlinebelow",
+  0x1e48,
+  "Nmonospace",
+  0xff2e,
+  "Nowarmenian",
+  0x0546,
+  "Nsmall",
+  0xf76e,
+  "Ntilde",
+  0x00d1,
+  "Ntildesmall",
+  0xf7f1,
+  "Nu",
+  0x039d,
+  "O",
+  0x004f,
+  "OE",
+  0x0152,
+  "OEsmall",
+  0xf6fa,
+  "Oacute",
+  0x00d3,
+  "Oacutesmall",
+  0xf7f3,
+  "Obarredcyrillic",
+  0x04e8,
+  "Obarreddieresiscyrillic",
+  0x04ea,
+  "Obreve",
+  0x014e,
+  "Ocaron",
+  0x01d1,
+  "Ocenteredtilde",
+  0x019f,
+  "Ocircle",
+  0x24c4,
+  "Ocircumflex",
+  0x00d4,
+  "Ocircumflexacute",
+  0x1ed0,
+  "Ocircumflexdotbelow",
+  0x1ed8,
+  "Ocircumflexgrave",
+  0x1ed2,
+  "Ocircumflexhookabove",
+  0x1ed4,
+  "Ocircumflexsmall",
+  0xf7f4,
+  "Ocircumflextilde",
+  0x1ed6,
+  "Ocyrillic",
+  0x041e,
+  "Odblacute",
+  0x0150,
+  "Odblgrave",
+  0x020c,
+  "Odieresis",
+  0x00d6,
+  "Odieresiscyrillic",
+  0x04e6,
+  "Odieresissmall",
+  0xf7f6,
+  "Odotbelow",
+  0x1ecc,
+  "Ogoneksmall",
+  0xf6fb,
+  "Ograve",
+  0x00d2,
+  "Ogravesmall",
+  0xf7f2,
+  "Oharmenian",
+  0x0555,
+  "Ohm",
+  0x2126,
+  "Ohookabove",
+  0x1ece,
+  "Ohorn",
+  0x01a0,
+  "Ohornacute",
+  0x1eda,
+  "Ohorndotbelow",
+  0x1ee2,
+  "Ohorngrave",
+  0x1edc,
+  "Ohornhookabove",
+  0x1ede,
+  "Ohorntilde",
+  0x1ee0,
+  "Ohungarumlaut",
+  0x0150,
+  "Oi",
+  0x01a2,
+  "Oinvertedbreve",
+  0x020e,
+  "Omacron",
+  0x014c,
+  "Omacronacute",
+  0x1e52,
+  "Omacrongrave",
+  0x1e50,
+  "Omega",
+  0x2126,
+  "Omegacyrillic",
+  0x0460,
+  "Omegagreek",
+  0x03a9,
+  "Omegaroundcyrillic",
+  0x047a,
+  "Omegatitlocyrillic",
+  0x047c,
+  "Omegatonos",
+  0x038f,
+  "Omicron",
+  0x039f,
+  "Omicrontonos",
+  0x038c,
+  "Omonospace",
+  0xff2f,
+  "Oneroman",
+  0x2160,
+  "Oogonek",
+  0x01ea,
+  "Oogonekmacron",
+  0x01ec,
+  "Oopen",
+  0x0186,
+  "Oslash",
+  0x00d8,
+  "Oslashacute",
+  0x01fe,
+  "Oslashsmall",
+  0xf7f8,
+  "Osmall",
+  0xf76f,
+  "Ostrokeacute",
+  0x01fe,
+  "Otcyrillic",
+  0x047e,
+  "Otilde",
+  0x00d5,
+  "Otildeacute",
+  0x1e4c,
+  "Otildedieresis",
+  0x1e4e,
+  "Otildesmall",
+  0xf7f5,
+  "P",
+  0x0050,
+  "Pacute",
+  0x1e54,
+  "Pcircle",
+  0x24c5,
+  "Pdotaccent",
+  0x1e56,
+  "Pecyrillic",
+  0x041f,
+  "Peharmenian",
+  0x054a,
+  "Pemiddlehookcyrillic",
+  0x04a6,
+  "Phi",
+  0x03a6,
+  "Phook",
+  0x01a4,
+  "Pi",
+  0x03a0,
+  "Piwrarmenian",
+  0x0553,
+  "Pmonospace",
+  0xff30,
+  "Psi",
+  0x03a8,
+  "Psicyrillic",
+  0x0470,
+  "Psmall",
+  0xf770,
+  "Q",
+  0x0051,
+  "Qcircle",
+  0x24c6,
+  "Qmonospace",
+  0xff31,
+  "Qsmall",
+  0xf771,
+  "R",
+  0x0052,
+  "Raarmenian",
+  0x054c,
+  "Racute",
+  0x0154,
+  "Rcaron",
+  0x0158,
+  "Rcedilla",
+  0x0156,
+  "Rcircle",
+  0x24c7,
+  "Rcommaaccent",
+  0x0156,
+  "Rdblgrave",
+  0x0210,
+  "Rdotaccent",
+  0x1e58,
+  "Rdotbelow",
+  0x1e5a,
+  "Rdotbelowmacron",
+  0x1e5c,
+  "Reharmenian",
+  0x0550,
+  "Rfraktur",
+  0x211c,
+  "Rho",
+  0x03a1,
+  "Ringsmall",
+  0xf6fc,
+  "Rinvertedbreve",
+  0x0212,
+  "Rlinebelow",
+  0x1e5e,
+  "Rmonospace",
+  0xff32,
+  "Rsmall",
+  0xf772,
+  "Rsmallinverted",
+  0x0281,
+  "Rsmallinvertedsuperior",
+  0x02b6,
+  "S",
+  0x0053,
+  "SF010000",
+  0x250c,
+  "SF020000",
+  0x2514,
+  "SF030000",
+  0x2510,
+  "SF040000",
+  0x2518,
+  "SF050000",
+  0x253c,
+  "SF060000",
+  0x252c,
+  "SF070000",
+  0x2534,
+  "SF080000",
+  0x251c,
+  "SF090000",
+  0x2524,
+  "SF100000",
+  0x2500,
+  "SF110000",
+  0x2502,
+  "SF190000",
+  0x2561,
+  "SF200000",
+  0x2562,
+  "SF210000",
+  0x2556,
+  "SF220000",
+  0x2555,
+  "SF230000",
+  0x2563,
+  "SF240000",
+  0x2551,
+  "SF250000",
+  0x2557,
+  "SF260000",
+  0x255d,
+  "SF270000",
+  0x255c,
+  "SF280000",
+  0x255b,
+  "SF360000",
+  0x255e,
+  "SF370000",
+  0x255f,
+  "SF380000",
+  0x255a,
+  "SF390000",
+  0x2554,
+  "SF400000",
+  0x2569,
+  "SF410000",
+  0x2566,
+  "SF420000",
+  0x2560,
+  "SF430000",
+  0x2550,
+  "SF440000",
+  0x256c,
+  "SF450000",
+  0x2567,
+  "SF460000",
+  0x2568,
+  "SF470000",
+  0x2564,
+  "SF480000",
+  0x2565,
+  "SF490000",
+  0x2559,
+  "SF500000",
+  0x2558,
+  "SF510000",
+  0x2552,
+  "SF520000",
+  0x2553,
+  "SF530000",
+  0x256b,
+  "SF540000",
+  0x256a,
+  "Sacute",
+  0x015a,
+  "Sacutedotaccent",
+  0x1e64,
+  "Sampigreek",
+  0x03e0,
+  "Scaron",
+  0x0160,
+  "Scarondotaccent",
+  0x1e66,
+  "Scaronsmall",
+  0xf6fd,
+  "Scedilla",
+  0x015e,
+  "Schwa",
+  0x018f,
+  "Schwacyrillic",
+  0x04d8,
+  "Schwadieresiscyrillic",
+  0x04da,
+  "Scircle",
+  0x24c8,
+  "Scircumflex",
+  0x015c,
+  "Scommaaccent",
+  0x0218,
+  "Sdotaccent",
+  0x1e60,
+  "Sdotbelow",
+  0x1e62,
+  "Sdotbelowdotaccent",
+  0x1e68,
+  "Seharmenian",
+  0x054d,
+  "Sevenroman",
+  0x2166,
+  "Shaarmenian",
+  0x0547,
+  "Shacyrillic",
+  0x0428,
+  "Shchacyrillic",
+  0x0429,
+  "Sheicoptic",
+  0x03e2,
+  "Shhacyrillic",
+  0x04ba,
+  "Shimacoptic",
+  0x03ec,
+  "Sigma",
+  0x03a3,
+  "Sixroman",
+  0x2165,
+  "Smonospace",
+  0xff33,
+  "Softsigncyrillic",
+  0x042c,
+  "Ssmall",
+  0xf773,
+  "Stigmagreek",
+  0x03da,
+  "T",
+  0x0054,
+  "Tau",
+  0x03a4,
+  "Tbar",
+  0x0166,
+  "Tcaron",
+  0x0164,
+  "Tcedilla",
+  0x0162,
+  "Tcircle",
+  0x24c9,
+  "Tcircumflexbelow",
+  0x1e70,
+  "Tcommaaccent",
+  0x0162,
+  "Tdotaccent",
+  0x1e6a,
+  "Tdotbelow",
+  0x1e6c,
+  "Tecyrillic",
+  0x0422,
+  "Tedescendercyrillic",
+  0x04ac,
+  "Tenroman",
+  0x2169,
+  "Tetsecyrillic",
+  0x04b4,
+  "Theta",
+  0x0398,
+  "Thook",
+  0x01ac,
+  "Thorn",
+  0x00de,
+  "Thornsmall",
+  0xf7fe,
+  "Threeroman",
+  0x2162,
+  "Tildesmall",
+  0xf6fe,
+  "Tiwnarmenian",
+  0x054f,
+  "Tlinebelow",
+  0x1e6e,
+  "Tmonospace",
+  0xff34,
+  "Toarmenian",
+  0x0539,
+  "Tonefive",
+  0x01bc,
+  "Tonesix",
+  0x0184,
+  "Tonetwo",
+  0x01a7,
+  "Tretroflexhook",
+  0x01ae,
+  "Tsecyrillic",
+  0x0426,
+  "Tshecyrillic",
+  0x040b,
+  "Tsmall",
+  0xf774,
+  "Twelveroman",
+  0x216b,
+  "Tworoman",
+  0x2161,
+  "U",
+  0x0055,
+  "Uacute",
+  0x00da,
+  "Uacutesmall",
+  0xf7fa,
+  "Ubreve",
+  0x016c,
+  "Ucaron",
+  0x01d3,
+  "Ucircle",
+  0x24ca,
+  "Ucircumflex",
+  0x00db,
+  "Ucircumflexbelow",
+  0x1e76,
+  "Ucircumflexsmall",
+  0xf7fb,
+  "Ucyrillic",
+  0x0423,
+  "Udblacute",
+  0x0170,
+  "Udblgrave",
+  0x0214,
+  "Udieresis",
+  0x00dc,
+  "Udieresisacute",
+  0x01d7,
+  "Udieresisbelow",
+  0x1e72,
+  "Udieresiscaron",
+  0x01d9,
+  "Udieresiscyrillic",
+  0x04f0,
+  "Udieresisgrave",
+  0x01db,
+  "Udieresismacron",
+  0x01d5,
+  "Udieresissmall",
+  0xf7fc,
+  "Udotbelow",
+  0x1ee4,
+  "Ugrave",
+  0x00d9,
+  "Ugravesmall",
+  0xf7f9,
+  "Uhookabove",
+  0x1ee6,
+  "Uhorn",
+  0x01af,
+  "Uhornacute",
+  0x1ee8,
+  "Uhorndotbelow",
+  0x1ef0,
+  "Uhorngrave",
+  0x1eea,
+  "Uhornhookabove",
+  0x1eec,
+  "Uhorntilde",
+  0x1eee,
+  "Uhungarumlaut",
+  0x0170,
+  "Uhungarumlautcyrillic",
+  0x04f2,
+  "Uinvertedbreve",
+  0x0216,
+  "Ukcyrillic",
+  0x0478,
+  "Umacron",
+  0x016a,
+  "Umacroncyrillic",
+  0x04ee,
+  "Umacrondieresis",
+  0x1e7a,
+  "Umonospace",
+  0xff35,
+  "Uogonek",
+  0x0172,
+  "Upsilon",
+  0x03a5,
+  "Upsilon1",
+  0x03d2,
+  "Upsilonacutehooksymbolgreek",
+  0x03d3,
+  "Upsilonafrican",
+  0x01b1,
+  "Upsilondieresis",
+  0x03ab,
+  "Upsilondieresishooksymbolgreek",
+  0x03d4,
+  "Upsilonhooksymbol",
+  0x03d2,
+  "Upsilontonos",
+  0x038e,
+  "Uring",
+  0x016e,
+  "Ushortcyrillic",
+  0x040e,
+  "Usmall",
+  0xf775,
+  "Ustraightcyrillic",
+  0x04ae,
+  "Ustraightstrokecyrillic",
+  0x04b0,
+  "Utilde",
+  0x0168,
+  "Utildeacute",
+  0x1e78,
+  "Utildebelow",
+  0x1e74,
+  "V",
+  0x0056,
+  "Vcircle",
+  0x24cb,
+  "Vdotbelow",
+  0x1e7e,
+  "Vecyrillic",
+  0x0412,
+  "Vewarmenian",
+  0x054e,
+  "Vhook",
+  0x01b2,
+  "Vmonospace",
+  0xff36,
+  "Voarmenian",
+  0x0548,
+  "Vsmall",
+  0xf776,
+  "Vtilde",
+  0x1e7c,
+  "W",
+  0x0057,
+  "Wacute",
+  0x1e82,
+  "Wcircle",
+  0x24cc,
+  "Wcircumflex",
+  0x0174,
+  "Wdieresis",
+  0x1e84,
+  "Wdotaccent",
+  0x1e86,
+  "Wdotbelow",
+  0x1e88,
+  "Wgrave",
+  0x1e80,
+  "Wmonospace",
+  0xff37,
+  "Wsmall",
+  0xf777,
+  "X",
+  0x0058,
+  "Xcircle",
+  0x24cd,
+  "Xdieresis",
+  0x1e8c,
+  "Xdotaccent",
+  0x1e8a,
+  "Xeharmenian",
+  0x053d,
+  "Xi",
+  0x039e,
+  "Xmonospace",
+  0xff38,
+  "Xsmall",
+  0xf778,
+  "Y",
+  0x0059,
+  "Yacute",
+  0x00dd,
+  "Yacutesmall",
+  0xf7fd,
+  "Yatcyrillic",
+  0x0462,
+  "Ycircle",
+  0x24ce,
+  "Ycircumflex",
+  0x0176,
+  "Ydieresis",
+  0x0178,
+  "Ydieresissmall",
+  0xf7ff,
+  "Ydotaccent",
+  0x1e8e,
+  "Ydotbelow",
+  0x1ef4,
+  "Yericyrillic",
+  0x042b,
+  "Yerudieresiscyrillic",
+  0x04f8,
+  "Ygrave",
+  0x1ef2,
+  "Yhook",
+  0x01b3,
+  "Yhookabove",
+  0x1ef6,
+  "Yiarmenian",
+  0x0545,
+  "Yicyrillic",
+  0x0407,
+  "Yiwnarmenian",
+  0x0552,
+  "Ymonospace",
+  0xff39,
+  "Ysmall",
+  0xf779,
+  "Ytilde",
+  0x1ef8,
+  "Yusbigcyrillic",
+  0x046a,
+  "Yusbigiotifiedcyrillic",
+  0x046c,
+  "Yuslittlecyrillic",
+  0x0466,
+  "Yuslittleiotifiedcyrillic",
+  0x0468,
+  "Z",
+  0x005a,
+  "Zaarmenian",
+  0x0536,
+  "Zacute",
+  0x0179,
+  "Zcaron",
+  0x017d,
+  "Zcaronsmall",
+  0xf6ff,
+  "Zcircle",
+  0x24cf,
+  "Zcircumflex",
+  0x1e90,
+  "Zdot",
+  0x017b,
+  "Zdotaccent",
+  0x017b,
+  "Zdotbelow",
+  0x1e92,
+  "Zecyrillic",
+  0x0417,
+  "Zedescendercyrillic",
+  0x0498,
+  "Zedieresiscyrillic",
+  0x04de,
+  "Zeta",
+  0x0396,
+  "Zhearmenian",
+  0x053a,
+  "Zhebrevecyrillic",
+  0x04c1,
+  "Zhecyrillic",
+  0x0416,
+  "Zhedescendercyrillic",
+  0x0496,
+  "Zhedieresiscyrillic",
+  0x04dc,
+  "Zlinebelow",
+  0x1e94,
+  "Zmonospace",
+  0xff3a,
+  "Zsmall",
+  0xf77a,
+  "Zstroke",
+  0x01b5,
+  "a",
+  0x0061,
+  "aabengali",
+  0x0986,
+  "aacute",
+  0x00e1,
+  "aadeva",
+  0x0906,
+  "aagujarati",
+  0x0a86,
+  "aagurmukhi",
+  0x0a06,
+  "aamatragurmukhi",
+  0x0a3e,
+  "aarusquare",
+  0x3303,
+  "aavowelsignbengali",
+  0x09be,
+  "aavowelsigndeva",
+  0x093e,
+  "aavowelsigngujarati",
+  0x0abe,
+  "abbreviationmarkarmenian",
+  0x055f,
+  "abbreviationsigndeva",
+  0x0970,
+  "abengali",
+  0x0985,
+  "abopomofo",
+  0x311a,
+  "abreve",
+  0x0103,
+  "abreveacute",
+  0x1eaf,
+  "abrevecyrillic",
+  0x04d1,
+  "abrevedotbelow",
+  0x1eb7,
+  "abrevegrave",
+  0x1eb1,
+  "abrevehookabove",
+  0x1eb3,
+  "abrevetilde",
+  0x1eb5,
+  "acaron",
+  0x01ce,
+  "acircle",
+  0x24d0,
+  "acircumflex",
+  0x00e2,
+  "acircumflexacute",
+  0x1ea5,
+  "acircumflexdotbelow",
+  0x1ead,
+  "acircumflexgrave",
+  0x1ea7,
+  "acircumflexhookabove",
+  0x1ea9,
+  "acircumflextilde",
+  0x1eab,
+  "acute",
+  0x00b4,
+  "acutebelowcmb",
+  0x0317,
+  "acutecmb",
+  0x0301,
+  "acutecomb",
+  0x0301,
+  "acutedeva",
+  0x0954,
+  "acutelowmod",
+  0x02cf,
+  "acutetonecmb",
+  0x0341,
+  "acyrillic",
+  0x0430,
+  "adblgrave",
+  0x0201,
+  "addakgurmukhi",
+  0x0a71,
+  "adeva",
+  0x0905,
+  "adieresis",
+  0x00e4,
+  "adieresiscyrillic",
+  0x04d3,
+  "adieresismacron",
+  0x01df,
+  "adotbelow",
+  0x1ea1,
+  "adotmacron",
+  0x01e1,
+  "ae",
+  0x00e6,
+  "aeacute",
+  0x01fd,
+  "aekorean",
+  0x3150,
+  "aemacron",
+  0x01e3,
+  "afii00208",
+  0x2015,
+  "afii08941",
+  0x20a4,
+  "afii10017",
+  0x0410,
+  "afii10018",
+  0x0411,
+  "afii10019",
+  0x0412,
+  "afii10020",
+  0x0413,
+  "afii10021",
+  0x0414,
+  "afii10022",
+  0x0415,
+  "afii10023",
+  0x0401,
+  "afii10024",
+  0x0416,
+  "afii10025",
+  0x0417,
+  "afii10026",
+  0x0418,
+  "afii10027",
+  0x0419,
+  "afii10028",
+  0x041a,
+  "afii10029",
+  0x041b,
+  "afii10030",
+  0x041c,
+  "afii10031",
+  0x041d,
+  "afii10032",
+  0x041e,
+  "afii10033",
+  0x041f,
+  "afii10034",
+  0x0420,
+  "afii10035",
+  0x0421,
+  "afii10036",
+  0x0422,
+  "afii10037",
+  0x0423,
+  "afii10038",
+  0x0424,
+  "afii10039",
+  0x0425,
+  "afii10040",
+  0x0426,
+  "afii10041",
+  0x0427,
+  "afii10042",
+  0x0428,
+  "afii10043",
+  0x0429,
+  "afii10044",
+  0x042a,
+  "afii10045",
+  0x042b,
+  "afii10046",
+  0x042c,
+  "afii10047",
+  0x042d,
+  "afii10048",
+  0x042e,
+  "afii10049",
+  0x042f,
+  "afii10050",
+  0x0490,
+  "afii10051",
+  0x0402,
+  "afii10052",
+  0x0403,
+  "afii10053",
+  0x0404,
+  "afii10054",
+  0x0405,
+  "afii10055",
+  0x0406,
+  "afii10056",
+  0x0407,
+  "afii10057",
+  0x0408,
+  "afii10058",
+  0x0409,
+  "afii10059",
+  0x040a,
+  "afii10060",
+  0x040b,
+  "afii10061",
+  0x040c,
+  "afii10062",
+  0x040e,
+  "afii10063",
+  0xf6c4,
+  "afii10064",
+  0xf6c5,
+  "afii10065",
+  0x0430,
+  "afii10066",
+  0x0431,
+  "afii10067",
+  0x0432,
+  "afii10068",
+  0x0433,
+  "afii10069",
+  0x0434,
+  "afii10070",
+  0x0435,
+  "afii10071",
+  0x0451,
+  "afii10072",
+  0x0436,
+  "afii10073",
+  0x0437,
+  "afii10074",
+  0x0438,
+  "afii10075",
+  0x0439,
+  "afii10076",
+  0x043a,
+  "afii10077",
+  0x043b,
+  "afii10078",
+  0x043c,
+  "afii10079",
+  0x043d,
+  "afii10080",
+  0x043e,
+  "afii10081",
+  0x043f,
+  "afii10082",
+  0x0440,
+  "afii10083",
+  0x0441,
+  "afii10084",
+  0x0442,
+  "afii10085",
+  0x0443,
+  "afii10086",
+  0x0444,
+  "afii10087",
+  0x0445,
+  "afii10088",
+  0x0446,
+  "afii10089",
+  0x0447,
+  "afii10090",
+  0x0448,
+  "afii10091",
+  0x0449,
+  "afii10092",
+  0x044a,
+  "afii10093",
+  0x044b,
+  "afii10094",
+  0x044c,
+  "afii10095",
+  0x044d,
+  "afii10096",
+  0x044e,
+  "afii10097",
+  0x044f,
+  "afii10098",
+  0x0491,
+  "afii10099",
+  0x0452,
+  "afii10100",
+  0x0453,
+  "afii10101",
+  0x0454,
+  "afii10102",
+  0x0455,
+  "afii10103",
+  0x0456,
+  "afii10104",
+  0x0457,
+  "afii10105",
+  0x0458,
+  "afii10106",
+  0x0459,
+  "afii10107",
+  0x045a,
+  "afii10108",
+  0x045b,
+  "afii10109",
+  0x045c,
+  "afii10110",
+  0x045e,
+  "afii10145",
+  0x040f,
+  "afii10146",
+  0x0462,
+  "afii10147",
+  0x0472,
+  "afii10148",
+  0x0474,
+  "afii10192",
+  0xf6c6,
+  "afii10193",
+  0x045f,
+  "afii10194",
+  0x0463,
+  "afii10195",
+  0x0473,
+  "afii10196",
+  0x0475,
+  "afii10831",
+  0xf6c7,
+  "afii10832",
+  0xf6c8,
+  "afii10846",
+  0x04d9,
+  "afii299",
+  0x200e,
+  "afii300",
+  0x200f,
+  "afii301",
+  0x200d,
+  "afii57381",
+  0x066a,
+  "afii57388",
+  0x060c,
+  "afii57392",
+  0x0660,
+  "afii57393",
+  0x0661,
+  "afii57394",
+  0x0662,
+  "afii57395",
+  0x0663,
+  "afii57396",
+  0x0664,
+  "afii57397",
+  0x0665,
+  "afii57398",
+  0x0666,
+  "afii57399",
+  0x0667,
+  "afii57400",
+  0x0668,
+  "afii57401",
+  0x0669,
+  "afii57403",
+  0x061b,
+  "afii57407",
+  0x061f,
+  "afii57409",
+  0x0621,
+  "afii57410",
+  0x0622,
+  "afii57411",
+  0x0623,
+  "afii57412",
+  0x0624,
+  "afii57413",
+  0x0625,
+  "afii57414",
+  0x0626,
+  "afii57415",
+  0x0627,
+  "afii57416",
+  0x0628,
+  "afii57417",
+  0x0629,
+  "afii57418",
+  0x062a,
+  "afii57419",
+  0x062b,
+  "afii57420",
+  0x062c,
+  "afii57421",
+  0x062d,
+  "afii57422",
+  0x062e,
+  "afii57423",
+  0x062f,
+  "afii57424",
+  0x0630,
+  "afii57425",
+  0x0631,
+  "afii57426",
+  0x0632,
+  "afii57427",
+  0x0633,
+  "afii57428",
+  0x0634,
+  "afii57429",
+  0x0635,
+  "afii57430",
+  0x0636,
+  "afii57431",
+  0x0637,
+  "afii57432",
+  0x0638,
+  "afii57433",
+  0x0639,
+  "afii57434",
+  0x063a,
+  "afii57440",
+  0x0640,
+  "afii57441",
+  0x0641,
+  "afii57442",
+  0x0642,
+  "afii57443",
+  0x0643,
+  "afii57444",
+  0x0644,
+  "afii57445",
+  0x0645,
+  "afii57446",
+  0x0646,
+  "afii57448",
+  0x0648,
+  "afii57449",
+  0x0649,
+  "afii57450",
+  0x064a,
+  "afii57451",
+  0x064b,
+  "afii57452",
+  0x064c,
+  "afii57453",
+  0x064d,
+  "afii57454",
+  0x064e,
+  "afii57455",
+  0x064f,
+  "afii57456",
+  0x0650,
+  "afii57457",
+  0x0651,
+  "afii57458",
+  0x0652,
+  "afii57470",
+  0x0647,
+  "afii57505",
+  0x06a4,
+  "afii57506",
+  0x067e,
+  "afii57507",
+  0x0686,
+  "afii57508",
+  0x0698,
+  "afii57509",
+  0x06af,
+  "afii57511",
+  0x0679,
+  "afii57512",
+  0x0688,
+  "afii57513",
+  0x0691,
+  "afii57514",
+  0x06ba,
+  "afii57519",
+  0x06d2,
+  "afii57534",
+  0x06d5,
+  "afii57636",
+  0x20aa,
+  "afii57645",
+  0x05be,
+  "afii57658",
+  0x05c3,
+  "afii57664",
+  0x05d0,
+  "afii57665",
+  0x05d1,
+  "afii57666",
+  0x05d2,
+  "afii57667",
+  0x05d3,
+  "afii57668",
+  0x05d4,
+  "afii57669",
+  0x05d5,
+  "afii57670",
+  0x05d6,
+  "afii57671",
+  0x05d7,
+  "afii57672",
+  0x05d8,
+  "afii57673",
+  0x05d9,
+  "afii57674",
+  0x05da,
+  "afii57675",
+  0x05db,
+  "afii57676",
+  0x05dc,
+  "afii57677",
+  0x05dd,
+  "afii57678",
+  0x05de,
+  "afii57679",
+  0x05df,
+  "afii57680",
+  0x05e0,
+  "afii57681",
+  0x05e1,
+  "afii57682",
+  0x05e2,
+  "afii57683",
+  0x05e3,
+  "afii57684",
+  0x05e4,
+  "afii57685",
+  0x05e5,
+  "afii57686",
+  0x05e6,
+  "afii57687",
+  0x05e7,
+  "afii57688",
+  0x05e8,
+  "afii57689",
+  0x05e9,
+  "afii57690",
+  0x05ea,
+  "afii57694",
+  0xfb2a,
+  "afii57695",
+  0xfb2b,
+  "afii57700",
+  0xfb4b,
+  "afii57705",
+  0xfb1f,
+  "afii57716",
+  0x05f0,
+  "afii57717",
+  0x05f1,
+  "afii57718",
+  0x05f2,
+  "afii57723",
+  0xfb35,
+  "afii57793",
+  0x05b4,
+  "afii57794",
+  0x05b5,
+  "afii57795",
+  0x05b6,
+  "afii57796",
+  0x05bb,
+  "afii57797",
+  0x05b8,
+  "afii57798",
+  0x05b7,
+  "afii57799",
+  0x05b0,
+  "afii57800",
+  0x05b2,
+  "afii57801",
+  0x05b1,
+  "afii57802",
+  0x05b3,
+  "afii57803",
+  0x05c2,
+  "afii57804",
+  0x05c1,
+  "afii57806",
+  0x05b9,
+  "afii57807",
+  0x05bc,
+  "afii57839",
+  0x05bd,
+  "afii57841",
+  0x05bf,
+  "afii57842",
+  0x05c0,
+  "afii57929",
+  0x02bc,
+  "afii61248",
+  0x2105,
+  "afii61289",
+  0x2113,
+  "afii61352",
+  0x2116,
+  "afii61573",
+  0x202c,
+  "afii61574",
+  0x202d,
+  "afii61575",
+  0x202e,
+  "afii61664",
+  0x200c,
+  "afii63167",
+  0x066d,
+  "afii64937",
+  0x02bd,
+  "agrave",
+  0x00e0,
+  "agujarati",
+  0x0a85,
+  "agurmukhi",
+  0x0a05,
+  "ahiragana",
+  0x3042,
+  "ahookabove",
+  0x1ea3,
+  "aibengali",
+  0x0990,
+  "aibopomofo",
+  0x311e,
+  "aideva",
+  0x0910,
+  "aiecyrillic",
+  0x04d5,
+  "aigujarati",
+  0x0a90,
+  "aigurmukhi",
+  0x0a10,
+  "aimatragurmukhi",
+  0x0a48,
+  "ainarabic",
+  0x0639,
+  "ainfinalarabic",
+  0xfeca,
+  "aininitialarabic",
+  0xfecb,
+  "ainmedialarabic",
+  0xfecc,
+  "ainvertedbreve",
+  0x0203,
+  "aivowelsignbengali",
+  0x09c8,
+  "aivowelsigndeva",
+  0x0948,
+  "aivowelsigngujarati",
+  0x0ac8,
+  "akatakana",
+  0x30a2,
+  "akatakanahalfwidth",
+  0xff71,
+  "akorean",
+  0x314f,
+  "alef",
+  0x05d0,
+  "alefarabic",
+  0x0627,
+  "alefdageshhebrew",
+  0xfb30,
+  "aleffinalarabic",
+  0xfe8e,
+  "alefhamzaabovearabic",
+  0x0623,
+  "alefhamzaabovefinalarabic",
+  0xfe84,
+  "alefhamzabelowarabic",
+  0x0625,
+  "alefhamzabelowfinalarabic",
+  0xfe88,
+  "alefhebrew",
+  0x05d0,
+  "aleflamedhebrew",
+  0xfb4f,
+  "alefmaddaabovearabic",
+  0x0622,
+  "alefmaddaabovefinalarabic",
+  0xfe82,
+  "alefmaksuraarabic",
+  0x0649,
+  "alefmaksurafinalarabic",
+  0xfef0,
+  "alefmaksurainitialarabic",
+  0xfef3,
+  "alefmaksuramedialarabic",
+  0xfef4,
+  "alefpatahhebrew",
+  0xfb2e,
+  "alefqamatshebrew",
+  0xfb2f,
+  "aleph",
+  0x2135,
+  "allequal",
+  0x224c,
+  "alpha",
+  0x03b1,
+  "alphatonos",
+  0x03ac,
+  "amacron",
+  0x0101,
+  "amonospace",
+  0xff41,
+  "ampersand",
+  0x0026,
+  "ampersandmonospace",
+  0xff06,
+  "ampersandsmall",
+  0xf726,
+  "amsquare",
+  0x33c2,
+  "anbopomofo",
+  0x3122,
+  "angbopomofo",
+  0x3124,
+  "angbracketleft",
+  0x3008,
+  "angbracketright",
+  0x3009,
+  "angkhankhuthai",
+  0x0e5a,
+  "angle",
+  0x2220,
+  "anglebracketleft",
+  0x3008,
+  "anglebracketleftvertical",
+  0xfe3f,
+  "anglebracketright",
+  0x3009,
+  "anglebracketrightvertical",
+  0xfe40,
+  "angleleft",
+  0x2329,
+  "angleright",
+  0x232a,
+  "angstrom",
+  0x212b,
+  "anoteleia",
+  0x0387,
+  "anudattadeva",
+  0x0952,
+  "anusvarabengali",
+  0x0982,
+  "anusvaradeva",
+  0x0902,
+  "anusvaragujarati",
+  0x0a82,
+  "aogonek",
+  0x0105,
+  "apaatosquare",
+  0x3300,
+  "aparen",
+  0x249c,
+  "apostrophearmenian",
+  0x055a,
+  "apostrophemod",
+  0x02bc,
+  "apple",
+  0xf8ff,
+  "approaches",
+  0x2250,
+  "approxequal",
+  0x2248,
+  "approxequalorimage",
+  0x2252,
+  "approximatelyequal",
+  0x2245,
+  "araeaekorean",
+  0x318e,
+  "araeakorean",
+  0x318d,
+  "arc",
+  0x2312,
+  "arighthalfring",
+  0x1e9a,
+  "aring",
+  0x00e5,
+  "aringacute",
+  0x01fb,
+  "aringbelow",
+  0x1e01,
+  "arrowboth",
+  0x2194,
+  "arrowdashdown",
+  0x21e3,
+  "arrowdashleft",
+  0x21e0,
+  "arrowdashright",
+  0x21e2,
+  "arrowdashup",
+  0x21e1,
+  "arrowdblboth",
+  0x21d4,
+  "arrowdbldown",
+  0x21d3,
+  "arrowdblleft",
+  0x21d0,
+  "arrowdblright",
+  0x21d2,
+  "arrowdblup",
+  0x21d1,
+  "arrowdown",
+  0x2193,
+  "arrowdownleft",
+  0x2199,
+  "arrowdownright",
+  0x2198,
+  "arrowdownwhite",
+  0x21e9,
+  "arrowheaddownmod",
+  0x02c5,
+  "arrowheadleftmod",
+  0x02c2,
+  "arrowheadrightmod",
+  0x02c3,
+  "arrowheadupmod",
+  0x02c4,
+  "arrowhorizex",
+  0xf8e7,
+  "arrowleft",
+  0x2190,
+  "arrowleftdbl",
+  0x21d0,
+  "arrowleftdblstroke",
+  0x21cd,
+  "arrowleftoverright",
+  0x21c6,
+  "arrowleftwhite",
+  0x21e6,
+  "arrowright",
+  0x2192,
+  "arrowrightdblstroke",
+  0x21cf,
+  "arrowrightheavy",
+  0x279e,
+  "arrowrightoverleft",
+  0x21c4,
+  "arrowrightwhite",
+  0x21e8,
+  "arrowtableft",
+  0x21e4,
+  "arrowtabright",
+  0x21e5,
+  "arrowup",
+  0x2191,
+  "arrowupdn",
+  0x2195,
+  "arrowupdnbse",
+  0x21a8,
+  "arrowupdownbase",
+  0x21a8,
+  "arrowupleft",
+  0x2196,
+  "arrowupleftofdown",
+  0x21c5,
+  "arrowupright",
+  0x2197,
+  "arrowupwhite",
+  0x21e7,
+  "arrowvertex",
+  0xf8e6,
+  "asciicircum",
+  0x005e,
+  "asciicircummonospace",
+  0xff3e,
+  "asciitilde",
+  0x007e,
+  "asciitildemonospace",
+  0xff5e,
+  "ascript",
+  0x0251,
+  "ascriptturned",
+  0x0252,
+  "asmallhiragana",
+  0x3041,
+  "asmallkatakana",
+  0x30a1,
+  "asmallkatakanahalfwidth",
+  0xff67,
+  "asterisk",
+  0x002a,
+  "asteriskaltonearabic",
+  0x066d,
+  "asteriskarabic",
+  0x066d,
+  "asteriskmath",
+  0x2217,
+  "asteriskmonospace",
+  0xff0a,
+  "asterisksmall",
+  0xfe61,
+  "asterism",
+  0x2042,
+  "asuperior",
+  0xf6e9,
+  "asymptoticallyequal",
+  0x2243,
+  "at",
+  0x0040,
+  "atilde",
+  0x00e3,
+  "atmonospace",
+  0xff20,
+  "atsmall",
+  0xfe6b,
+  "aturned",
+  0x0250,
+  "aubengali",
+  0x0994,
+  "aubopomofo",
+  0x3120,
+  "audeva",
+  0x0914,
+  "augujarati",
+  0x0a94,
+  "augurmukhi",
+  0x0a14,
+  "aulengthmarkbengali",
+  0x09d7,
+  "aumatragurmukhi",
+  0x0a4c,
+  "auvowelsignbengali",
+  0x09cc,
+  "auvowelsigndeva",
+  0x094c,
+  "auvowelsigngujarati",
+  0x0acc,
+  "avagrahadeva",
+  0x093d,
+  "aybarmenian",
+  0x0561,
+  "ayin",
+  0x05e2,
+  "ayinaltonehebrew",
+  0xfb20,
+  "ayinhebrew",
+  0x05e2,
+  "b",
+  0x0062,
+  "babengali",
+  0x09ac,
+  "backslash",
+  0x005c,
+  "backslashmonospace",
+  0xff3c,
+  "badeva",
+  0x092c,
+  "bagujarati",
+  0x0aac,
+  "bagurmukhi",
+  0x0a2c,
+  "bahiragana",
+  0x3070,
+  "bahtthai",
+  0x0e3f,
+  "bakatakana",
+  0x30d0,
+  "bar",
+  0x007c,
+  "barmonospace",
+  0xff5c,
+  "bbopomofo",
+  0x3105,
+  "bcircle",
+  0x24d1,
+  "bdotaccent",
+  0x1e03,
+  "bdotbelow",
+  0x1e05,
+  "beamedsixteenthnotes",
+  0x266c,
+  "because",
+  0x2235,
+  "becyrillic",
+  0x0431,
+  "beharabic",
+  0x0628,
+  "behfinalarabic",
+  0xfe90,
+  "behinitialarabic",
+  0xfe91,
+  "behiragana",
+  0x3079,
+  "behmedialarabic",
+  0xfe92,
+  "behmeeminitialarabic",
+  0xfc9f,
+  "behmeemisolatedarabic",
+  0xfc08,
+  "behnoonfinalarabic",
+  0xfc6d,
+  "bekatakana",
+  0x30d9,
+  "benarmenian",
+  0x0562,
+  "bet",
+  0x05d1,
+  "beta",
+  0x03b2,
+  "betasymbolgreek",
+  0x03d0,
+  "betdagesh",
+  0xfb31,
+  "betdageshhebrew",
+  0xfb31,
+  "bethebrew",
+  0x05d1,
+  "betrafehebrew",
+  0xfb4c,
+  "bhabengali",
+  0x09ad,
+  "bhadeva",
+  0x092d,
+  "bhagujarati",
+  0x0aad,
+  "bhagurmukhi",
+  0x0a2d,
+  "bhook",
+  0x0253,
+  "bihiragana",
+  0x3073,
+  "bikatakana",
+  0x30d3,
+  "bilabialclick",
+  0x0298,
+  "bindigurmukhi",
+  0x0a02,
+  "birusquare",
+  0x3331,
+  "blackcircle",
+  0x25cf,
+  "blackdiamond",
+  0x25c6,
+  "blackdownpointingtriangle",
+  0x25bc,
+  "blackleftpointingpointer",
+  0x25c4,
+  "blackleftpointingtriangle",
+  0x25c0,
+  "blacklenticularbracketleft",
+  0x3010,
+  "blacklenticularbracketleftvertical",
+  0xfe3b,
+  "blacklenticularbracketright",
+  0x3011,
+  "blacklenticularbracketrightvertical",
+  0xfe3c,
+  "blacklowerlefttriangle",
+  0x25e3,
+  "blacklowerrighttriangle",
+  0x25e2,
+  "blackrectangle",
+  0x25ac,
+  "blackrightpointingpointer",
+  0x25ba,
+  "blackrightpointingtriangle",
+  0x25b6,
+  "blacksmallsquare",
+  0x25aa,
+  "blacksmilingface",
+  0x263b,
+  "blacksquare",
+  0x25a0,
+  "blackstar",
+  0x2605,
+  "blackupperlefttriangle",
+  0x25e4,
+  "blackupperrighttriangle",
+  0x25e5,
+  "blackuppointingsmalltriangle",
+  0x25b4,
+  "blackuppointingtriangle",
+  0x25b2,
+  "blank",
+  0x2423,
+  "blinebelow",
+  0x1e07,
+  "block",
+  0x2588,
+  "bmonospace",
+  0xff42,
+  "bobaimaithai",
+  0x0e1a,
+  "bohiragana",
+  0x307c,
+  "bokatakana",
+  0x30dc,
+  "bparen",
+  0x249d,
+  "bqsquare",
+  0x33c3,
+  "braceex",
+  0xf8f4,
+  "braceleft",
+  0x007b,
+  "braceleftbt",
+  0xf8f3,
+  "braceleftmid",
+  0xf8f2,
+  "braceleftmonospace",
+  0xff5b,
+  "braceleftsmall",
+  0xfe5b,
+  "bracelefttp",
+  0xf8f1,
+  "braceleftvertical",
+  0xfe37,
+  "braceright",
+  0x007d,
+  "bracerightbt",
+  0xf8fe,
+  "bracerightmid",
+  0xf8fd,
+  "bracerightmonospace",
+  0xff5d,
+  "bracerightsmall",
+  0xfe5c,
+  "bracerighttp",
+  0xf8fc,
+  "bracerightvertical",
+  0xfe38,
+  "bracketleft",
+  0x005b,
+  "bracketleftbt",
+  0xf8f0,
+  "bracketleftex",
+  0xf8ef,
+  "bracketleftmonospace",
+  0xff3b,
+  "bracketlefttp",
+  0xf8ee,
+  "bracketright",
+  0x005d,
+  "bracketrightbt",
+  0xf8fb,
+  "bracketrightex",
+  0xf8fa,
+  "bracketrightmonospace",
+  0xff3d,
+  "bracketrighttp",
+  0xf8f9,
+  "breve",
+  0x02d8,
+  "brevebelowcmb",
+  0x032e,
+  "brevecmb",
+  0x0306,
+  "breveinvertedbelowcmb",
+  0x032f,
+  "breveinvertedcmb",
+  0x0311,
+  "breveinverteddoublecmb",
+  0x0361,
+  "bridgebelowcmb",
+  0x032a,
+  "bridgeinvertedbelowcmb",
+  0x033a,
+  "brokenbar",
+  0x00a6,
+  "bstroke",
+  0x0180,
+  "bsuperior",
+  0xf6ea,
+  "btopbar",
+  0x0183,
+  "buhiragana",
+  0x3076,
+  "bukatakana",
+  0x30d6,
+  "bullet",
+  0x2022,
+  "bulletinverse",
+  0x25d8,
+  "bulletoperator",
+  0x2219,
+  "bullseye",
+  0x25ce,
+  "c",
+  0x0063,
+  "caarmenian",
+  0x056e,
+  "cabengali",
+  0x099a,
+  "cacute",
+  0x0107,
+  "cadeva",
+  0x091a,
+  "cagujarati",
+  0x0a9a,
+  "cagurmukhi",
+  0x0a1a,
+  "calsquare",
+  0x3388,
+  "candrabindubengali",
+  0x0981,
+  "candrabinducmb",
+  0x0310,
+  "candrabindudeva",
+  0x0901,
+  "candrabindugujarati",
+  0x0a81,
+  "capslock",
+  0x21ea,
+  "careof",
+  0x2105,
+  "caron",
+  0x02c7,
+  "caronbelowcmb",
+  0x032c,
+  "caroncmb",
+  0x030c,
+  "carriagereturn",
+  0x21b5,
+  "cbopomofo",
+  0x3118,
+  "ccaron",
+  0x010d,
+  "ccedilla",
+  0x00e7,
+  "ccedillaacute",
+  0x1e09,
+  "ccircle",
+  0x24d2,
+  "ccircumflex",
+  0x0109,
+  "ccurl",
+  0x0255,
+  "cdot",
+  0x010b,
+  "cdotaccent",
+  0x010b,
+  "cdsquare",
+  0x33c5,
+  "cedilla",
+  0x00b8,
+  "cedillacmb",
+  0x0327,
+  "cent",
+  0x00a2,
+  "centigrade",
+  0x2103,
+  "centinferior",
+  0xf6df,
+  "centmonospace",
+  0xffe0,
+  "centoldstyle",
+  0xf7a2,
+  "centsuperior",
+  0xf6e0,
+  "chaarmenian",
+  0x0579,
+  "chabengali",
+  0x099b,
+  "chadeva",
+  0x091b,
+  "chagujarati",
+  0x0a9b,
+  "chagurmukhi",
+  0x0a1b,
+  "chbopomofo",
+  0x3114,
+  "cheabkhasiancyrillic",
+  0x04bd,
+  "checkmark",
+  0x2713,
+  "checyrillic",
+  0x0447,
+  "chedescenderabkhasiancyrillic",
+  0x04bf,
+  "chedescendercyrillic",
+  0x04b7,
+  "chedieresiscyrillic",
+  0x04f5,
+  "cheharmenian",
+  0x0573,
+  "chekhakassiancyrillic",
+  0x04cc,
+  "cheverticalstrokecyrillic",
+  0x04b9,
+  "chi",
+  0x03c7,
+  "chieuchacirclekorean",
+  0x3277,
+  "chieuchaparenkorean",
+  0x3217,
+  "chieuchcirclekorean",
+  0x3269,
+  "chieuchkorean",
+  0x314a,
+  "chieuchparenkorean",
+  0x3209,
+  "chochangthai",
+  0x0e0a,
+  "chochanthai",
+  0x0e08,
+  "chochingthai",
+  0x0e09,
+  "chochoethai",
+  0x0e0c,
+  "chook",
+  0x0188,
+  "cieucacirclekorean",
+  0x3276,
+  "cieucaparenkorean",
+  0x3216,
+  "cieuccirclekorean",
+  0x3268,
+  "cieuckorean",
+  0x3148,
+  "cieucparenkorean",
+  0x3208,
+  "cieucuparenkorean",
+  0x321c,
+  "circle",
+  0x25cb,
+  "circlecopyrt",
+  0x00a9,
+  "circlemultiply",
+  0x2297,
+  "circleot",
+  0x2299,
+  "circleplus",
+  0x2295,
+  "circlepostalmark",
+  0x3036,
+  "circlewithlefthalfblack",
+  0x25d0,
+  "circlewithrighthalfblack",
+  0x25d1,
+  "circumflex",
+  0x02c6,
+  "circumflexbelowcmb",
+  0x032d,
+  "circumflexcmb",
+  0x0302,
+  "clear",
+  0x2327,
+  "clickalveolar",
+  0x01c2,
+  "clickdental",
+  0x01c0,
+  "clicklateral",
+  0x01c1,
+  "clickretroflex",
+  0x01c3,
+  "club",
+  0x2663,
+  "clubsuitblack",
+  0x2663,
+  "clubsuitwhite",
+  0x2667,
+  "cmcubedsquare",
+  0x33a4,
+  "cmonospace",
+  0xff43,
+  "cmsquaredsquare",
+  0x33a0,
+  "coarmenian",
+  0x0581,
+  "colon",
+  0x003a,
+  "colonmonetary",
+  0x20a1,
+  "colonmonospace",
+  0xff1a,
+  "colonsign",
+  0x20a1,
+  "colonsmall",
+  0xfe55,
+  "colontriangularhalfmod",
+  0x02d1,
+  "colontriangularmod",
+  0x02d0,
+  "comma",
+  0x002c,
+  "commaabovecmb",
+  0x0313,
+  "commaaboverightcmb",
+  0x0315,
+  "commaaccent",
+  0xf6c3,
+  "commaarabic",
+  0x060c,
+  "commaarmenian",
+  0x055d,
+  "commainferior",
+  0xf6e1,
+  "commamonospace",
+  0xff0c,
+  "commareversedabovecmb",
+  0x0314,
+  "commareversedmod",
+  0x02bd,
+  "commasmall",
+  0xfe50,
+  "commasuperior",
+  0xf6e2,
+  "commaturnedabovecmb",
+  0x0312,
+  "commaturnedmod",
+  0x02bb,
+  "compass",
+  0x263c,
+  "congruent",
+  0x2245,
+  "contourintegral",
+  0x222e,
+  "control",
+  0x2303,
+  "controlACK",
+  0x0006,
+  "controlBEL",
+  0x0007,
+  "controlBS",
+  0x0008,
+  "controlCAN",
+  0x0018,
+  "controlCR",
+  0x000d,
+  "controlDC1",
+  0x0011,
+  "controlDC2",
+  0x0012,
+  "controlDC3",
+  0x0013,
+  "controlDC4",
+  0x0014,
+  "controlDEL",
+  0x007f,
+  "controlDLE",
+  0x0010,
+  "controlEM",
+  0x0019,
+  "controlENQ",
+  0x0005,
+  "controlEOT",
+  0x0004,
+  "controlESC",
+  0x001b,
+  "controlETB",
+  0x0017,
+  "controlETX",
+  0x0003,
+  "controlFF",
+  0x000c,
+  "controlFS",
+  0x001c,
+  "controlGS",
+  0x001d,
+  "controlHT",
+  0x0009,
+  "controlLF",
+  0x000a,
+  "controlNAK",
+  0x0015,
+  "controlNULL",
+  0x0000,
+  "controlRS",
+  0x001e,
+  "controlSI",
+  0x000f,
+  "controlSO",
+  0x000e,
+  "controlSOT",
+  0x0002,
+  "controlSTX",
+  0x0001,
+  "controlSUB",
+  0x001a,
+  "controlSYN",
+  0x0016,
+  "controlUS",
+  0x001f,
+  "controlVT",
+  0x000b,
+  "copyright",
+  0x00a9,
+  "copyrightsans",
+  0xf8e9,
+  "copyrightserif",
+  0xf6d9,
+  "cornerbracketleft",
+  0x300c,
+  "cornerbracketlefthalfwidth",
+  0xff62,
+  "cornerbracketleftvertical",
+  0xfe41,
+  "cornerbracketright",
+  0x300d,
+  "cornerbracketrighthalfwidth",
+  0xff63,
+  "cornerbracketrightvertical",
+  0xfe42,
+  "corporationsquare",
+  0x337f,
+  "cosquare",
+  0x33c7,
+  "coverkgsquare",
+  0x33c6,
+  "cparen",
+  0x249e,
+  "cruzeiro",
+  0x20a2,
+  "cstretched",
+  0x0297,
+  "curlyand",
+  0x22cf,
+  "curlyor",
+  0x22ce,
+  "currency",
+  0x00a4,
+  "cyrBreve",
+  0xf6d1,
+  "cyrFlex",
+  0xf6d2,
+  "cyrbreve",
+  0xf6d4,
+  "cyrflex",
+  0xf6d5,
+  "d",
+  0x0064,
+  "daarmenian",
+  0x0564,
+  "dabengali",
+  0x09a6,
+  "dadarabic",
+  0x0636,
+  "dadeva",
+  0x0926,
+  "dadfinalarabic",
+  0xfebe,
+  "dadinitialarabic",
+  0xfebf,
+  "dadmedialarabic",
+  0xfec0,
+  "dagesh",
+  0x05bc,
+  "dageshhebrew",
+  0x05bc,
+  "dagger",
+  0x2020,
+  "daggerdbl",
+  0x2021,
+  "dagujarati",
+  0x0aa6,
+  "dagurmukhi",
+  0x0a26,
+  "dahiragana",
+  0x3060,
+  "dakatakana",
+  0x30c0,
+  "dalarabic",
+  0x062f,
+  "dalet",
+  0x05d3,
+  "daletdagesh",
+  0xfb33,
+  "daletdageshhebrew",
+  0xfb33,
+  "dalethebrew",
+  0x05d3,
+  "dalfinalarabic",
+  0xfeaa,
+  "dammaarabic",
+  0x064f,
+  "dammalowarabic",
+  0x064f,
+  "dammatanaltonearabic",
+  0x064c,
+  "dammatanarabic",
+  0x064c,
+  "danda",
+  0x0964,
+  "dargahebrew",
+  0x05a7,
+  "dargalefthebrew",
+  0x05a7,
+  "dasiapneumatacyrilliccmb",
+  0x0485,
+  "dblGrave",
+  0xf6d3,
+  "dblanglebracketleft",
+  0x300a,
+  "dblanglebracketleftvertical",
+  0xfe3d,
+  "dblanglebracketright",
+  0x300b,
+  "dblanglebracketrightvertical",
+  0xfe3e,
+  "dblarchinvertedbelowcmb",
+  0x032b,
+  "dblarrowleft",
+  0x21d4,
+  "dblarrowright",
+  0x21d2,
+  "dbldanda",
+  0x0965,
+  "dblgrave",
+  0xf6d6,
+  "dblgravecmb",
+  0x030f,
+  "dblintegral",
+  0x222c,
+  "dbllowline",
+  0x2017,
+  "dbllowlinecmb",
+  0x0333,
+  "dbloverlinecmb",
+  0x033f,
+  "dblprimemod",
+  0x02ba,
+  "dblverticalbar",
+  0x2016,
+  "dblverticallineabovecmb",
+  0x030e,
+  "dbopomofo",
+  0x3109,
+  "dbsquare",
+  0x33c8,
+  "dcaron",
+  0x010f,
+  "dcedilla",
+  0x1e11,
+  "dcircle",
+  0x24d3,
+  "dcircumflexbelow",
+  0x1e13,
+  "dcroat",
+  0x0111,
+  "ddabengali",
+  0x09a1,
+  "ddadeva",
+  0x0921,
+  "ddagujarati",
+  0x0aa1,
+  "ddagurmukhi",
+  0x0a21,
+  "ddalarabic",
+  0x0688,
+  "ddalfinalarabic",
+  0xfb89,
+  "dddhadeva",
+  0x095c,
+  "ddhabengali",
+  0x09a2,
+  "ddhadeva",
+  0x0922,
+  "ddhagujarati",
+  0x0aa2,
+  "ddhagurmukhi",
+  0x0a22,
+  "ddotaccent",
+  0x1e0b,
+  "ddotbelow",
+  0x1e0d,
+  "decimalseparatorarabic",
+  0x066b,
+  "decimalseparatorpersian",
+  0x066b,
+  "decyrillic",
+  0x0434,
+  "degree",
+  0x00b0,
+  "dehihebrew",
+  0x05ad,
+  "dehiragana",
+  0x3067,
+  "deicoptic",
+  0x03ef,
+  "dekatakana",
+  0x30c7,
+  "deleteleft",
+  0x232b,
+  "deleteright",
+  0x2326,
+  "delta",
+  0x03b4,
+  "deltaturned",
+  0x018d,
+  "denominatorminusonenumeratorbengali",
+  0x09f8,
+  "dezh",
+  0x02a4,
+  "dhabengali",
+  0x09a7,
+  "dhadeva",
+  0x0927,
+  "dhagujarati",
+  0x0aa7,
+  "dhagurmukhi",
+  0x0a27,
+  "dhook",
+  0x0257,
+  "dialytikatonos",
+  0x0385,
+  "dialytikatonoscmb",
+  0x0344,
+  "diamond",
+  0x2666,
+  "diamondsuitwhite",
+  0x2662,
+  "dieresis",
+  0x00a8,
+  "dieresisacute",
+  0xf6d7,
+  "dieresisbelowcmb",
+  0x0324,
+  "dieresiscmb",
+  0x0308,
+  "dieresisgrave",
+  0xf6d8,
+  "dieresistonos",
+  0x0385,
+  "dihiragana",
+  0x3062,
+  "dikatakana",
+  0x30c2,
+  "dittomark",
+  0x3003,
+  "divide",
+  0x00f7,
+  "divides",
+  0x2223,
+  "divisionslash",
+  0x2215,
+  "djecyrillic",
+  0x0452,
+  "dkshade",
+  0x2593,
+  "dlinebelow",
+  0x1e0f,
+  "dlsquare",
+  0x3397,
+  "dmacron",
+  0x0111,
+  "dmonospace",
+  0xff44,
+  "dnblock",
+  0x2584,
+  "dochadathai",
+  0x0e0e,
+  "dodekthai",
+  0x0e14,
+  "dohiragana",
+  0x3069,
+  "dokatakana",
+  0x30c9,
+  "dollar",
+  0x0024,
+  "dollarinferior",
+  0xf6e3,
+  "dollarmonospace",
+  0xff04,
+  "dollaroldstyle",
+  0xf724,
+  "dollarsmall",
+  0xfe69,
+  "dollarsuperior",
+  0xf6e4,
+  "dong",
+  0x20ab,
+  "dorusquare",
+  0x3326,
+  "dotaccent",
+  0x02d9,
+  "dotaccentcmb",
+  0x0307,
+  "dotbelowcmb",
+  0x0323,
+  "dotbelowcomb",
+  0x0323,
+  "dotkatakana",
+  0x30fb,
+  "dotlessi",
+  0x0131,
+  "dotlessj",
+  0xf6be,
+  "dotlessjstrokehook",
+  0x0284,
+  "dotmath",
+  0x22c5,
+  "dottedcircle",
+  0x25cc,
+  "doubleyodpatah",
+  0xfb1f,
+  "doubleyodpatahhebrew",
+  0xfb1f,
+  "downtackbelowcmb",
+  0x031e,
+  "downtackmod",
+  0x02d5,
+  "dparen",
+  0x249f,
+  "dsuperior",
+  0xf6eb,
+  "dtail",
+  0x0256,
+  "dtopbar",
+  0x018c,
+  "duhiragana",
+  0x3065,
+  "dukatakana",
+  0x30c5,
+  "dz",
+  0x01f3,
+  "dzaltone",
+  0x02a3,
+  "dzcaron",
+  0x01c6,
+  "dzcurl",
+  0x02a5,
+  "dzeabkhasiancyrillic",
+  0x04e1,
+  "dzecyrillic",
+  0x0455,
+  "dzhecyrillic",
+  0x045f,
+  "e",
+  0x0065,
+  "eacute",
+  0x00e9,
+  "earth",
+  0x2641,
+  "ebengali",
+  0x098f,
+  "ebopomofo",
+  0x311c,
+  "ebreve",
+  0x0115,
+  "ecandradeva",
+  0x090d,
+  "ecandragujarati",
+  0x0a8d,
+  "ecandravowelsigndeva",
+  0x0945,
+  "ecandravowelsigngujarati",
+  0x0ac5,
+  "ecaron",
+  0x011b,
+  "ecedillabreve",
+  0x1e1d,
+  "echarmenian",
+  0x0565,
+  "echyiwnarmenian",
+  0x0587,
+  "ecircle",
+  0x24d4,
+  "ecircumflex",
+  0x00ea,
+  "ecircumflexacute",
+  0x1ebf,
+  "ecircumflexbelow",
+  0x1e19,
+  "ecircumflexdotbelow",
+  0x1ec7,
+  "ecircumflexgrave",
+  0x1ec1,
+  "ecircumflexhookabove",
+  0x1ec3,
+  "ecircumflextilde",
+  0x1ec5,
+  "ecyrillic",
+  0x0454,
+  "edblgrave",
+  0x0205,
+  "edeva",
+  0x090f,
+  "edieresis",
+  0x00eb,
+  "edot",
+  0x0117,
+  "edotaccent",
+  0x0117,
+  "edotbelow",
+  0x1eb9,
+  "eegurmukhi",
+  0x0a0f,
+  "eematragurmukhi",
+  0x0a47,
+  "efcyrillic",
+  0x0444,
+  "egrave",
+  0x00e8,
+  "egujarati",
+  0x0a8f,
+  "eharmenian",
+  0x0567,
+  "ehbopomofo",
+  0x311d,
+  "ehiragana",
+  0x3048,
+  "ehookabove",
+  0x1ebb,
+  "eibopomofo",
+  0x311f,
+  "eight",
+  0x0038,
+  "eightarabic",
+  0x0668,
+  "eightbengali",
+  0x09ee,
+  "eightcircle",
+  0x2467,
+  "eightcircleinversesansserif",
+  0x2791,
+  "eightdeva",
+  0x096e,
+  "eighteencircle",
+  0x2471,
+  "eighteenparen",
+  0x2485,
+  "eighteenperiod",
+  0x2499,
+  "eightgujarati",
+  0x0aee,
+  "eightgurmukhi",
+  0x0a6e,
+  "eighthackarabic",
+  0x0668,
+  "eighthangzhou",
+  0x3028,
+  "eighthnotebeamed",
+  0x266b,
+  "eightideographicparen",
+  0x3227,
+  "eightinferior",
+  0x2088,
+  "eightmonospace",
+  0xff18,
+  "eightoldstyle",
+  0xf738,
+  "eightparen",
+  0x247b,
+  "eightperiod",
+  0x248f,
+  "eightpersian",
+  0x06f8,
+  "eightroman",
+  0x2177,
+  "eightsuperior",
+  0x2078,
+  "eightthai",
+  0x0e58,
+  "einvertedbreve",
+  0x0207,
+  "eiotifiedcyrillic",
+  0x0465,
+  "ekatakana",
+  0x30a8,
+  "ekatakanahalfwidth",
+  0xff74,
+  "ekonkargurmukhi",
+  0x0a74,
+  "ekorean",
+  0x3154,
+  "elcyrillic",
+  0x043b,
+  "element",
+  0x2208,
+  "elevencircle",
+  0x246a,
+  "elevenparen",
+  0x247e,
+  "elevenperiod",
+  0x2492,
+  "elevenroman",
+  0x217a,
+  "ellipsis",
+  0x2026,
+  "ellipsisvertical",
+  0x22ee,
+  "emacron",
+  0x0113,
+  "emacronacute",
+  0x1e17,
+  "emacrongrave",
+  0x1e15,
+  "emcyrillic",
+  0x043c,
+  "emdash",
+  0x2014,
+  "emdashvertical",
+  0xfe31,
+  "emonospace",
+  0xff45,
+  "emphasismarkarmenian",
+  0x055b,
+  "emptyset",
+  0x2205,
+  "enbopomofo",
+  0x3123,
+  "encyrillic",
+  0x043d,
+  "endash",
+  0x2013,
+  "endashvertical",
+  0xfe32,
+  "endescendercyrillic",
+  0x04a3,
+  "eng",
+  0x014b,
+  "engbopomofo",
+  0x3125,
+  "enghecyrillic",
+  0x04a5,
+  "enhookcyrillic",
+  0x04c8,
+  "enspace",
+  0x2002,
+  "eogonek",
+  0x0119,
+  "eokorean",
+  0x3153,
+  "eopen",
+  0x025b,
+  "eopenclosed",
+  0x029a,
+  "eopenreversed",
+  0x025c,
+  "eopenreversedclosed",
+  0x025e,
+  "eopenreversedhook",
+  0x025d,
+  "eparen",
+  0x24a0,
+  "epsilon",
+  0x03b5,
+  "epsilontonos",
+  0x03ad,
+  "equal",
+  0x003d,
+  "equalmonospace",
+  0xff1d,
+  "equalsmall",
+  0xfe66,
+  "equalsuperior",
+  0x207c,
+  "equivalence",
+  0x2261,
+  "erbopomofo",
+  0x3126,
+  "ercyrillic",
+  0x0440,
+  "ereversed",
+  0x0258,
+  "ereversedcyrillic",
+  0x044d,
+  "escyrillic",
+  0x0441,
+  "esdescendercyrillic",
+  0x04ab,
+  "esh",
+  0x0283,
+  "eshcurl",
+  0x0286,
+  "eshortdeva",
+  0x090e,
+  "eshortvowelsigndeva",
+  0x0946,
+  "eshreversedloop",
+  0x01aa,
+  "eshsquatreversed",
+  0x0285,
+  "esmallhiragana",
+  0x3047,
+  "esmallkatakana",
+  0x30a7,
+  "esmallkatakanahalfwidth",
+  0xff6a,
+  "estimated",
+  0x212e,
+  "esuperior",
+  0xf6ec,
+  "eta",
+  0x03b7,
+  "etarmenian",
+  0x0568,
+  "etatonos",
+  0x03ae,
+  "eth",
+  0x00f0,
+  "etilde",
+  0x1ebd,
+  "etildebelow",
+  0x1e1b,
+  "etnahtafoukhhebrew",
+  0x0591,
+  "etnahtafoukhlefthebrew",
+  0x0591,
+  "etnahtahebrew",
+  0x0591,
+  "etnahtalefthebrew",
+  0x0591,
+  "eturned",
+  0x01dd,
+  "eukorean",
+  0x3161,
+  "euro",
+  0x20ac,
+  "evowelsignbengali",
+  0x09c7,
+  "evowelsigndeva",
+  0x0947,
+  "evowelsigngujarati",
+  0x0ac7,
+  "exclam",
+  0x0021,
+  "exclamarmenian",
+  0x055c,
+  "exclamdbl",
+  0x203c,
+  "exclamdown",
+  0x00a1,
+  "exclamdownsmall",
+  0xf7a1,
+  "exclammonospace",
+  0xff01,
+  "exclamsmall",
+  0xf721,
+  "existential",
+  0x2203,
+  "ezh",
+  0x0292,
+  "ezhcaron",
+  0x01ef,
+  "ezhcurl",
+  0x0293,
+  "ezhreversed",
+  0x01b9,
+  "ezhtail",
+  0x01ba,
+  "f",
+  0x0066,
+  "fadeva",
+  0x095e,
+  "fagurmukhi",
+  0x0a5e,
+  "fahrenheit",
+  0x2109,
+  "fathaarabic",
+  0x064e,
+  "fathalowarabic",
+  0x064e,
+  "fathatanarabic",
+  0x064b,
+  "fbopomofo",
+  0x3108,
+  "fcircle",
+  0x24d5,
+  "fdotaccent",
+  0x1e1f,
+  "feharabic",
+  0x0641,
+  "feharmenian",
+  0x0586,
+  "fehfinalarabic",
+  0xfed2,
+  "fehinitialarabic",
+  0xfed3,
+  "fehmedialarabic",
+  0xfed4,
+  "feicoptic",
+  0x03e5,
+  "female",
+  0x2640,
+  "ff",
+  0xfb00,
+  "f_f",
+  0xfb00,
+  "ffi",
+  0xfb03,
+  "ffl",
+  0xfb04,
+  "fi",
+  0xfb01,
+  "fifteencircle",
+  0x246e,
+  "fifteenparen",
+  0x2482,
+  "fifteenperiod",
+  0x2496,
+  "figuredash",
+  0x2012,
+  "filledbox",
+  0x25a0,
+  "filledrect",
+  0x25ac,
+  "finalkaf",
+  0x05da,
+  "finalkafdagesh",
+  0xfb3a,
+  "finalkafdageshhebrew",
+  0xfb3a,
+  "finalkafhebrew",
+  0x05da,
+  "finalmem",
+  0x05dd,
+  "finalmemhebrew",
+  0x05dd,
+  "finalnun",
+  0x05df,
+  "finalnunhebrew",
+  0x05df,
+  "finalpe",
+  0x05e3,
+  "finalpehebrew",
+  0x05e3,
+  "finaltsadi",
+  0x05e5,
+  "finaltsadihebrew",
+  0x05e5,
+  "firsttonechinese",
+  0x02c9,
+  "fisheye",
+  0x25c9,
+  "fitacyrillic",
+  0x0473,
+  "five",
+  0x0035,
+  "fivearabic",
+  0x0665,
+  "fivebengali",
+  0x09eb,
+  "fivecircle",
+  0x2464,
+  "fivecircleinversesansserif",
+  0x278e,
+  "fivedeva",
+  0x096b,
+  "fiveeighths",
+  0x215d,
+  "fivegujarati",
+  0x0aeb,
+  "fivegurmukhi",
+  0x0a6b,
+  "fivehackarabic",
+  0x0665,
+  "fivehangzhou",
+  0x3025,
+  "fiveideographicparen",
+  0x3224,
+  "fiveinferior",
+  0x2085,
+  "fivemonospace",
+  0xff15,
+  "fiveoldstyle",
+  0xf735,
+  "fiveparen",
+  0x2478,
+  "fiveperiod",
+  0x248c,
+  "fivepersian",
+  0x06f5,
+  "fiveroman",
+  0x2174,
+  "fivesuperior",
+  0x2075,
+  "fivethai",
+  0x0e55,
+  "fl",
+  0xfb02,
+  "florin",
+  0x0192,
+  "fmonospace",
+  0xff46,
+  "fmsquare",
+  0x3399,
+  "fofanthai",
+  0x0e1f,
+  "fofathai",
+  0x0e1d,
+  "fongmanthai",
+  0x0e4f,
+  "forall",
+  0x2200,
+  "four",
+  0x0034,
+  "fourarabic",
+  0x0664,
+  "fourbengali",
+  0x09ea,
+  "fourcircle",
+  0x2463,
+  "fourcircleinversesansserif",
+  0x278d,
+  "fourdeva",
+  0x096a,
+  "fourgujarati",
+  0x0aea,
+  "fourgurmukhi",
+  0x0a6a,
+  "fourhackarabic",
+  0x0664,
+  "fourhangzhou",
+  0x3024,
+  "fourideographicparen",
+  0x3223,
+  "fourinferior",
+  0x2084,
+  "fourmonospace",
+  0xff14,
+  "fournumeratorbengali",
+  0x09f7,
+  "fouroldstyle",
+  0xf734,
+  "fourparen",
+  0x2477,
+  "fourperiod",
+  0x248b,
+  "fourpersian",
+  0x06f4,
+  "fourroman",
+  0x2173,
+  "foursuperior",
+  0x2074,
+  "fourteencircle",
+  0x246d,
+  "fourteenparen",
+  0x2481,
+  "fourteenperiod",
+  0x2495,
+  "fourthai",
+  0x0e54,
+  "fourthtonechinese",
+  0x02cb,
+  "fparen",
+  0x24a1,
+  "fraction",
+  0x2044,
+  "franc",
+  0x20a3,
+  "g",
+  0x0067,
+  "gabengali",
+  0x0997,
+  "gacute",
+  0x01f5,
+  "gadeva",
+  0x0917,
+  "gafarabic",
+  0x06af,
+  "gaffinalarabic",
+  0xfb93,
+  "gafinitialarabic",
+  0xfb94,
+  "gafmedialarabic",
+  0xfb95,
+  "gagujarati",
+  0x0a97,
+  "gagurmukhi",
+  0x0a17,
+  "gahiragana",
+  0x304c,
+  "gakatakana",
+  0x30ac,
+  "gamma",
+  0x03b3,
+  "gammalatinsmall",
+  0x0263,
+  "gammasuperior",
+  0x02e0,
+  "gangiacoptic",
+  0x03eb,
+  "gbopomofo",
+  0x310d,
+  "gbreve",
+  0x011f,
+  "gcaron",
+  0x01e7,
+  "gcedilla",
+  0x0123,
+  "gcircle",
+  0x24d6,
+  "gcircumflex",
+  0x011d,
+  "gcommaaccent",
+  0x0123,
+  "gdot",
+  0x0121,
+  "gdotaccent",
+  0x0121,
+  "gecyrillic",
+  0x0433,
+  "gehiragana",
+  0x3052,
+  "gekatakana",
+  0x30b2,
+  "geometricallyequal",
+  0x2251,
+  "gereshaccenthebrew",
+  0x059c,
+  "gereshhebrew",
+  0x05f3,
+  "gereshmuqdamhebrew",
+  0x059d,
+  "germandbls",
+  0x00df,
+  "gershayimaccenthebrew",
+  0x059e,
+  "gershayimhebrew",
+  0x05f4,
+  "getamark",
+  0x3013,
+  "ghabengali",
+  0x0998,
+  "ghadarmenian",
+  0x0572,
+  "ghadeva",
+  0x0918,
+  "ghagujarati",
+  0x0a98,
+  "ghagurmukhi",
+  0x0a18,
+  "ghainarabic",
+  0x063a,
+  "ghainfinalarabic",
+  0xfece,
+  "ghaininitialarabic",
+  0xfecf,
+  "ghainmedialarabic",
+  0xfed0,
+  "ghemiddlehookcyrillic",
+  0x0495,
+  "ghestrokecyrillic",
+  0x0493,
+  "gheupturncyrillic",
+  0x0491,
+  "ghhadeva",
+  0x095a,
+  "ghhagurmukhi",
+  0x0a5a,
+  "ghook",
+  0x0260,
+  "ghzsquare",
+  0x3393,
+  "gihiragana",
+  0x304e,
+  "gikatakana",
+  0x30ae,
+  "gimarmenian",
+  0x0563,
+  "gimel",
+  0x05d2,
+  "gimeldagesh",
+  0xfb32,
+  "gimeldageshhebrew",
+  0xfb32,
+  "gimelhebrew",
+  0x05d2,
+  "gjecyrillic",
+  0x0453,
+  "glottalinvertedstroke",
+  0x01be,
+  "glottalstop",
+  0x0294,
+  "glottalstopinverted",
+  0x0296,
+  "glottalstopmod",
+  0x02c0,
+  "glottalstopreversed",
+  0x0295,
+  "glottalstopreversedmod",
+  0x02c1,
+  "glottalstopreversedsuperior",
+  0x02e4,
+  "glottalstopstroke",
+  0x02a1,
+  "glottalstopstrokereversed",
+  0x02a2,
+  "gmacron",
+  0x1e21,
+  "gmonospace",
+  0xff47,
+  "gohiragana",
+  0x3054,
+  "gokatakana",
+  0x30b4,
+  "gparen",
+  0x24a2,
+  "gpasquare",
+  0x33ac,
+  "gradient",
+  0x2207,
+  "grave",
+  0x0060,
+  "gravebelowcmb",
+  0x0316,
+  "gravecmb",
+  0x0300,
+  "gravecomb",
+  0x0300,
+  "gravedeva",
+  0x0953,
+  "gravelowmod",
+  0x02ce,
+  "gravemonospace",
+  0xff40,
+  "gravetonecmb",
+  0x0340,
+  "greater",
+  0x003e,
+  "greaterequal",
+  0x2265,
+  "greaterequalorless",
+  0x22db,
+  "greatermonospace",
+  0xff1e,
+  "greaterorequivalent",
+  0x2273,
+  "greaterorless",
+  0x2277,
+  "greateroverequal",
+  0x2267,
+  "greatersmall",
+  0xfe65,
+  "gscript",
+  0x0261,
+  "gstroke",
+  0x01e5,
+  "guhiragana",
+  0x3050,
+  "guillemotleft",
+  0x00ab,
+  "guillemotright",
+  0x00bb,
+  "guilsinglleft",
+  0x2039,
+  "guilsinglright",
+  0x203a,
+  "gukatakana",
+  0x30b0,
+  "guramusquare",
+  0x3318,
+  "gysquare",
+  0x33c9,
+  "h",
+  0x0068,
+  "haabkhasiancyrillic",
+  0x04a9,
+  "haaltonearabic",
+  0x06c1,
+  "habengali",
+  0x09b9,
+  "hadescendercyrillic",
+  0x04b3,
+  "hadeva",
+  0x0939,
+  "hagujarati",
+  0x0ab9,
+  "hagurmukhi",
+  0x0a39,
+  "haharabic",
+  0x062d,
+  "hahfinalarabic",
+  0xfea2,
+  "hahinitialarabic",
+  0xfea3,
+  "hahiragana",
+  0x306f,
+  "hahmedialarabic",
+  0xfea4,
+  "haitusquare",
+  0x332a,
+  "hakatakana",
+  0x30cf,
+  "hakatakanahalfwidth",
+  0xff8a,
+  "halantgurmukhi",
+  0x0a4d,
+  "hamzaarabic",
+  0x0621,
+  "hamzalowarabic",
+  0x0621,
+  "hangulfiller",
+  0x3164,
+  "hardsigncyrillic",
+  0x044a,
+  "harpoonleftbarbup",
+  0x21bc,
+  "harpoonrightbarbup",
+  0x21c0,
+  "hasquare",
+  0x33ca,
+  "hatafpatah",
+  0x05b2,
+  "hatafpatah16",
+  0x05b2,
+  "hatafpatah23",
+  0x05b2,
+  "hatafpatah2f",
+  0x05b2,
+  "hatafpatahhebrew",
+  0x05b2,
+  "hatafpatahnarrowhebrew",
+  0x05b2,
+  "hatafpatahquarterhebrew",
+  0x05b2,
+  "hatafpatahwidehebrew",
+  0x05b2,
+  "hatafqamats",
+  0x05b3,
+  "hatafqamats1b",
+  0x05b3,
+  "hatafqamats28",
+  0x05b3,
+  "hatafqamats34",
+  0x05b3,
+  "hatafqamatshebrew",
+  0x05b3,
+  "hatafqamatsnarrowhebrew",
+  0x05b3,
+  "hatafqamatsquarterhebrew",
+  0x05b3,
+  "hatafqamatswidehebrew",
+  0x05b3,
+  "hatafsegol",
+  0x05b1,
+  "hatafsegol17",
+  0x05b1,
+  "hatafsegol24",
+  0x05b1,
+  "hatafsegol30",
+  0x05b1,
+  "hatafsegolhebrew",
+  0x05b1,
+  "hatafsegolnarrowhebrew",
+  0x05b1,
+  "hatafsegolquarterhebrew",
+  0x05b1,
+  "hatafsegolwidehebrew",
+  0x05b1,
+  "hbar",
+  0x0127,
+  "hbopomofo",
+  0x310f,
+  "hbrevebelow",
+  0x1e2b,
+  "hcedilla",
+  0x1e29,
+  "hcircle",
+  0x24d7,
+  "hcircumflex",
+  0x0125,
+  "hdieresis",
+  0x1e27,
+  "hdotaccent",
+  0x1e23,
+  "hdotbelow",
+  0x1e25,
+  "he",
+  0x05d4,
+  "heart",
+  0x2665,
+  "heartsuitblack",
+  0x2665,
+  "heartsuitwhite",
+  0x2661,
+  "hedagesh",
+  0xfb34,
+  "hedageshhebrew",
+  0xfb34,
+  "hehaltonearabic",
+  0x06c1,
+  "heharabic",
+  0x0647,
+  "hehebrew",
+  0x05d4,
+  "hehfinalaltonearabic",
+  0xfba7,
+  "hehfinalalttwoarabic",
+  0xfeea,
+  "hehfinalarabic",
+  0xfeea,
+  "hehhamzaabovefinalarabic",
+  0xfba5,
+  "hehhamzaaboveisolatedarabic",
+  0xfba4,
+  "hehinitialaltonearabic",
+  0xfba8,
+  "hehinitialarabic",
+  0xfeeb,
+  "hehiragana",
+  0x3078,
+  "hehmedialaltonearabic",
+  0xfba9,
+  "hehmedialarabic",
+  0xfeec,
+  "heiseierasquare",
+  0x337b,
+  "hekatakana",
+  0x30d8,
+  "hekatakanahalfwidth",
+  0xff8d,
+  "hekutaarusquare",
+  0x3336,
+  "henghook",
+  0x0267,
+  "herutusquare",
+  0x3339,
+  "het",
+  0x05d7,
+  "hethebrew",
+  0x05d7,
+  "hhook",
+  0x0266,
+  "hhooksuperior",
+  0x02b1,
+  "hieuhacirclekorean",
+  0x327b,
+  "hieuhaparenkorean",
+  0x321b,
+  "hieuhcirclekorean",
+  0x326d,
+  "hieuhkorean",
+  0x314e,
+  "hieuhparenkorean",
+  0x320d,
+  "hihiragana",
+  0x3072,
+  "hikatakana",
+  0x30d2,
+  "hikatakanahalfwidth",
+  0xff8b,
+  "hiriq",
+  0x05b4,
+  "hiriq14",
+  0x05b4,
+  "hiriq21",
+  0x05b4,
+  "hiriq2d",
+  0x05b4,
+  "hiriqhebrew",
+  0x05b4,
+  "hiriqnarrowhebrew",
+  0x05b4,
+  "hiriqquarterhebrew",
+  0x05b4,
+  "hiriqwidehebrew",
+  0x05b4,
+  "hlinebelow",
+  0x1e96,
+  "hmonospace",
+  0xff48,
+  "hoarmenian",
+  0x0570,
+  "hohipthai",
+  0x0e2b,
+  "hohiragana",
+  0x307b,
+  "hokatakana",
+  0x30db,
+  "hokatakanahalfwidth",
+  0xff8e,
+  "holam",
+  0x05b9,
+  "holam19",
+  0x05b9,
+  "holam26",
+  0x05b9,
+  "holam32",
+  0x05b9,
+  "holamhebrew",
+  0x05b9,
+  "holamnarrowhebrew",
+  0x05b9,
+  "holamquarterhebrew",
+  0x05b9,
+  "holamwidehebrew",
+  0x05b9,
+  "honokhukthai",
+  0x0e2e,
+  "hookabovecomb",
+  0x0309,
+  "hookcmb",
+  0x0309,
+  "hookpalatalizedbelowcmb",
+  0x0321,
+  "hookretroflexbelowcmb",
+  0x0322,
+  "hoonsquare",
+  0x3342,
+  "horicoptic",
+  0x03e9,
+  "horizontalbar",
+  0x2015,
+  "horncmb",
+  0x031b,
+  "hotsprings",
+  0x2668,
+  "house",
+  0x2302,
+  "hparen",
+  0x24a3,
+  "hsuperior",
+  0x02b0,
+  "hturned",
+  0x0265,
+  "huhiragana",
+  0x3075,
+  "huiitosquare",
+  0x3333,
+  "hukatakana",
+  0x30d5,
+  "hukatakanahalfwidth",
+  0xff8c,
+  "hungarumlaut",
+  0x02dd,
+  "hungarumlautcmb",
+  0x030b,
+  "hv",
+  0x0195,
+  "hyphen",
+  0x002d,
+  "hypheninferior",
+  0xf6e5,
+  "hyphenmonospace",
+  0xff0d,
+  "hyphensmall",
+  0xfe63,
+  "hyphensuperior",
+  0xf6e6,
+  "hyphentwo",
+  0x2010,
+  "i",
+  0x0069,
+  "iacute",
+  0x00ed,
+  "iacyrillic",
+  0x044f,
+  "ibengali",
+  0x0987,
+  "ibopomofo",
+  0x3127,
+  "ibreve",
+  0x012d,
+  "icaron",
+  0x01d0,
+  "icircle",
+  0x24d8,
+  "icircumflex",
+  0x00ee,
+  "icyrillic",
+  0x0456,
+  "idblgrave",
+  0x0209,
+  "ideographearthcircle",
+  0x328f,
+  "ideographfirecircle",
+  0x328b,
+  "ideographicallianceparen",
+  0x323f,
+  "ideographiccallparen",
+  0x323a,
+  "ideographiccentrecircle",
+  0x32a5,
+  "ideographicclose",
+  0x3006,
+  "ideographiccomma",
+  0x3001,
+  "ideographiccommaleft",
+  0xff64,
+  "ideographiccongratulationparen",
+  0x3237,
+  "ideographiccorrectcircle",
+  0x32a3,
+  "ideographicearthparen",
+  0x322f,
+  "ideographicenterpriseparen",
+  0x323d,
+  "ideographicexcellentcircle",
+  0x329d,
+  "ideographicfestivalparen",
+  0x3240,
+  "ideographicfinancialcircle",
+  0x3296,
+  "ideographicfinancialparen",
+  0x3236,
+  "ideographicfireparen",
+  0x322b,
+  "ideographichaveparen",
+  0x3232,
+  "ideographichighcircle",
+  0x32a4,
+  "ideographiciterationmark",
+  0x3005,
+  "ideographiclaborcircle",
+  0x3298,
+  "ideographiclaborparen",
+  0x3238,
+  "ideographicleftcircle",
+  0x32a7,
+  "ideographiclowcircle",
+  0x32a6,
+  "ideographicmedicinecircle",
+  0x32a9,
+  "ideographicmetalparen",
+  0x322e,
+  "ideographicmoonparen",
+  0x322a,
+  "ideographicnameparen",
+  0x3234,
+  "ideographicperiod",
+  0x3002,
+  "ideographicprintcircle",
+  0x329e,
+  "ideographicreachparen",
+  0x3243,
+  "ideographicrepresentparen",
+  0x3239,
+  "ideographicresourceparen",
+  0x323e,
+  "ideographicrightcircle",
+  0x32a8,
+  "ideographicsecretcircle",
+  0x3299,
+  "ideographicselfparen",
+  0x3242,
+  "ideographicsocietyparen",
+  0x3233,
+  "ideographicspace",
+  0x3000,
+  "ideographicspecialparen",
+  0x3235,
+  "ideographicstockparen",
+  0x3231,
+  "ideographicstudyparen",
+  0x323b,
+  "ideographicsunparen",
+  0x3230,
+  "ideographicsuperviseparen",
+  0x323c,
+  "ideographicwaterparen",
+  0x322c,
+  "ideographicwoodparen",
+  0x322d,
+  "ideographiczero",
+  0x3007,
+  "ideographmetalcircle",
+  0x328e,
+  "ideographmooncircle",
+  0x328a,
+  "ideographnamecircle",
+  0x3294,
+  "ideographsuncircle",
+  0x3290,
+  "ideographwatercircle",
+  0x328c,
+  "ideographwoodcircle",
+  0x328d,
+  "ideva",
+  0x0907,
+  "idieresis",
+  0x00ef,
+  "idieresisacute",
+  0x1e2f,
+  "idieresiscyrillic",
+  0x04e5,
+  "idotbelow",
+  0x1ecb,
+  "iebrevecyrillic",
+  0x04d7,
+  "iecyrillic",
+  0x0435,
+  "ieungacirclekorean",
+  0x3275,
+  "ieungaparenkorean",
+  0x3215,
+  "ieungcirclekorean",
+  0x3267,
+  "ieungkorean",
+  0x3147,
+  "ieungparenkorean",
+  0x3207,
+  "igrave",
+  0x00ec,
+  "igujarati",
+  0x0a87,
+  "igurmukhi",
+  0x0a07,
+  "ihiragana",
+  0x3044,
+  "ihookabove",
+  0x1ec9,
+  "iibengali",
+  0x0988,
+  "iicyrillic",
+  0x0438,
+  "iideva",
+  0x0908,
+  "iigujarati",
+  0x0a88,
+  "iigurmukhi",
+  0x0a08,
+  "iimatragurmukhi",
+  0x0a40,
+  "iinvertedbreve",
+  0x020b,
+  "iishortcyrillic",
+  0x0439,
+  "iivowelsignbengali",
+  0x09c0,
+  "iivowelsigndeva",
+  0x0940,
+  "iivowelsigngujarati",
+  0x0ac0,
+  "ij",
+  0x0133,
+  "ikatakana",
+  0x30a4,
+  "ikatakanahalfwidth",
+  0xff72,
+  "ikorean",
+  0x3163,
+  "ilde",
+  0x02dc,
+  "iluyhebrew",
+  0x05ac,
+  "imacron",
+  0x012b,
+  "imacroncyrillic",
+  0x04e3,
+  "imageorapproximatelyequal",
+  0x2253,
+  "imatragurmukhi",
+  0x0a3f,
+  "imonospace",
+  0xff49,
+  "increment",
+  0x2206,
+  "infinity",
+  0x221e,
+  "iniarmenian",
+  0x056b,
+  "integral",
+  0x222b,
+  "integralbottom",
+  0x2321,
+  "integralbt",
+  0x2321,
+  "integralex",
+  0xf8f5,
+  "integraltop",
+  0x2320,
+  "integraltp",
+  0x2320,
+  "intersection",
+  0x2229,
+  "intisquare",
+  0x3305,
+  "invbullet",
+  0x25d8,
+  "invcircle",
+  0x25d9,
+  "invsmileface",
+  0x263b,
+  "iocyrillic",
+  0x0451,
+  "iogonek",
+  0x012f,
+  "iota",
+  0x03b9,
+  "iotadieresis",
+  0x03ca,
+  "iotadieresistonos",
+  0x0390,
+  "iotalatin",
+  0x0269,
+  "iotatonos",
+  0x03af,
+  "iparen",
+  0x24a4,
+  "irigurmukhi",
+  0x0a72,
+  "ismallhiragana",
+  0x3043,
+  "ismallkatakana",
+  0x30a3,
+  "ismallkatakanahalfwidth",
+  0xff68,
+  "issharbengali",
+  0x09fa,
+  "istroke",
+  0x0268,
+  "isuperior",
+  0xf6ed,
+  "iterationhiragana",
+  0x309d,
+  "iterationkatakana",
+  0x30fd,
+  "itilde",
+  0x0129,
+  "itildebelow",
+  0x1e2d,
+  "iubopomofo",
+  0x3129,
+  "iucyrillic",
+  0x044e,
+  "ivowelsignbengali",
+  0x09bf,
+  "ivowelsigndeva",
+  0x093f,
+  "ivowelsigngujarati",
+  0x0abf,
+  "izhitsacyrillic",
+  0x0475,
+  "izhitsadblgravecyrillic",
+  0x0477,
+  "j",
+  0x006a,
+  "jaarmenian",
+  0x0571,
+  "jabengali",
+  0x099c,
+  "jadeva",
+  0x091c,
+  "jagujarati",
+  0x0a9c,
+  "jagurmukhi",
+  0x0a1c,
+  "jbopomofo",
+  0x3110,
+  "jcaron",
+  0x01f0,
+  "jcircle",
+  0x24d9,
+  "jcircumflex",
+  0x0135,
+  "jcrossedtail",
+  0x029d,
+  "jdotlessstroke",
+  0x025f,
+  "jecyrillic",
+  0x0458,
+  "jeemarabic",
+  0x062c,
+  "jeemfinalarabic",
+  0xfe9e,
+  "jeeminitialarabic",
+  0xfe9f,
+  "jeemmedialarabic",
+  0xfea0,
+  "jeharabic",
+  0x0698,
+  "jehfinalarabic",
+  0xfb8b,
+  "jhabengali",
+  0x099d,
+  "jhadeva",
+  0x091d,
+  "jhagujarati",
+  0x0a9d,
+  "jhagurmukhi",
+  0x0a1d,
+  "jheharmenian",
+  0x057b,
+  "jis",
+  0x3004,
+  "jmonospace",
+  0xff4a,
+  "jparen",
+  0x24a5,
+  "jsuperior",
+  0x02b2,
+  "k",
+  0x006b,
+  "kabashkircyrillic",
+  0x04a1,
+  "kabengali",
+  0x0995,
+  "kacute",
+  0x1e31,
+  "kacyrillic",
+  0x043a,
+  "kadescendercyrillic",
+  0x049b,
+  "kadeva",
+  0x0915,
+  "kaf",
+  0x05db,
+  "kafarabic",
+  0x0643,
+  "kafdagesh",
+  0xfb3b,
+  "kafdageshhebrew",
+  0xfb3b,
+  "kaffinalarabic",
+  0xfeda,
+  "kafhebrew",
+  0x05db,
+  "kafinitialarabic",
+  0xfedb,
+  "kafmedialarabic",
+  0xfedc,
+  "kafrafehebrew",
+  0xfb4d,
+  "kagujarati",
+  0x0a95,
+  "kagurmukhi",
+  0x0a15,
+  "kahiragana",
+  0x304b,
+  "kahookcyrillic",
+  0x04c4,
+  "kakatakana",
+  0x30ab,
+  "kakatakanahalfwidth",
+  0xff76,
+  "kappa",
+  0x03ba,
+  "kappasymbolgreek",
+  0x03f0,
+  "kapyeounmieumkorean",
+  0x3171,
+  "kapyeounphieuphkorean",
+  0x3184,
+  "kapyeounpieupkorean",
+  0x3178,
+  "kapyeounssangpieupkorean",
+  0x3179,
+  "karoriisquare",
+  0x330d,
+  "kashidaautoarabic",
+  0x0640,
+  "kashidaautonosidebearingarabic",
+  0x0640,
+  "kasmallkatakana",
+  0x30f5,
+  "kasquare",
+  0x3384,
+  "kasraarabic",
+  0x0650,
+  "kasratanarabic",
+  0x064d,
+  "kastrokecyrillic",
+  0x049f,
+  "katahiraprolongmarkhalfwidth",
+  0xff70,
+  "kaverticalstrokecyrillic",
+  0x049d,
+  "kbopomofo",
+  0x310e,
+  "kcalsquare",
+  0x3389,
+  "kcaron",
+  0x01e9,
+  "kcedilla",
+  0x0137,
+  "kcircle",
+  0x24da,
+  "kcommaaccent",
+  0x0137,
+  "kdotbelow",
+  0x1e33,
+  "keharmenian",
+  0x0584,
+  "kehiragana",
+  0x3051,
+  "kekatakana",
+  0x30b1,
+  "kekatakanahalfwidth",
+  0xff79,
+  "kenarmenian",
+  0x056f,
+  "kesmallkatakana",
+  0x30f6,
+  "kgreenlandic",
+  0x0138,
+  "khabengali",
+  0x0996,
+  "khacyrillic",
+  0x0445,
+  "khadeva",
+  0x0916,
+  "khagujarati",
+  0x0a96,
+  "khagurmukhi",
+  0x0a16,
+  "khaharabic",
+  0x062e,
+  "khahfinalarabic",
+  0xfea6,
+  "khahinitialarabic",
+  0xfea7,
+  "khahmedialarabic",
+  0xfea8,
+  "kheicoptic",
+  0x03e7,
+  "khhadeva",
+  0x0959,
+  "khhagurmukhi",
+  0x0a59,
+  "khieukhacirclekorean",
+  0x3278,
+  "khieukhaparenkorean",
+  0x3218,
+  "khieukhcirclekorean",
+  0x326a,
+  "khieukhkorean",
+  0x314b,
+  "khieukhparenkorean",
+  0x320a,
+  "khokhaithai",
+  0x0e02,
+  "khokhonthai",
+  0x0e05,
+  "khokhuatthai",
+  0x0e03,
+  "khokhwaithai",
+  0x0e04,
+  "khomutthai",
+  0x0e5b,
+  "khook",
+  0x0199,
+  "khorakhangthai",
+  0x0e06,
+  "khzsquare",
+  0x3391,
+  "kihiragana",
+  0x304d,
+  "kikatakana",
+  0x30ad,
+  "kikatakanahalfwidth",
+  0xff77,
+  "kiroguramusquare",
+  0x3315,
+  "kiromeetorusquare",
+  0x3316,
+  "kirosquare",
+  0x3314,
+  "kiyeokacirclekorean",
+  0x326e,
+  "kiyeokaparenkorean",
+  0x320e,
+  "kiyeokcirclekorean",
+  0x3260,
+  "kiyeokkorean",
+  0x3131,
+  "kiyeokparenkorean",
+  0x3200,
+  "kiyeoksioskorean",
+  0x3133,
+  "kjecyrillic",
+  0x045c,
+  "klinebelow",
+  0x1e35,
+  "klsquare",
+  0x3398,
+  "kmcubedsquare",
+  0x33a6,
+  "kmonospace",
+  0xff4b,
+  "kmsquaredsquare",
+  0x33a2,
+  "kohiragana",
+  0x3053,
+  "kohmsquare",
+  0x33c0,
+  "kokaithai",
+  0x0e01,
+  "kokatakana",
+  0x30b3,
+  "kokatakanahalfwidth",
+  0xff7a,
+  "kooposquare",
+  0x331e,
+  "koppacyrillic",
+  0x0481,
+  "koreanstandardsymbol",
+  0x327f,
+  "koroniscmb",
+  0x0343,
+  "kparen",
+  0x24a6,
+  "kpasquare",
+  0x33aa,
+  "ksicyrillic",
+  0x046f,
+  "ktsquare",
+  0x33cf,
+  "kturned",
+  0x029e,
+  "kuhiragana",
+  0x304f,
+  "kukatakana",
+  0x30af,
+  "kukatakanahalfwidth",
+  0xff78,
+  "kvsquare",
+  0x33b8,
+  "kwsquare",
+  0x33be,
+  "l",
+  0x006c,
+  "labengali",
+  0x09b2,
+  "lacute",
+  0x013a,
+  "ladeva",
+  0x0932,
+  "lagujarati",
+  0x0ab2,
+  "lagurmukhi",
+  0x0a32,
+  "lakkhangyaothai",
+  0x0e45,
+  "lamaleffinalarabic",
+  0xfefc,
+  "lamalefhamzaabovefinalarabic",
+  0xfef8,
+  "lamalefhamzaaboveisolatedarabic",
+  0xfef7,
+  "lamalefhamzabelowfinalarabic",
+  0xfefa,
+  "lamalefhamzabelowisolatedarabic",
+  0xfef9,
+  "lamalefisolatedarabic",
+  0xfefb,
+  "lamalefmaddaabovefinalarabic",
+  0xfef6,
+  "lamalefmaddaaboveisolatedarabic",
+  0xfef5,
+  "lamarabic",
+  0x0644,
+  "lambda",
+  0x03bb,
+  "lambdastroke",
+  0x019b,
+  "lamed",
+  0x05dc,
+  "lameddagesh",
+  0xfb3c,
+  "lameddageshhebrew",
+  0xfb3c,
+  "lamedhebrew",
+  0x05dc,
+  "lamfinalarabic",
+  0xfede,
+  "lamhahinitialarabic",
+  0xfcca,
+  "laminitialarabic",
+  0xfedf,
+  "lamjeeminitialarabic",
+  0xfcc9,
+  "lamkhahinitialarabic",
+  0xfccb,
+  "lamlamhehisolatedarabic",
+  0xfdf2,
+  "lammedialarabic",
+  0xfee0,
+  "lammeemhahinitialarabic",
+  0xfd88,
+  "lammeeminitialarabic",
+  0xfccc,
+  "largecircle",
+  0x25ef,
+  "lbar",
+  0x019a,
+  "lbelt",
+  0x026c,
+  "lbopomofo",
+  0x310c,
+  "lcaron",
+  0x013e,
+  "lcedilla",
+  0x013c,
+  "lcircle",
+  0x24db,
+  "lcircumflexbelow",
+  0x1e3d,
+  "lcommaaccent",
+  0x013c,
+  "ldot",
+  0x0140,
+  "ldotaccent",
+  0x0140,
+  "ldotbelow",
+  0x1e37,
+  "ldotbelowmacron",
+  0x1e39,
+  "leftangleabovecmb",
+  0x031a,
+  "lefttackbelowcmb",
+  0x0318,
+  "less",
+  0x003c,
+  "lessequal",
+  0x2264,
+  "lessequalorgreater",
+  0x22da,
+  "lessmonospace",
+  0xff1c,
+  "lessorequivalent",
+  0x2272,
+  "lessorgreater",
+  0x2276,
+  "lessoverequal",
+  0x2266,
+  "lesssmall",
+  0xfe64,
+  "lezh",
+  0x026e,
+  "lfblock",
+  0x258c,
+  "lhookretroflex",
+  0x026d,
+  "lira",
+  0x20a4,
+  "liwnarmenian",
+  0x056c,
+  "lj",
+  0x01c9,
+  "ljecyrillic",
+  0x0459,
+  "ll",
+  0xf6c0,
+  "lladeva",
+  0x0933,
+  "llagujarati",
+  0x0ab3,
+  "llinebelow",
+  0x1e3b,
+  "llladeva",
+  0x0934,
+  "llvocalicbengali",
+  0x09e1,
+  "llvocalicdeva",
+  0x0961,
+  "llvocalicvowelsignbengali",
+  0x09e3,
+  "llvocalicvowelsigndeva",
+  0x0963,
+  "lmiddletilde",
+  0x026b,
+  "lmonospace",
+  0xff4c,
+  "lmsquare",
+  0x33d0,
+  "lochulathai",
+  0x0e2c,
+  "logicaland",
+  0x2227,
+  "logicalnot",
+  0x00ac,
+  "logicalnotreversed",
+  0x2310,
+  "logicalor",
+  0x2228,
+  "lolingthai",
+  0x0e25,
+  "longs",
+  0x017f,
+  "lowlinecenterline",
+  0xfe4e,
+  "lowlinecmb",
+  0x0332,
+  "lowlinedashed",
+  0xfe4d,
+  "lozenge",
+  0x25ca,
+  "lparen",
+  0x24a7,
+  "lslash",
+  0x0142,
+  "lsquare",
+  0x2113,
+  "lsuperior",
+  0xf6ee,
+  "ltshade",
+  0x2591,
+  "luthai",
+  0x0e26,
+  "lvocalicbengali",
+  0x098c,
+  "lvocalicdeva",
+  0x090c,
+  "lvocalicvowelsignbengali",
+  0x09e2,
+  "lvocalicvowelsigndeva",
+  0x0962,
+  "lxsquare",
+  0x33d3,
+  "m",
+  0x006d,
+  "mabengali",
+  0x09ae,
+  "macron",
+  0x00af,
+  "macronbelowcmb",
+  0x0331,
+  "macroncmb",
+  0x0304,
+  "macronlowmod",
+  0x02cd,
+  "macronmonospace",
+  0xffe3,
+  "macute",
+  0x1e3f,
+  "madeva",
+  0x092e,
+  "magujarati",
+  0x0aae,
+  "magurmukhi",
+  0x0a2e,
+  "mahapakhhebrew",
+  0x05a4,
+  "mahapakhlefthebrew",
+  0x05a4,
+  "mahiragana",
+  0x307e,
+  "maichattawalowleftthai",
+  0xf895,
+  "maichattawalowrightthai",
+  0xf894,
+  "maichattawathai",
+  0x0e4b,
+  "maichattawaupperleftthai",
+  0xf893,
+  "maieklowleftthai",
+  0xf88c,
+  "maieklowrightthai",
+  0xf88b,
+  "maiekthai",
+  0x0e48,
+  "maiekupperleftthai",
+  0xf88a,
+  "maihanakatleftthai",
+  0xf884,
+  "maihanakatthai",
+  0x0e31,
+  "maitaikhuleftthai",
+  0xf889,
+  "maitaikhuthai",
+  0x0e47,
+  "maitholowleftthai",
+  0xf88f,
+  "maitholowrightthai",
+  0xf88e,
+  "maithothai",
+  0x0e49,
+  "maithoupperleftthai",
+  0xf88d,
+  "maitrilowleftthai",
+  0xf892,
+  "maitrilowrightthai",
+  0xf891,
+  "maitrithai",
+  0x0e4a,
+  "maitriupperleftthai",
+  0xf890,
+  "maiyamokthai",
+  0x0e46,
+  "makatakana",
+  0x30de,
+  "makatakanahalfwidth",
+  0xff8f,
+  "male",
+  0x2642,
+  "mansyonsquare",
+  0x3347,
+  "maqafhebrew",
+  0x05be,
+  "mars",
+  0x2642,
+  "masoracirclehebrew",
+  0x05af,
+  "masquare",
+  0x3383,
+  "mbopomofo",
+  0x3107,
+  "mbsquare",
+  0x33d4,
+  "mcircle",
+  0x24dc,
+  "mcubedsquare",
+  0x33a5,
+  "mdotaccent",
+  0x1e41,
+  "mdotbelow",
+  0x1e43,
+  "meemarabic",
+  0x0645,
+  "meemfinalarabic",
+  0xfee2,
+  "meeminitialarabic",
+  0xfee3,
+  "meemmedialarabic",
+  0xfee4,
+  "meemmeeminitialarabic",
+  0xfcd1,
+  "meemmeemisolatedarabic",
+  0xfc48,
+  "meetorusquare",
+  0x334d,
+  "mehiragana",
+  0x3081,
+  "meizierasquare",
+  0x337e,
+  "mekatakana",
+  0x30e1,
+  "mekatakanahalfwidth",
+  0xff92,
+  "mem",
+  0x05de,
+  "memdagesh",
+  0xfb3e,
+  "memdageshhebrew",
+  0xfb3e,
+  "memhebrew",
+  0x05de,
+  "menarmenian",
+  0x0574,
+  "merkhahebrew",
+  0x05a5,
+  "merkhakefulahebrew",
+  0x05a6,
+  "merkhakefulalefthebrew",
+  0x05a6,
+  "merkhalefthebrew",
+  0x05a5,
+  "mhook",
+  0x0271,
+  "mhzsquare",
+  0x3392,
+  "middledotkatakanahalfwidth",
+  0xff65,
+  "middot",
+  0x00b7,
+  "mieumacirclekorean",
+  0x3272,
+  "mieumaparenkorean",
+  0x3212,
+  "mieumcirclekorean",
+  0x3264,
+  "mieumkorean",
+  0x3141,
+  "mieumpansioskorean",
+  0x3170,
+  "mieumparenkorean",
+  0x3204,
+  "mieumpieupkorean",
+  0x316e,
+  "mieumsioskorean",
+  0x316f,
+  "mihiragana",
+  0x307f,
+  "mikatakana",
+  0x30df,
+  "mikatakanahalfwidth",
+  0xff90,
+  "minus",
+  0x2212,
+  "minusbelowcmb",
+  0x0320,
+  "minuscircle",
+  0x2296,
+  "minusmod",
+  0x02d7,
+  "minusplus",
+  0x2213,
+  "minute",
+  0x2032,
+  "miribaarusquare",
+  0x334a,
+  "mirisquare",
+  0x3349,
+  "mlonglegturned",
+  0x0270,
+  "mlsquare",
+  0x3396,
+  "mmcubedsquare",
+  0x33a3,
+  "mmonospace",
+  0xff4d,
+  "mmsquaredsquare",
+  0x339f,
+  "mohiragana",
+  0x3082,
+  "mohmsquare",
+  0x33c1,
+  "mokatakana",
+  0x30e2,
+  "mokatakanahalfwidth",
+  0xff93,
+  "molsquare",
+  0x33d6,
+  "momathai",
+  0x0e21,
+  "moverssquare",
+  0x33a7,
+  "moverssquaredsquare",
+  0x33a8,
+  "mparen",
+  0x24a8,
+  "mpasquare",
+  0x33ab,
+  "mssquare",
+  0x33b3,
+  "msuperior",
+  0xf6ef,
+  "mturned",
+  0x026f,
+  "mu",
+  0x00b5,
+  "mu1",
+  0x00b5,
+  "muasquare",
+  0x3382,
+  "muchgreater",
+  0x226b,
+  "muchless",
+  0x226a,
+  "mufsquare",
+  0x338c,
+  "mugreek",
+  0x03bc,
+  "mugsquare",
+  0x338d,
+  "muhiragana",
+  0x3080,
+  "mukatakana",
+  0x30e0,
+  "mukatakanahalfwidth",
+  0xff91,
+  "mulsquare",
+  0x3395,
+  "multiply",
+  0x00d7,
+  "mumsquare",
+  0x339b,
+  "munahhebrew",
+  0x05a3,
+  "munahlefthebrew",
+  0x05a3,
+  "musicalnote",
+  0x266a,
+  "musicalnotedbl",
+  0x266b,
+  "musicflatsign",
+  0x266d,
+  "musicsharpsign",
+  0x266f,
+  "mussquare",
+  0x33b2,
+  "muvsquare",
+  0x33b6,
+  "muwsquare",
+  0x33bc,
+  "mvmegasquare",
+  0x33b9,
+  "mvsquare",
+  0x33b7,
+  "mwmegasquare",
+  0x33bf,
+  "mwsquare",
+  0x33bd,
+  "n",
+  0x006e,
+  "nabengali",
+  0x09a8,
+  "nabla",
+  0x2207,
+  "nacute",
+  0x0144,
+  "nadeva",
+  0x0928,
+  "nagujarati",
+  0x0aa8,
+  "nagurmukhi",
+  0x0a28,
+  "nahiragana",
+  0x306a,
+  "nakatakana",
+  0x30ca,
+  "nakatakanahalfwidth",
+  0xff85,
+  "napostrophe",
+  0x0149,
+  "nasquare",
+  0x3381,
+  "nbopomofo",
+  0x310b,
+  "nbspace",
+  0x00a0,
+  "ncaron",
+  0x0148,
+  "ncedilla",
+  0x0146,
+  "ncircle",
+  0x24dd,
+  "ncircumflexbelow",
+  0x1e4b,
+  "ncommaaccent",
+  0x0146,
+  "ndotaccent",
+  0x1e45,
+  "ndotbelow",
+  0x1e47,
+  "nehiragana",
+  0x306d,
+  "nekatakana",
+  0x30cd,
+  "nekatakanahalfwidth",
+  0xff88,
+  "newsheqelsign",
+  0x20aa,
+  "nfsquare",
+  0x338b,
+  "ngabengali",
+  0x0999,
+  "ngadeva",
+  0x0919,
+  "ngagujarati",
+  0x0a99,
+  "ngagurmukhi",
+  0x0a19,
+  "ngonguthai",
+  0x0e07,
+  "nhiragana",
+  0x3093,
+  "nhookleft",
+  0x0272,
+  "nhookretroflex",
+  0x0273,
+  "nieunacirclekorean",
+  0x326f,
+  "nieunaparenkorean",
+  0x320f,
+  "nieuncieuckorean",
+  0x3135,
+  "nieuncirclekorean",
+  0x3261,
+  "nieunhieuhkorean",
+  0x3136,
+  "nieunkorean",
+  0x3134,
+  "nieunpansioskorean",
+  0x3168,
+  "nieunparenkorean",
+  0x3201,
+  "nieunsioskorean",
+  0x3167,
+  "nieuntikeutkorean",
+  0x3166,
+  "nihiragana",
+  0x306b,
+  "nikatakana",
+  0x30cb,
+  "nikatakanahalfwidth",
+  0xff86,
+  "nikhahitleftthai",
+  0xf899,
+  "nikhahitthai",
+  0x0e4d,
+  "nine",
+  0x0039,
+  "ninearabic",
+  0x0669,
+  "ninebengali",
+  0x09ef,
+  "ninecircle",
+  0x2468,
+  "ninecircleinversesansserif",
+  0x2792,
+  "ninedeva",
+  0x096f,
+  "ninegujarati",
+  0x0aef,
+  "ninegurmukhi",
+  0x0a6f,
+  "ninehackarabic",
+  0x0669,
+  "ninehangzhou",
+  0x3029,
+  "nineideographicparen",
+  0x3228,
+  "nineinferior",
+  0x2089,
+  "ninemonospace",
+  0xff19,
+  "nineoldstyle",
+  0xf739,
+  "nineparen",
+  0x247c,
+  "nineperiod",
+  0x2490,
+  "ninepersian",
+  0x06f9,
+  "nineroman",
+  0x2178,
+  "ninesuperior",
+  0x2079,
+  "nineteencircle",
+  0x2472,
+  "nineteenparen",
+  0x2486,
+  "nineteenperiod",
+  0x249a,
+  "ninethai",
+  0x0e59,
+  "nj",
+  0x01cc,
+  "njecyrillic",
+  0x045a,
+  "nkatakana",
+  0x30f3,
+  "nkatakanahalfwidth",
+  0xff9d,
+  "nlegrightlong",
+  0x019e,
+  "nlinebelow",
+  0x1e49,
+  "nmonospace",
+  0xff4e,
+  "nmsquare",
+  0x339a,
+  "nnabengali",
+  0x09a3,
+  "nnadeva",
+  0x0923,
+  "nnagujarati",
+  0x0aa3,
+  "nnagurmukhi",
+  0x0a23,
+  "nnnadeva",
+  0x0929,
+  "nohiragana",
+  0x306e,
+  "nokatakana",
+  0x30ce,
+  "nokatakanahalfwidth",
+  0xff89,
+  "nonbreakingspace",
+  0x00a0,
+  "nonenthai",
+  0x0e13,
+  "nonuthai",
+  0x0e19,
+  "noonarabic",
+  0x0646,
+  "noonfinalarabic",
+  0xfee6,
+  "noonghunnaarabic",
+  0x06ba,
+  "noonghunnafinalarabic",
+  0xfb9f,
+  "nooninitialarabic",
+  0xfee7,
+  "noonjeeminitialarabic",
+  0xfcd2,
+  "noonjeemisolatedarabic",
+  0xfc4b,
+  "noonmedialarabic",
+  0xfee8,
+  "noonmeeminitialarabic",
+  0xfcd5,
+  "noonmeemisolatedarabic",
+  0xfc4e,
+  "noonnoonfinalarabic",
+  0xfc8d,
+  "notcontains",
+  0x220c,
+  "notelement",
+  0x2209,
+  "notelementof",
+  0x2209,
+  "notequal",
+  0x2260,
+  "notgreater",
+  0x226f,
+  "notgreaternorequal",
+  0x2271,
+  "notgreaternorless",
+  0x2279,
+  "notidentical",
+  0x2262,
+  "notless",
+  0x226e,
+  "notlessnorequal",
+  0x2270,
+  "notparallel",
+  0x2226,
+  "notprecedes",
+  0x2280,
+  "notsubset",
+  0x2284,
+  "notsucceeds",
+  0x2281,
+  "notsuperset",
+  0x2285,
+  "nowarmenian",
+  0x0576,
+  "nparen",
+  0x24a9,
+  "nssquare",
+  0x33b1,
+  "nsuperior",
+  0x207f,
+  "ntilde",
+  0x00f1,
+  "nu",
+  0x03bd,
+  "nuhiragana",
+  0x306c,
+  "nukatakana",
+  0x30cc,
+  "nukatakanahalfwidth",
+  0xff87,
+  "nuktabengali",
+  0x09bc,
+  "nuktadeva",
+  0x093c,
+  "nuktagujarati",
+  0x0abc,
+  "nuktagurmukhi",
+  0x0a3c,
+  "numbersign",
+  0x0023,
+  "numbersignmonospace",
+  0xff03,
+  "numbersignsmall",
+  0xfe5f,
+  "numeralsigngreek",
+  0x0374,
+  "numeralsignlowergreek",
+  0x0375,
+  "numero",
+  0x2116,
+  "nun",
+  0x05e0,
+  "nundagesh",
+  0xfb40,
+  "nundageshhebrew",
+  0xfb40,
+  "nunhebrew",
+  0x05e0,
+  "nvsquare",
+  0x33b5,
+  "nwsquare",
+  0x33bb,
+  "nyabengali",
+  0x099e,
+  "nyadeva",
+  0x091e,
+  "nyagujarati",
+  0x0a9e,
+  "nyagurmukhi",
+  0x0a1e,
+  "o",
+  0x006f,
+  "oacute",
+  0x00f3,
+  "oangthai",
+  0x0e2d,
+  "obarred",
+  0x0275,
+  "obarredcyrillic",
+  0x04e9,
+  "obarreddieresiscyrillic",
+  0x04eb,
+  "obengali",
+  0x0993,
+  "obopomofo",
+  0x311b,
+  "obreve",
+  0x014f,
+  "ocandradeva",
+  0x0911,
+  "ocandragujarati",
+  0x0a91,
+  "ocandravowelsigndeva",
+  0x0949,
+  "ocandravowelsigngujarati",
+  0x0ac9,
+  "ocaron",
+  0x01d2,
+  "ocircle",
+  0x24de,
+  "ocircumflex",
+  0x00f4,
+  "ocircumflexacute",
+  0x1ed1,
+  "ocircumflexdotbelow",
+  0x1ed9,
+  "ocircumflexgrave",
+  0x1ed3,
+  "ocircumflexhookabove",
+  0x1ed5,
+  "ocircumflextilde",
+  0x1ed7,
+  "ocyrillic",
+  0x043e,
+  "odblacute",
+  0x0151,
+  "odblgrave",
+  0x020d,
+  "odeva",
+  0x0913,
+  "odieresis",
+  0x00f6,
+  "odieresiscyrillic",
+  0x04e7,
+  "odotbelow",
+  0x1ecd,
+  "oe",
+  0x0153,
+  "oekorean",
+  0x315a,
+  "ogonek",
+  0x02db,
+  "ogonekcmb",
+  0x0328,
+  "ograve",
+  0x00f2,
+  "ogujarati",
+  0x0a93,
+  "oharmenian",
+  0x0585,
+  "ohiragana",
+  0x304a,
+  "ohookabove",
+  0x1ecf,
+  "ohorn",
+  0x01a1,
+  "ohornacute",
+  0x1edb,
+  "ohorndotbelow",
+  0x1ee3,
+  "ohorngrave",
+  0x1edd,
+  "ohornhookabove",
+  0x1edf,
+  "ohorntilde",
+  0x1ee1,
+  "ohungarumlaut",
+  0x0151,
+  "oi",
+  0x01a3,
+  "oinvertedbreve",
+  0x020f,
+  "okatakana",
+  0x30aa,
+  "okatakanahalfwidth",
+  0xff75,
+  "okorean",
+  0x3157,
+  "olehebrew",
+  0x05ab,
+  "omacron",
+  0x014d,
+  "omacronacute",
+  0x1e53,
+  "omacrongrave",
+  0x1e51,
+  "omdeva",
+  0x0950,
+  "omega",
+  0x03c9,
+  "omega1",
+  0x03d6,
+  "omegacyrillic",
+  0x0461,
+  "omegalatinclosed",
+  0x0277,
+  "omegaroundcyrillic",
+  0x047b,
+  "omegatitlocyrillic",
+  0x047d,
+  "omegatonos",
+  0x03ce,
+  "omgujarati",
+  0x0ad0,
+  "omicron",
+  0x03bf,
+  "omicrontonos",
+  0x03cc,
+  "omonospace",
+  0xff4f,
+  "one",
+  0x0031,
+  "onearabic",
+  0x0661,
+  "onebengali",
+  0x09e7,
+  "onecircle",
+  0x2460,
+  "onecircleinversesansserif",
+  0x278a,
+  "onedeva",
+  0x0967,
+  "onedotenleader",
+  0x2024,
+  "oneeighth",
+  0x215b,
+  "onefitted",
+  0xf6dc,
+  "onegujarati",
+  0x0ae7,
+  "onegurmukhi",
+  0x0a67,
+  "onehackarabic",
+  0x0661,
+  "onehalf",
+  0x00bd,
+  "onehangzhou",
+  0x3021,
+  "oneideographicparen",
+  0x3220,
+  "oneinferior",
+  0x2081,
+  "onemonospace",
+  0xff11,
+  "onenumeratorbengali",
+  0x09f4,
+  "oneoldstyle",
+  0xf731,
+  "oneparen",
+  0x2474,
+  "oneperiod",
+  0x2488,
+  "onepersian",
+  0x06f1,
+  "onequarter",
+  0x00bc,
+  "oneroman",
+  0x2170,
+  "onesuperior",
+  0x00b9,
+  "onethai",
+  0x0e51,
+  "onethird",
+  0x2153,
+  "oogonek",
+  0x01eb,
+  "oogonekmacron",
+  0x01ed,
+  "oogurmukhi",
+  0x0a13,
+  "oomatragurmukhi",
+  0x0a4b,
+  "oopen",
+  0x0254,
+  "oparen",
+  0x24aa,
+  "openbullet",
+  0x25e6,
+  "option",
+  0x2325,
+  "ordfeminine",
+  0x00aa,
+  "ordmasculine",
+  0x00ba,
+  "orthogonal",
+  0x221f,
+  "oshortdeva",
+  0x0912,
+  "oshortvowelsigndeva",
+  0x094a,
+  "oslash",
+  0x00f8,
+  "oslashacute",
+  0x01ff,
+  "osmallhiragana",
+  0x3049,
+  "osmallkatakana",
+  0x30a9,
+  "osmallkatakanahalfwidth",
+  0xff6b,
+  "ostrokeacute",
+  0x01ff,
+  "osuperior",
+  0xf6f0,
+  "otcyrillic",
+  0x047f,
+  "otilde",
+  0x00f5,
+  "otildeacute",
+  0x1e4d,
+  "otildedieresis",
+  0x1e4f,
+  "oubopomofo",
+  0x3121,
+  "overline",
+  0x203e,
+  "overlinecenterline",
+  0xfe4a,
+  "overlinecmb",
+  0x0305,
+  "overlinedashed",
+  0xfe49,
+  "overlinedblwavy",
+  0xfe4c,
+  "overlinewavy",
+  0xfe4b,
+  "overscore",
+  0x00af,
+  "ovowelsignbengali",
+  0x09cb,
+  "ovowelsigndeva",
+  0x094b,
+  "ovowelsigngujarati",
+  0x0acb,
+  "p",
+  0x0070,
+  "paampssquare",
+  0x3380,
+  "paasentosquare",
+  0x332b,
+  "pabengali",
+  0x09aa,
+  "pacute",
+  0x1e55,
+  "padeva",
+  0x092a,
+  "pagedown",
+  0x21df,
+  "pageup",
+  0x21de,
+  "pagujarati",
+  0x0aaa,
+  "pagurmukhi",
+  0x0a2a,
+  "pahiragana",
+  0x3071,
+  "paiyannoithai",
+  0x0e2f,
+  "pakatakana",
+  0x30d1,
+  "palatalizationcyrilliccmb",
+  0x0484,
+  "palochkacyrillic",
+  0x04c0,
+  "pansioskorean",
+  0x317f,
+  "paragraph",
+  0x00b6,
+  "parallel",
+  0x2225,
+  "parenleft",
+  0x0028,
+  "parenleftaltonearabic",
+  0xfd3e,
+  "parenleftbt",
+  0xf8ed,
+  "parenleftex",
+  0xf8ec,
+  "parenleftinferior",
+  0x208d,
+  "parenleftmonospace",
+  0xff08,
+  "parenleftsmall",
+  0xfe59,
+  "parenleftsuperior",
+  0x207d,
+  "parenlefttp",
+  0xf8eb,
+  "parenleftvertical",
+  0xfe35,
+  "parenright",
+  0x0029,
+  "parenrightaltonearabic",
+  0xfd3f,
+  "parenrightbt",
+  0xf8f8,
+  "parenrightex",
+  0xf8f7,
+  "parenrightinferior",
+  0x208e,
+  "parenrightmonospace",
+  0xff09,
+  "parenrightsmall",
+  0xfe5a,
+  "parenrightsuperior",
+  0x207e,
+  "parenrighttp",
+  0xf8f6,
+  "parenrightvertical",
+  0xfe36,
+  "partialdiff",
+  0x2202,
+  "paseqhebrew",
+  0x05c0,
+  "pashtahebrew",
+  0x0599,
+  "pasquare",
+  0x33a9,
+  "patah",
+  0x05b7,
+  "patah11",
+  0x05b7,
+  "patah1d",
+  0x05b7,
+  "patah2a",
+  0x05b7,
+  "patahhebrew",
+  0x05b7,
+  "patahnarrowhebrew",
+  0x05b7,
+  "patahquarterhebrew",
+  0x05b7,
+  "patahwidehebrew",
+  0x05b7,
+  "pazerhebrew",
+  0x05a1,
+  "pbopomofo",
+  0x3106,
+  "pcircle",
+  0x24df,
+  "pdotaccent",
+  0x1e57,
+  "pe",
+  0x05e4,
+  "pecyrillic",
+  0x043f,
+  "pedagesh",
+  0xfb44,
+  "pedageshhebrew",
+  0xfb44,
+  "peezisquare",
+  0x333b,
+  "pefinaldageshhebrew",
+  0xfb43,
+  "peharabic",
+  0x067e,
+  "peharmenian",
+  0x057a,
+  "pehebrew",
+  0x05e4,
+  "pehfinalarabic",
+  0xfb57,
+  "pehinitialarabic",
+  0xfb58,
+  "pehiragana",
+  0x307a,
+  "pehmedialarabic",
+  0xfb59,
+  "pekatakana",
+  0x30da,
+  "pemiddlehookcyrillic",
+  0x04a7,
+  "perafehebrew",
+  0xfb4e,
+  "percent",
+  0x0025,
+  "percentarabic",
+  0x066a,
+  "percentmonospace",
+  0xff05,
+  "percentsmall",
+  0xfe6a,
+  "period",
+  0x002e,
+  "periodarmenian",
+  0x0589,
+  "periodcentered",
+  0x00b7,
+  "periodhalfwidth",
+  0xff61,
+  "periodinferior",
+  0xf6e7,
+  "periodmonospace",
+  0xff0e,
+  "periodsmall",
+  0xfe52,
+  "periodsuperior",
+  0xf6e8,
+  "perispomenigreekcmb",
+  0x0342,
+  "perpendicular",
+  0x22a5,
+  "perthousand",
+  0x2030,
+  "peseta",
+  0x20a7,
+  "pfsquare",
+  0x338a,
+  "phabengali",
+  0x09ab,
+  "phadeva",
+  0x092b,
+  "phagujarati",
+  0x0aab,
+  "phagurmukhi",
+  0x0a2b,
+  "phi",
+  0x03c6,
+  "phi1",
+  0x03d5,
+  "phieuphacirclekorean",
+  0x327a,
+  "phieuphaparenkorean",
+  0x321a,
+  "phieuphcirclekorean",
+  0x326c,
+  "phieuphkorean",
+  0x314d,
+  "phieuphparenkorean",
+  0x320c,
+  "philatin",
+  0x0278,
+  "phinthuthai",
+  0x0e3a,
+  "phisymbolgreek",
+  0x03d5,
+  "phook",
+  0x01a5,
+  "phophanthai",
+  0x0e1e,
+  "phophungthai",
+  0x0e1c,
+  "phosamphaothai",
+  0x0e20,
+  "pi",
+  0x03c0,
+  "pieupacirclekorean",
+  0x3273,
+  "pieupaparenkorean",
+  0x3213,
+  "pieupcieuckorean",
+  0x3176,
+  "pieupcirclekorean",
+  0x3265,
+  "pieupkiyeokkorean",
+  0x3172,
+  "pieupkorean",
+  0x3142,
+  "pieupparenkorean",
+  0x3205,
+  "pieupsioskiyeokkorean",
+  0x3174,
+  "pieupsioskorean",
+  0x3144,
+  "pieupsiostikeutkorean",
+  0x3175,
+  "pieupthieuthkorean",
+  0x3177,
+  "pieuptikeutkorean",
+  0x3173,
+  "pihiragana",
+  0x3074,
+  "pikatakana",
+  0x30d4,
+  "pisymbolgreek",
+  0x03d6,
+  "piwrarmenian",
+  0x0583,
+  "plus",
+  0x002b,
+  "plusbelowcmb",
+  0x031f,
+  "pluscircle",
+  0x2295,
+  "plusminus",
+  0x00b1,
+  "plusmod",
+  0x02d6,
+  "plusmonospace",
+  0xff0b,
+  "plussmall",
+  0xfe62,
+  "plussuperior",
+  0x207a,
+  "pmonospace",
+  0xff50,
+  "pmsquare",
+  0x33d8,
+  "pohiragana",
+  0x307d,
+  "pointingindexdownwhite",
+  0x261f,
+  "pointingindexleftwhite",
+  0x261c,
+  "pointingindexrightwhite",
+  0x261e,
+  "pointingindexupwhite",
+  0x261d,
+  "pokatakana",
+  0x30dd,
+  "poplathai",
+  0x0e1b,
+  "postalmark",
+  0x3012,
+  "postalmarkface",
+  0x3020,
+  "pparen",
+  0x24ab,
+  "precedes",
+  0x227a,
+  "prescription",
+  0x211e,
+  "primemod",
+  0x02b9,
+  "primereversed",
+  0x2035,
+  "product",
+  0x220f,
+  "projective",
+  0x2305,
+  "prolongedkana",
+  0x30fc,
+  "propellor",
+  0x2318,
+  "propersubset",
+  0x2282,
+  "propersuperset",
+  0x2283,
+  "proportion",
+  0x2237,
+  "proportional",
+  0x221d,
+  "psi",
+  0x03c8,
+  "psicyrillic",
+  0x0471,
+  "psilipneumatacyrilliccmb",
+  0x0486,
+  "pssquare",
+  0x33b0,
+  "puhiragana",
+  0x3077,
+  "pukatakana",
+  0x30d7,
+  "pvsquare",
+  0x33b4,
+  "pwsquare",
+  0x33ba,
+  "q",
+  0x0071,
+  "qadeva",
+  0x0958,
+  "qadmahebrew",
+  0x05a8,
+  "qafarabic",
+  0x0642,
+  "qaffinalarabic",
+  0xfed6,
+  "qafinitialarabic",
+  0xfed7,
+  "qafmedialarabic",
+  0xfed8,
+  "qamats",
+  0x05b8,
+  "qamats10",
+  0x05b8,
+  "qamats1a",
+  0x05b8,
+  "qamats1c",
+  0x05b8,
+  "qamats27",
+  0x05b8,
+  "qamats29",
+  0x05b8,
+  "qamats33",
+  0x05b8,
+  "qamatsde",
+  0x05b8,
+  "qamatshebrew",
+  0x05b8,
+  "qamatsnarrowhebrew",
+  0x05b8,
+  "qamatsqatanhebrew",
+  0x05b8,
+  "qamatsqatannarrowhebrew",
+  0x05b8,
+  "qamatsqatanquarterhebrew",
+  0x05b8,
+  "qamatsqatanwidehebrew",
+  0x05b8,
+  "qamatsquarterhebrew",
+  0x05b8,
+  "qamatswidehebrew",
+  0x05b8,
+  "qarneyparahebrew",
+  0x059f,
+  "qbopomofo",
+  0x3111,
+  "qcircle",
+  0x24e0,
+  "qhook",
+  0x02a0,
+  "qmonospace",
+  0xff51,
+  "qof",
+  0x05e7,
+  "qofdagesh",
+  0xfb47,
+  "qofdageshhebrew",
+  0xfb47,
+  "qofhebrew",
+  0x05e7,
+  "qparen",
+  0x24ac,
+  "quarternote",
+  0x2669,
+  "qubuts",
+  0x05bb,
+  "qubuts18",
+  0x05bb,
+  "qubuts25",
+  0x05bb,
+  "qubuts31",
+  0x05bb,
+  "qubutshebrew",
+  0x05bb,
+  "qubutsnarrowhebrew",
+  0x05bb,
+  "qubutsquarterhebrew",
+  0x05bb,
+  "qubutswidehebrew",
+  0x05bb,
+  "question",
+  0x003f,
+  "questionarabic",
+  0x061f,
+  "questionarmenian",
+  0x055e,
+  "questiondown",
+  0x00bf,
+  "questiondownsmall",
+  0xf7bf,
+  "questiongreek",
+  0x037e,
+  "questionmonospace",
+  0xff1f,
+  "questionsmall",
+  0xf73f,
+  "quotedbl",
+  0x0022,
+  "quotedblbase",
+  0x201e,
+  "quotedblleft",
+  0x201c,
+  "quotedblmonospace",
+  0xff02,
+  "quotedblprime",
+  0x301e,
+  "quotedblprimereversed",
+  0x301d,
+  "quotedblright",
+  0x201d,
+  "quoteleft",
+  0x2018,
+  "quoteleftreversed",
+  0x201b,
+  "quotereversed",
+  0x201b,
+  "quoteright",
+  0x2019,
+  "quoterightn",
+  0x0149,
+  "quotesinglbase",
+  0x201a,
+  "quotesingle",
+  0x0027,
+  "quotesinglemonospace",
+  0xff07,
+  "r",
+  0x0072,
+  "raarmenian",
+  0x057c,
+  "rabengali",
+  0x09b0,
+  "racute",
+  0x0155,
+  "radeva",
+  0x0930,
+  "radical",
+  0x221a,
+  "radicalex",
+  0xf8e5,
+  "radoverssquare",
+  0x33ae,
+  "radoverssquaredsquare",
+  0x33af,
+  "radsquare",
+  0x33ad,
+  "rafe",
+  0x05bf,
+  "rafehebrew",
+  0x05bf,
+  "ragujarati",
+  0x0ab0,
+  "ragurmukhi",
+  0x0a30,
+  "rahiragana",
+  0x3089,
+  "rakatakana",
+  0x30e9,
+  "rakatakanahalfwidth",
+  0xff97,
+  "ralowerdiagonalbengali",
+  0x09f1,
+  "ramiddlediagonalbengali",
+  0x09f0,
+  "ramshorn",
+  0x0264,
+  "ratio",
+  0x2236,
+  "rbopomofo",
+  0x3116,
+  "rcaron",
+  0x0159,
+  "rcedilla",
+  0x0157,
+  "rcircle",
+  0x24e1,
+  "rcommaaccent",
+  0x0157,
+  "rdblgrave",
+  0x0211,
+  "rdotaccent",
+  0x1e59,
+  "rdotbelow",
+  0x1e5b,
+  "rdotbelowmacron",
+  0x1e5d,
+  "referencemark",
+  0x203b,
+  "reflexsubset",
+  0x2286,
+  "reflexsuperset",
+  0x2287,
+  "registered",
+  0x00ae,
+  "registersans",
+  0xf8e8,
+  "registerserif",
+  0xf6da,
+  "reharabic",
+  0x0631,
+  "reharmenian",
+  0x0580,
+  "rehfinalarabic",
+  0xfeae,
+  "rehiragana",
+  0x308c,
+  "rekatakana",
+  0x30ec,
+  "rekatakanahalfwidth",
+  0xff9a,
+  "resh",
+  0x05e8,
+  "reshdageshhebrew",
+  0xfb48,
+  "reshhebrew",
+  0x05e8,
+  "reversedtilde",
+  0x223d,
+  "reviahebrew",
+  0x0597,
+  "reviamugrashhebrew",
+  0x0597,
+  "revlogicalnot",
+  0x2310,
+  "rfishhook",
+  0x027e,
+  "rfishhookreversed",
+  0x027f,
+  "rhabengali",
+  0x09dd,
+  "rhadeva",
+  0x095d,
+  "rho",
+  0x03c1,
+  "rhook",
+  0x027d,
+  "rhookturned",
+  0x027b,
+  "rhookturnedsuperior",
+  0x02b5,
+  "rhosymbolgreek",
+  0x03f1,
+  "rhotichookmod",
+  0x02de,
+  "rieulacirclekorean",
+  0x3271,
+  "rieulaparenkorean",
+  0x3211,
+  "rieulcirclekorean",
+  0x3263,
+  "rieulhieuhkorean",
+  0x3140,
+  "rieulkiyeokkorean",
+  0x313a,
+  "rieulkiyeoksioskorean",
+  0x3169,
+  "rieulkorean",
+  0x3139,
+  "rieulmieumkorean",
+  0x313b,
+  "rieulpansioskorean",
+  0x316c,
+  "rieulparenkorean",
+  0x3203,
+  "rieulphieuphkorean",
+  0x313f,
+  "rieulpieupkorean",
+  0x313c,
+  "rieulpieupsioskorean",
+  0x316b,
+  "rieulsioskorean",
+  0x313d,
+  "rieulthieuthkorean",
+  0x313e,
+  "rieultikeutkorean",
+  0x316a,
+  "rieulyeorinhieuhkorean",
+  0x316d,
+  "rightangle",
+  0x221f,
+  "righttackbelowcmb",
+  0x0319,
+  "righttriangle",
+  0x22bf,
+  "rihiragana",
+  0x308a,
+  "rikatakana",
+  0x30ea,
+  "rikatakanahalfwidth",
+  0xff98,
+  "ring",
+  0x02da,
+  "ringbelowcmb",
+  0x0325,
+  "ringcmb",
+  0x030a,
+  "ringhalfleft",
+  0x02bf,
+  "ringhalfleftarmenian",
+  0x0559,
+  "ringhalfleftbelowcmb",
+  0x031c,
+  "ringhalfleftcentered",
+  0x02d3,
+  "ringhalfright",
+  0x02be,
+  "ringhalfrightbelowcmb",
+  0x0339,
+  "ringhalfrightcentered",
+  0x02d2,
+  "rinvertedbreve",
+  0x0213,
+  "rittorusquare",
+  0x3351,
+  "rlinebelow",
+  0x1e5f,
+  "rlongleg",
+  0x027c,
+  "rlonglegturned",
+  0x027a,
+  "rmonospace",
+  0xff52,
+  "rohiragana",
+  0x308d,
+  "rokatakana",
+  0x30ed,
+  "rokatakanahalfwidth",
+  0xff9b,
+  "roruathai",
+  0x0e23,
+  "rparen",
+  0x24ad,
+  "rrabengali",
+  0x09dc,
+  "rradeva",
+  0x0931,
+  "rragurmukhi",
+  0x0a5c,
+  "rreharabic",
+  0x0691,
+  "rrehfinalarabic",
+  0xfb8d,
+  "rrvocalicbengali",
+  0x09e0,
+  "rrvocalicdeva",
+  0x0960,
+  "rrvocalicgujarati",
+  0x0ae0,
+  "rrvocalicvowelsignbengali",
+  0x09c4,
+  "rrvocalicvowelsigndeva",
+  0x0944,
+  "rrvocalicvowelsigngujarati",
+  0x0ac4,
+  "rsuperior",
+  0xf6f1,
+  "rtblock",
+  0x2590,
+  "rturned",
+  0x0279,
+  "rturnedsuperior",
+  0x02b4,
+  "ruhiragana",
+  0x308b,
+  "rukatakana",
+  0x30eb,
+  "rukatakanahalfwidth",
+  0xff99,
+  "rupeemarkbengali",
+  0x09f2,
+  "rupeesignbengali",
+  0x09f3,
+  "rupiah",
+  0xf6dd,
+  "ruthai",
+  0x0e24,
+  "rvocalicbengali",
+  0x098b,
+  "rvocalicdeva",
+  0x090b,
+  "rvocalicgujarati",
+  0x0a8b,
+  "rvocalicvowelsignbengali",
+  0x09c3,
+  "rvocalicvowelsigndeva",
+  0x0943,
+  "rvocalicvowelsigngujarati",
+  0x0ac3,
+  "s",
+  0x0073,
+  "sabengali",
+  0x09b8,
+  "sacute",
+  0x015b,
+  "sacutedotaccent",
+  0x1e65,
+  "sadarabic",
+  0x0635,
+  "sadeva",
+  0x0938,
+  "sadfinalarabic",
+  0xfeba,
+  "sadinitialarabic",
+  0xfebb,
+  "sadmedialarabic",
+  0xfebc,
+  "sagujarati",
+  0x0ab8,
+  "sagurmukhi",
+  0x0a38,
+  "sahiragana",
+  0x3055,
+  "sakatakana",
+  0x30b5,
+  "sakatakanahalfwidth",
+  0xff7b,
+  "sallallahoualayhewasallamarabic",
+  0xfdfa,
+  "samekh",
+  0x05e1,
+  "samekhdagesh",
+  0xfb41,
+  "samekhdageshhebrew",
+  0xfb41,
+  "samekhhebrew",
+  0x05e1,
+  "saraaathai",
+  0x0e32,
+  "saraaethai",
+  0x0e41,
+  "saraaimaimalaithai",
+  0x0e44,
+  "saraaimaimuanthai",
+  0x0e43,
+  "saraamthai",
+  0x0e33,
+  "saraathai",
+  0x0e30,
+  "saraethai",
+  0x0e40,
+  "saraiileftthai",
+  0xf886,
+  "saraiithai",
+  0x0e35,
+  "saraileftthai",
+  0xf885,
+  "saraithai",
+  0x0e34,
+  "saraothai",
+  0x0e42,
+  "saraueeleftthai",
+  0xf888,
+  "saraueethai",
+  0x0e37,
+  "saraueleftthai",
+  0xf887,
+  "sarauethai",
+  0x0e36,
+  "sarauthai",
+  0x0e38,
+  "sarauuthai",
+  0x0e39,
+  "sbopomofo",
+  0x3119,
+  "scaron",
+  0x0161,
+  "scarondotaccent",
+  0x1e67,
+  "scedilla",
+  0x015f,
+  "schwa",
+  0x0259,
+  "schwacyrillic",
+  0x04d9,
+  "schwadieresiscyrillic",
+  0x04db,
+  "schwahook",
+  0x025a,
+  "scircle",
+  0x24e2,
+  "scircumflex",
+  0x015d,
+  "scommaaccent",
+  0x0219,
+  "sdotaccent",
+  0x1e61,
+  "sdotbelow",
+  0x1e63,
+  "sdotbelowdotaccent",
+  0x1e69,
+  "seagullbelowcmb",
+  0x033c,
+  "second",
+  0x2033,
+  "secondtonechinese",
+  0x02ca,
+  "section",
+  0x00a7,
+  "seenarabic",
+  0x0633,
+  "seenfinalarabic",
+  0xfeb2,
+  "seeninitialarabic",
+  0xfeb3,
+  "seenmedialarabic",
+  0xfeb4,
+  "segol",
+  0x05b6,
+  "segol13",
+  0x05b6,
+  "segol1f",
+  0x05b6,
+  "segol2c",
+  0x05b6,
+  "segolhebrew",
+  0x05b6,
+  "segolnarrowhebrew",
+  0x05b6,
+  "segolquarterhebrew",
+  0x05b6,
+  "segoltahebrew",
+  0x0592,
+  "segolwidehebrew",
+  0x05b6,
+  "seharmenian",
+  0x057d,
+  "sehiragana",
+  0x305b,
+  "sekatakana",
+  0x30bb,
+  "sekatakanahalfwidth",
+  0xff7e,
+  "semicolon",
+  0x003b,
+  "semicolonarabic",
+  0x061b,
+  "semicolonmonospace",
+  0xff1b,
+  "semicolonsmall",
+  0xfe54,
+  "semivoicedmarkkana",
+  0x309c,
+  "semivoicedmarkkanahalfwidth",
+  0xff9f,
+  "sentisquare",
+  0x3322,
+  "sentosquare",
+  0x3323,
+  "seven",
+  0x0037,
+  "sevenarabic",
+  0x0667,
+  "sevenbengali",
+  0x09ed,
+  "sevencircle",
+  0x2466,
+  "sevencircleinversesansserif",
+  0x2790,
+  "sevendeva",
+  0x096d,
+  "seveneighths",
+  0x215e,
+  "sevengujarati",
+  0x0aed,
+  "sevengurmukhi",
+  0x0a6d,
+  "sevenhackarabic",
+  0x0667,
+  "sevenhangzhou",
+  0x3027,
+  "sevenideographicparen",
+  0x3226,
+  "seveninferior",
+  0x2087,
+  "sevenmonospace",
+  0xff17,
+  "sevenoldstyle",
+  0xf737,
+  "sevenparen",
+  0x247a,
+  "sevenperiod",
+  0x248e,
+  "sevenpersian",
+  0x06f7,
+  "sevenroman",
+  0x2176,
+  "sevensuperior",
+  0x2077,
+  "seventeencircle",
+  0x2470,
+  "seventeenparen",
+  0x2484,
+  "seventeenperiod",
+  0x2498,
+  "seventhai",
+  0x0e57,
+  "sfthyphen",
+  0x00ad,
+  "shaarmenian",
+  0x0577,
+  "shabengali",
+  0x09b6,
+  "shacyrillic",
+  0x0448,
+  "shaddaarabic",
+  0x0651,
+  "shaddadammaarabic",
+  0xfc61,
+  "shaddadammatanarabic",
+  0xfc5e,
+  "shaddafathaarabic",
+  0xfc60,
+  "shaddakasraarabic",
+  0xfc62,
+  "shaddakasratanarabic",
+  0xfc5f,
+  "shade",
+  0x2592,
+  "shadedark",
+  0x2593,
+  "shadelight",
+  0x2591,
+  "shademedium",
+  0x2592,
+  "shadeva",
+  0x0936,
+  "shagujarati",
+  0x0ab6,
+  "shagurmukhi",
+  0x0a36,
+  "shalshelethebrew",
+  0x0593,
+  "shbopomofo",
+  0x3115,
+  "shchacyrillic",
+  0x0449,
+  "sheenarabic",
+  0x0634,
+  "sheenfinalarabic",
+  0xfeb6,
+  "sheeninitialarabic",
+  0xfeb7,
+  "sheenmedialarabic",
+  0xfeb8,
+  "sheicoptic",
+  0x03e3,
+  "sheqel",
+  0x20aa,
+  "sheqelhebrew",
+  0x20aa,
+  "sheva",
+  0x05b0,
+  "sheva115",
+  0x05b0,
+  "sheva15",
+  0x05b0,
+  "sheva22",
+  0x05b0,
+  "sheva2e",
+  0x05b0,
+  "shevahebrew",
+  0x05b0,
+  "shevanarrowhebrew",
+  0x05b0,
+  "shevaquarterhebrew",
+  0x05b0,
+  "shevawidehebrew",
+  0x05b0,
+  "shhacyrillic",
+  0x04bb,
+  "shimacoptic",
+  0x03ed,
+  "shin",
+  0x05e9,
+  "shindagesh",
+  0xfb49,
+  "shindageshhebrew",
+  0xfb49,
+  "shindageshshindot",
+  0xfb2c,
+  "shindageshshindothebrew",
+  0xfb2c,
+  "shindageshsindot",
+  0xfb2d,
+  "shindageshsindothebrew",
+  0xfb2d,
+  "shindothebrew",
+  0x05c1,
+  "shinhebrew",
+  0x05e9,
+  "shinshindot",
+  0xfb2a,
+  "shinshindothebrew",
+  0xfb2a,
+  "shinsindot",
+  0xfb2b,
+  "shinsindothebrew",
+  0xfb2b,
+  "shook",
+  0x0282,
+  "sigma",
+  0x03c3,
+  "sigma1",
+  0x03c2,
+  "sigmafinal",
+  0x03c2,
+  "sigmalunatesymbolgreek",
+  0x03f2,
+  "sihiragana",
+  0x3057,
+  "sikatakana",
+  0x30b7,
+  "sikatakanahalfwidth",
+  0xff7c,
+  "siluqhebrew",
+  0x05bd,
+  "siluqlefthebrew",
+  0x05bd,
+  "similar",
+  0x223c,
+  "sindothebrew",
+  0x05c2,
+  "siosacirclekorean",
+  0x3274,
+  "siosaparenkorean",
+  0x3214,
+  "sioscieuckorean",
+  0x317e,
+  "sioscirclekorean",
+  0x3266,
+  "sioskiyeokkorean",
+  0x317a,
+  "sioskorean",
+  0x3145,
+  "siosnieunkorean",
+  0x317b,
+  "siosparenkorean",
+  0x3206,
+  "siospieupkorean",
+  0x317d,
+  "siostikeutkorean",
+  0x317c,
+  "six",
+  0x0036,
+  "sixarabic",
+  0x0666,
+  "sixbengali",
+  0x09ec,
+  "sixcircle",
+  0x2465,
+  "sixcircleinversesansserif",
+  0x278f,
+  "sixdeva",
+  0x096c,
+  "sixgujarati",
+  0x0aec,
+  "sixgurmukhi",
+  0x0a6c,
+  "sixhackarabic",
+  0x0666,
+  "sixhangzhou",
+  0x3026,
+  "sixideographicparen",
+  0x3225,
+  "sixinferior",
+  0x2086,
+  "sixmonospace",
+  0xff16,
+  "sixoldstyle",
+  0xf736,
+  "sixparen",
+  0x2479,
+  "sixperiod",
+  0x248d,
+  "sixpersian",
+  0x06f6,
+  "sixroman",
+  0x2175,
+  "sixsuperior",
+  0x2076,
+  "sixteencircle",
+  0x246f,
+  "sixteencurrencydenominatorbengali",
+  0x09f9,
+  "sixteenparen",
+  0x2483,
+  "sixteenperiod",
+  0x2497,
+  "sixthai",
+  0x0e56,
+  "slash",
+  0x002f,
+  "slashmonospace",
+  0xff0f,
+  "slong",
+  0x017f,
+  "slongdotaccent",
+  0x1e9b,
+  "smileface",
+  0x263a,
+  "smonospace",
+  0xff53,
+  "sofpasuqhebrew",
+  0x05c3,
+  "softhyphen",
+  0x00ad,
+  "softsigncyrillic",
+  0x044c,
+  "sohiragana",
+  0x305d,
+  "sokatakana",
+  0x30bd,
+  "sokatakanahalfwidth",
+  0xff7f,
+  "soliduslongoverlaycmb",
+  0x0338,
+  "solidusshortoverlaycmb",
+  0x0337,
+  "sorusithai",
+  0x0e29,
+  "sosalathai",
+  0x0e28,
+  "sosothai",
+  0x0e0b,
+  "sosuathai",
+  0x0e2a,
+  "space",
+  0x0020,
+  "spacehackarabic",
+  0x0020,
+  "spade",
+  0x2660,
+  "spadesuitblack",
+  0x2660,
+  "spadesuitwhite",
+  0x2664,
+  "sparen",
+  0x24ae,
+  "squarebelowcmb",
+  0x033b,
+  "squarecc",
+  0x33c4,
+  "squarecm",
+  0x339d,
+  "squarediagonalcrosshatchfill",
+  0x25a9,
+  "squarehorizontalfill",
+  0x25a4,
+  "squarekg",
+  0x338f,
+  "squarekm",
+  0x339e,
+  "squarekmcapital",
+  0x33ce,
+  "squareln",
+  0x33d1,
+  "squarelog",
+  0x33d2,
+  "squaremg",
+  0x338e,
+  "squaremil",
+  0x33d5,
+  "squaremm",
+  0x339c,
+  "squaremsquared",
+  0x33a1,
+  "squareorthogonalcrosshatchfill",
+  0x25a6,
+  "squareupperlefttolowerrightfill",
+  0x25a7,
+  "squareupperrighttolowerleftfill",
+  0x25a8,
+  "squareverticalfill",
+  0x25a5,
+  "squarewhitewithsmallblack",
+  0x25a3,
+  "srsquare",
+  0x33db,
+  "ssabengali",
+  0x09b7,
+  "ssadeva",
+  0x0937,
+  "ssagujarati",
+  0x0ab7,
+  "ssangcieuckorean",
+  0x3149,
+  "ssanghieuhkorean",
+  0x3185,
+  "ssangieungkorean",
+  0x3180,
+  "ssangkiyeokkorean",
+  0x3132,
+  "ssangnieunkorean",
+  0x3165,
+  "ssangpieupkorean",
+  0x3143,
+  "ssangsioskorean",
+  0x3146,
+  "ssangtikeutkorean",
+  0x3138,
+  "ssuperior",
+  0xf6f2,
+  "sterling",
+  0x00a3,
+  "sterlingmonospace",
+  0xffe1,
+  "strokelongoverlaycmb",
+  0x0336,
+  "strokeshortoverlaycmb",
+  0x0335,
+  "subset",
+  0x2282,
+  "subsetnotequal",
+  0x228a,
+  "subsetorequal",
+  0x2286,
+  "succeeds",
+  0x227b,
+  "suchthat",
+  0x220b,
+  "suhiragana",
+  0x3059,
+  "sukatakana",
+  0x30b9,
+  "sukatakanahalfwidth",
+  0xff7d,
+  "sukunarabic",
+  0x0652,
+  "summation",
+  0x2211,
+  "sun",
+  0x263c,
+  "superset",
+  0x2283,
+  "supersetnotequal",
+  0x228b,
+  "supersetorequal",
+  0x2287,
+  "svsquare",
+  0x33dc,
+  "syouwaerasquare",
+  0x337c,
+  "t",
+  0x0074,
+  "tabengali",
+  0x09a4,
+  "tackdown",
+  0x22a4,
+  "tackleft",
+  0x22a3,
+  "tadeva",
+  0x0924,
+  "tagujarati",
+  0x0aa4,
+  "tagurmukhi",
+  0x0a24,
+  "taharabic",
+  0x0637,
+  "tahfinalarabic",
+  0xfec2,
+  "tahinitialarabic",
+  0xfec3,
+  "tahiragana",
+  0x305f,
+  "tahmedialarabic",
+  0xfec4,
+  "taisyouerasquare",
+  0x337d,
+  "takatakana",
+  0x30bf,
+  "takatakanahalfwidth",
+  0xff80,
+  "tatweelarabic",
+  0x0640,
+  "tau",
+  0x03c4,
+  "tav",
+  0x05ea,
+  "tavdages",
+  0xfb4a,
+  "tavdagesh",
+  0xfb4a,
+  "tavdageshhebrew",
+  0xfb4a,
+  "tavhebrew",
+  0x05ea,
+  "tbar",
+  0x0167,
+  "tbopomofo",
+  0x310a,
+  "tcaron",
+  0x0165,
+  "tccurl",
+  0x02a8,
+  "tcedilla",
+  0x0163,
+  "tcheharabic",
+  0x0686,
+  "tchehfinalarabic",
+  0xfb7b,
+  "tchehinitialarabic",
+  0xfb7c,
+  "tchehmedialarabic",
+  0xfb7d,
+  "tcircle",
+  0x24e3,
+  "tcircumflexbelow",
+  0x1e71,
+  "tcommaaccent",
+  0x0163,
+  "tdieresis",
+  0x1e97,
+  "tdotaccent",
+  0x1e6b,
+  "tdotbelow",
+  0x1e6d,
+  "tecyrillic",
+  0x0442,
+  "tedescendercyrillic",
+  0x04ad,
+  "teharabic",
+  0x062a,
+  "tehfinalarabic",
+  0xfe96,
+  "tehhahinitialarabic",
+  0xfca2,
+  "tehhahisolatedarabic",
+  0xfc0c,
+  "tehinitialarabic",
+  0xfe97,
+  "tehiragana",
+  0x3066,
+  "tehjeeminitialarabic",
+  0xfca1,
+  "tehjeemisolatedarabic",
+  0xfc0b,
+  "tehmarbutaarabic",
+  0x0629,
+  "tehmarbutafinalarabic",
+  0xfe94,
+  "tehmedialarabic",
+  0xfe98,
+  "tehmeeminitialarabic",
+  0xfca4,
+  "tehmeemisolatedarabic",
+  0xfc0e,
+  "tehnoonfinalarabic",
+  0xfc73,
+  "tekatakana",
+  0x30c6,
+  "tekatakanahalfwidth",
+  0xff83,
+  "telephone",
+  0x2121,
+  "telephoneblack",
+  0x260e,
+  "telishagedolahebrew",
+  0x05a0,
+  "telishaqetanahebrew",
+  0x05a9,
+  "tencircle",
+  0x2469,
+  "tenideographicparen",
+  0x3229,
+  "tenparen",
+  0x247d,
+  "tenperiod",
+  0x2491,
+  "tenroman",
+  0x2179,
+  "tesh",
+  0x02a7,
+  "tet",
+  0x05d8,
+  "tetdagesh",
+  0xfb38,
+  "tetdageshhebrew",
+  0xfb38,
+  "tethebrew",
+  0x05d8,
+  "tetsecyrillic",
+  0x04b5,
+  "tevirhebrew",
+  0x059b,
+  "tevirlefthebrew",
+  0x059b,
+  "thabengali",
+  0x09a5,
+  "thadeva",
+  0x0925,
+  "thagujarati",
+  0x0aa5,
+  "thagurmukhi",
+  0x0a25,
+  "thalarabic",
+  0x0630,
+  "thalfinalarabic",
+  0xfeac,
+  "thanthakhatlowleftthai",
+  0xf898,
+  "thanthakhatlowrightthai",
+  0xf897,
+  "thanthakhatthai",
+  0x0e4c,
+  "thanthakhatupperleftthai",
+  0xf896,
+  "theharabic",
+  0x062b,
+  "thehfinalarabic",
+  0xfe9a,
+  "thehinitialarabic",
+  0xfe9b,
+  "thehmedialarabic",
+  0xfe9c,
+  "thereexists",
+  0x2203,
+  "therefore",
+  0x2234,
+  "theta",
+  0x03b8,
+  "theta1",
+  0x03d1,
+  "thetasymbolgreek",
+  0x03d1,
+  "thieuthacirclekorean",
+  0x3279,
+  "thieuthaparenkorean",
+  0x3219,
+  "thieuthcirclekorean",
+  0x326b,
+  "thieuthkorean",
+  0x314c,
+  "thieuthparenkorean",
+  0x320b,
+  "thirteencircle",
+  0x246c,
+  "thirteenparen",
+  0x2480,
+  "thirteenperiod",
+  0x2494,
+  "thonangmonthothai",
+  0x0e11,
+  "thook",
+  0x01ad,
+  "thophuthaothai",
+  0x0e12,
+  "thorn",
+  0x00fe,
+  "thothahanthai",
+  0x0e17,
+  "thothanthai",
+  0x0e10,
+  "thothongthai",
+  0x0e18,
+  "thothungthai",
+  0x0e16,
+  "thousandcyrillic",
+  0x0482,
+  "thousandsseparatorarabic",
+  0x066c,
+  "thousandsseparatorpersian",
+  0x066c,
+  "three",
+  0x0033,
+  "threearabic",
+  0x0663,
+  "threebengali",
+  0x09e9,
+  "threecircle",
+  0x2462,
+  "threecircleinversesansserif",
+  0x278c,
+  "threedeva",
+  0x0969,
+  "threeeighths",
+  0x215c,
+  "threegujarati",
+  0x0ae9,
+  "threegurmukhi",
+  0x0a69,
+  "threehackarabic",
+  0x0663,
+  "threehangzhou",
+  0x3023,
+  "threeideographicparen",
+  0x3222,
+  "threeinferior",
+  0x2083,
+  "threemonospace",
+  0xff13,
+  "threenumeratorbengali",
+  0x09f6,
+  "threeoldstyle",
+  0xf733,
+  "threeparen",
+  0x2476,
+  "threeperiod",
+  0x248a,
+  "threepersian",
+  0x06f3,
+  "threequarters",
+  0x00be,
+  "threequartersemdash",
+  0xf6de,
+  "threeroman",
+  0x2172,
+  "threesuperior",
+  0x00b3,
+  "threethai",
+  0x0e53,
+  "thzsquare",
+  0x3394,
+  "tihiragana",
+  0x3061,
+  "tikatakana",
+  0x30c1,
+  "tikatakanahalfwidth",
+  0xff81,
+  "tikeutacirclekorean",
+  0x3270,
+  "tikeutaparenkorean",
+  0x3210,
+  "tikeutcirclekorean",
+  0x3262,
+  "tikeutkorean",
+  0x3137,
+  "tikeutparenkorean",
+  0x3202,
+  "tilde",
+  0x02dc,
+  "tildebelowcmb",
+  0x0330,
+  "tildecmb",
+  0x0303,
+  "tildecomb",
+  0x0303,
+  "tildedoublecmb",
+  0x0360,
+  "tildeoperator",
+  0x223c,
+  "tildeoverlaycmb",
+  0x0334,
+  "tildeverticalcmb",
+  0x033e,
+  "timescircle",
+  0x2297,
+  "tipehahebrew",
+  0x0596,
+  "tipehalefthebrew",
+  0x0596,
+  "tippigurmukhi",
+  0x0a70,
+  "titlocyrilliccmb",
+  0x0483,
+  "tiwnarmenian",
+  0x057f,
+  "tlinebelow",
+  0x1e6f,
+  "tmonospace",
+  0xff54,
+  "toarmenian",
+  0x0569,
+  "tohiragana",
+  0x3068,
+  "tokatakana",
+  0x30c8,
+  "tokatakanahalfwidth",
+  0xff84,
+  "tonebarextrahighmod",
+  0x02e5,
+  "tonebarextralowmod",
+  0x02e9,
+  "tonebarhighmod",
+  0x02e6,
+  "tonebarlowmod",
+  0x02e8,
+  "tonebarmidmod",
+  0x02e7,
+  "tonefive",
+  0x01bd,
+  "tonesix",
+  0x0185,
+  "tonetwo",
+  0x01a8,
+  "tonos",
+  0x0384,
+  "tonsquare",
+  0x3327,
+  "topatakthai",
+  0x0e0f,
+  "tortoiseshellbracketleft",
+  0x3014,
+  "tortoiseshellbracketleftsmall",
+  0xfe5d,
+  "tortoiseshellbracketleftvertical",
+  0xfe39,
+  "tortoiseshellbracketright",
+  0x3015,
+  "tortoiseshellbracketrightsmall",
+  0xfe5e,
+  "tortoiseshellbracketrightvertical",
+  0xfe3a,
+  "totaothai",
+  0x0e15,
+  "tpalatalhook",
+  0x01ab,
+  "tparen",
+  0x24af,
+  "trademark",
+  0x2122,
+  "trademarksans",
+  0xf8ea,
+  "trademarkserif",
+  0xf6db,
+  "tretroflexhook",
+  0x0288,
+  "triagdn",
+  0x25bc,
+  "triaglf",
+  0x25c4,
+  "triagrt",
+  0x25ba,
+  "triagup",
+  0x25b2,
+  "ts",
+  0x02a6,
+  "tsadi",
+  0x05e6,
+  "tsadidagesh",
+  0xfb46,
+  "tsadidageshhebrew",
+  0xfb46,
+  "tsadihebrew",
+  0x05e6,
+  "tsecyrillic",
+  0x0446,
+  "tsere",
+  0x05b5,
+  "tsere12",
+  0x05b5,
+  "tsere1e",
+  0x05b5,
+  "tsere2b",
+  0x05b5,
+  "tserehebrew",
+  0x05b5,
+  "tserenarrowhebrew",
+  0x05b5,
+  "tserequarterhebrew",
+  0x05b5,
+  "tserewidehebrew",
+  0x05b5,
+  "tshecyrillic",
+  0x045b,
+  "tsuperior",
+  0xf6f3,
+  "ttabengali",
+  0x099f,
+  "ttadeva",
+  0x091f,
+  "ttagujarati",
+  0x0a9f,
+  "ttagurmukhi",
+  0x0a1f,
+  "tteharabic",
+  0x0679,
+  "ttehfinalarabic",
+  0xfb67,
+  "ttehinitialarabic",
+  0xfb68,
+  "ttehmedialarabic",
+  0xfb69,
+  "tthabengali",
+  0x09a0,
+  "tthadeva",
+  0x0920,
+  "tthagujarati",
+  0x0aa0,
+  "tthagurmukhi",
+  0x0a20,
+  "tturned",
+  0x0287,
+  "tuhiragana",
+  0x3064,
+  "tukatakana",
+  0x30c4,
+  "tukatakanahalfwidth",
+  0xff82,
+  "tusmallhiragana",
+  0x3063,
+  "tusmallkatakana",
+  0x30c3,
+  "tusmallkatakanahalfwidth",
+  0xff6f,
+  "twelvecircle",
+  0x246b,
+  "twelveparen",
+  0x247f,
+  "twelveperiod",
+  0x2493,
+  "twelveroman",
+  0x217b,
+  "twentycircle",
+  0x2473,
+  "twentyhangzhou",
+  0x5344,
+  "twentyparen",
+  0x2487,
+  "twentyperiod",
+  0x249b,
+  "two",
+  0x0032,
+  "twoarabic",
+  0x0662,
+  "twobengali",
+  0x09e8,
+  "twocircle",
+  0x2461,
+  "twocircleinversesansserif",
+  0x278b,
+  "twodeva",
+  0x0968,
+  "twodotenleader",
+  0x2025,
+  "twodotleader",
+  0x2025,
+  "twodotleadervertical",
+  0xfe30,
+  "twogujarati",
+  0x0ae8,
+  "twogurmukhi",
+  0x0a68,
+  "twohackarabic",
+  0x0662,
+  "twohangzhou",
+  0x3022,
+  "twoideographicparen",
+  0x3221,
+  "twoinferior",
+  0x2082,
+  "twomonospace",
+  0xff12,
+  "twonumeratorbengali",
+  0x09f5,
+  "twooldstyle",
+  0xf732,
+  "twoparen",
+  0x2475,
+  "twoperiod",
+  0x2489,
+  "twopersian",
+  0x06f2,
+  "tworoman",
+  0x2171,
+  "twostroke",
+  0x01bb,
+  "twosuperior",
+  0x00b2,
+  "twothai",
+  0x0e52,
+  "twothirds",
+  0x2154,
+  "u",
+  0x0075,
+  "uacute",
+  0x00fa,
+  "ubar",
+  0x0289,
+  "ubengali",
+  0x0989,
+  "ubopomofo",
+  0x3128,
+  "ubreve",
+  0x016d,
+  "ucaron",
+  0x01d4,
+  "ucircle",
+  0x24e4,
+  "ucircumflex",
+  0x00fb,
+  "ucircumflexbelow",
+  0x1e77,
+  "ucyrillic",
+  0x0443,
+  "udattadeva",
+  0x0951,
+  "udblacute",
+  0x0171,
+  "udblgrave",
+  0x0215,
+  "udeva",
+  0x0909,
+  "udieresis",
+  0x00fc,
+  "udieresisacute",
+  0x01d8,
+  "udieresisbelow",
+  0x1e73,
+  "udieresiscaron",
+  0x01da,
+  "udieresiscyrillic",
+  0x04f1,
+  "udieresisgrave",
+  0x01dc,
+  "udieresismacron",
+  0x01d6,
+  "udotbelow",
+  0x1ee5,
+  "ugrave",
+  0x00f9,
+  "ugujarati",
+  0x0a89,
+  "ugurmukhi",
+  0x0a09,
+  "uhiragana",
+  0x3046,
+  "uhookabove",
+  0x1ee7,
+  "uhorn",
+  0x01b0,
+  "uhornacute",
+  0x1ee9,
+  "uhorndotbelow",
+  0x1ef1,
+  "uhorngrave",
+  0x1eeb,
+  "uhornhookabove",
+  0x1eed,
+  "uhorntilde",
+  0x1eef,
+  "uhungarumlaut",
+  0x0171,
+  "uhungarumlautcyrillic",
+  0x04f3,
+  "uinvertedbreve",
+  0x0217,
+  "ukatakana",
+  0x30a6,
+  "ukatakanahalfwidth",
+  0xff73,
+  "ukcyrillic",
+  0x0479,
+  "ukorean",
+  0x315c,
+  "umacron",
+  0x016b,
+  "umacroncyrillic",
+  0x04ef,
+  "umacrondieresis",
+  0x1e7b,
+  "umatragurmukhi",
+  0x0a41,
+  "umonospace",
+  0xff55,
+  "underscore",
+  0x005f,
+  "underscoredbl",
+  0x2017,
+  "underscoremonospace",
+  0xff3f,
+  "underscorevertical",
+  0xfe33,
+  "underscorewavy",
+  0xfe4f,
+  "union",
+  0x222a,
+  "universal",
+  0x2200,
+  "uogonek",
+  0x0173,
+  "uparen",
+  0x24b0,
+  "upblock",
+  0x2580,
+  "upperdothebrew",
+  0x05c4,
+  "upsilon",
+  0x03c5,
+  "upsilondieresis",
+  0x03cb,
+  "upsilondieresistonos",
+  0x03b0,
+  "upsilonlatin",
+  0x028a,
+  "upsilontonos",
+  0x03cd,
+  "uptackbelowcmb",
+  0x031d,
+  "uptackmod",
+  0x02d4,
+  "uragurmukhi",
+  0x0a73,
+  "uring",
+  0x016f,
+  "ushortcyrillic",
+  0x045e,
+  "usmallhiragana",
+  0x3045,
+  "usmallkatakana",
+  0x30a5,
+  "usmallkatakanahalfwidth",
+  0xff69,
+  "ustraightcyrillic",
+  0x04af,
+  "ustraightstrokecyrillic",
+  0x04b1,
+  "utilde",
+  0x0169,
+  "utildeacute",
+  0x1e79,
+  "utildebelow",
+  0x1e75,
+  "uubengali",
+  0x098a,
+  "uudeva",
+  0x090a,
+  "uugujarati",
+  0x0a8a,
+  "uugurmukhi",
+  0x0a0a,
+  "uumatragurmukhi",
+  0x0a42,
+  "uuvowelsignbengali",
+  0x09c2,
+  "uuvowelsigndeva",
+  0x0942,
+  "uuvowelsigngujarati",
+  0x0ac2,
+  "uvowelsignbengali",
+  0x09c1,
+  "uvowelsigndeva",
+  0x0941,
+  "uvowelsigngujarati",
+  0x0ac1,
+  "v",
+  0x0076,
+  "vadeva",
+  0x0935,
+  "vagujarati",
+  0x0ab5,
+  "vagurmukhi",
+  0x0a35,
+  "vakatakana",
+  0x30f7,
+  "vav",
+  0x05d5,
+  "vavdagesh",
+  0xfb35,
+  "vavdagesh65",
+  0xfb35,
+  "vavdageshhebrew",
+  0xfb35,
+  "vavhebrew",
+  0x05d5,
+  "vavholam",
+  0xfb4b,
+  "vavholamhebrew",
+  0xfb4b,
+  "vavvavhebrew",
+  0x05f0,
+  "vavyodhebrew",
+  0x05f1,
+  "vcircle",
+  0x24e5,
+  "vdotbelow",
+  0x1e7f,
+  "vecyrillic",
+  0x0432,
+  "veharabic",
+  0x06a4,
+  "vehfinalarabic",
+  0xfb6b,
+  "vehinitialarabic",
+  0xfb6c,
+  "vehmedialarabic",
+  0xfb6d,
+  "vekatakana",
+  0x30f9,
+  "venus",
+  0x2640,
+  "verticalbar",
+  0x007c,
+  "verticallineabovecmb",
+  0x030d,
+  "verticallinebelowcmb",
+  0x0329,
+  "verticallinelowmod",
+  0x02cc,
+  "verticallinemod",
+  0x02c8,
+  "vewarmenian",
+  0x057e,
+  "vhook",
+  0x028b,
+  "vikatakana",
+  0x30f8,
+  "viramabengali",
+  0x09cd,
+  "viramadeva",
+  0x094d,
+  "viramagujarati",
+  0x0acd,
+  "visargabengali",
+  0x0983,
+  "visargadeva",
+  0x0903,
+  "visargagujarati",
+  0x0a83,
+  "vmonospace",
+  0xff56,
+  "voarmenian",
+  0x0578,
+  "voicediterationhiragana",
+  0x309e,
+  "voicediterationkatakana",
+  0x30fe,
+  "voicedmarkkana",
+  0x309b,
+  "voicedmarkkanahalfwidth",
+  0xff9e,
+  "vokatakana",
+  0x30fa,
+  "vparen",
+  0x24b1,
+  "vtilde",
+  0x1e7d,
+  "vturned",
+  0x028c,
+  "vuhiragana",
+  0x3094,
+  "vukatakana",
+  0x30f4,
+  "w",
+  0x0077,
+  "wacute",
+  0x1e83,
+  "waekorean",
+  0x3159,
+  "wahiragana",
+  0x308f,
+  "wakatakana",
+  0x30ef,
+  "wakatakanahalfwidth",
+  0xff9c,
+  "wakorean",
+  0x3158,
+  "wasmallhiragana",
+  0x308e,
+  "wasmallkatakana",
+  0x30ee,
+  "wattosquare",
+  0x3357,
+  "wavedash",
+  0x301c,
+  "wavyunderscorevertical",
+  0xfe34,
+  "wawarabic",
+  0x0648,
+  "wawfinalarabic",
+  0xfeee,
+  "wawhamzaabovearabic",
+  0x0624,
+  "wawhamzaabovefinalarabic",
+  0xfe86,
+  "wbsquare",
+  0x33dd,
+  "wcircle",
+  0x24e6,
+  "wcircumflex",
+  0x0175,
+  "wdieresis",
+  0x1e85,
+  "wdotaccent",
+  0x1e87,
+  "wdotbelow",
+  0x1e89,
+  "wehiragana",
+  0x3091,
+  "weierstrass",
+  0x2118,
+  "wekatakana",
+  0x30f1,
+  "wekorean",
+  0x315e,
+  "weokorean",
+  0x315d,
+  "wgrave",
+  0x1e81,
+  "whitebullet",
+  0x25e6,
+  "whitecircle",
+  0x25cb,
+  "whitecircleinverse",
+  0x25d9,
+  "whitecornerbracketleft",
+  0x300e,
+  "whitecornerbracketleftvertical",
+  0xfe43,
+  "whitecornerbracketright",
+  0x300f,
+  "whitecornerbracketrightvertical",
+  0xfe44,
+  "whitediamond",
+  0x25c7,
+  "whitediamondcontainingblacksmalldiamond",
+  0x25c8,
+  "whitedownpointingsmalltriangle",
+  0x25bf,
+  "whitedownpointingtriangle",
+  0x25bd,
+  "whiteleftpointingsmalltriangle",
+  0x25c3,
+  "whiteleftpointingtriangle",
+  0x25c1,
+  "whitelenticularbracketleft",
+  0x3016,
+  "whitelenticularbracketright",
+  0x3017,
+  "whiterightpointingsmalltriangle",
+  0x25b9,
+  "whiterightpointingtriangle",
+  0x25b7,
+  "whitesmallsquare",
+  0x25ab,
+  "whitesmilingface",
+  0x263a,
+  "whitesquare",
+  0x25a1,
+  "whitestar",
+  0x2606,
+  "whitetelephone",
+  0x260f,
+  "whitetortoiseshellbracketleft",
+  0x3018,
+  "whitetortoiseshellbracketright",
+  0x3019,
+  "whiteuppointingsmalltriangle",
+  0x25b5,
+  "whiteuppointingtriangle",
+  0x25b3,
+  "wihiragana",
+  0x3090,
+  "wikatakana",
+  0x30f0,
+  "wikorean",
+  0x315f,
+  "wmonospace",
+  0xff57,
+  "wohiragana",
+  0x3092,
+  "wokatakana",
+  0x30f2,
+  "wokatakanahalfwidth",
+  0xff66,
+  "won",
+  0x20a9,
+  "wonmonospace",
+  0xffe6,
+  "wowaenthai",
+  0x0e27,
+  "wparen",
+  0x24b2,
+  "wring",
+  0x1e98,
+  "wsuperior",
+  0x02b7,
+  "wturned",
+  0x028d,
+  "wynn",
+  0x01bf,
+  "x",
+  0x0078,
+  "xabovecmb",
+  0x033d,
+  "xbopomofo",
+  0x3112,
+  "xcircle",
+  0x24e7,
+  "xdieresis",
+  0x1e8d,
+  "xdotaccent",
+  0x1e8b,
+  "xeharmenian",
+  0x056d,
+  "xi",
+  0x03be,
+  "xmonospace",
+  0xff58,
+  "xparen",
+  0x24b3,
+  "xsuperior",
+  0x02e3,
+  "y",
+  0x0079,
+  "yaadosquare",
+  0x334e,
+  "yabengali",
+  0x09af,
+  "yacute",
+  0x00fd,
+  "yadeva",
+  0x092f,
+  "yaekorean",
+  0x3152,
+  "yagujarati",
+  0x0aaf,
+  "yagurmukhi",
+  0x0a2f,
+  "yahiragana",
+  0x3084,
+  "yakatakana",
+  0x30e4,
+  "yakatakanahalfwidth",
+  0xff94,
+  "yakorean",
+  0x3151,
+  "yamakkanthai",
+  0x0e4e,
+  "yasmallhiragana",
+  0x3083,
+  "yasmallkatakana",
+  0x30e3,
+  "yasmallkatakanahalfwidth",
+  0xff6c,
+  "yatcyrillic",
+  0x0463,
+  "ycircle",
+  0x24e8,
+  "ycircumflex",
+  0x0177,
+  "ydieresis",
+  0x00ff,
+  "ydotaccent",
+  0x1e8f,
+  "ydotbelow",
+  0x1ef5,
+  "yeharabic",
+  0x064a,
+  "yehbarreearabic",
+  0x06d2,
+  "yehbarreefinalarabic",
+  0xfbaf,
+  "yehfinalarabic",
+  0xfef2,
+  "yehhamzaabovearabic",
+  0x0626,
+  "yehhamzaabovefinalarabic",
+  0xfe8a,
+  "yehhamzaaboveinitialarabic",
+  0xfe8b,
+  "yehhamzaabovemedialarabic",
+  0xfe8c,
+  "yehinitialarabic",
+  0xfef3,
+  "yehmedialarabic",
+  0xfef4,
+  "yehmeeminitialarabic",
+  0xfcdd,
+  "yehmeemisolatedarabic",
+  0xfc58,
+  "yehnoonfinalarabic",
+  0xfc94,
+  "yehthreedotsbelowarabic",
+  0x06d1,
+  "yekorean",
+  0x3156,
+  "yen",
+  0x00a5,
+  "yenmonospace",
+  0xffe5,
+  "yeokorean",
+  0x3155,
+  "yeorinhieuhkorean",
+  0x3186,
+  "yerahbenyomohebrew",
+  0x05aa,
+  "yerahbenyomolefthebrew",
+  0x05aa,
+  "yericyrillic",
+  0x044b,
+  "yerudieresiscyrillic",
+  0x04f9,
+  "yesieungkorean",
+  0x3181,
+  "yesieungpansioskorean",
+  0x3183,
+  "yesieungsioskorean",
+  0x3182,
+  "yetivhebrew",
+  0x059a,
+  "ygrave",
+  0x1ef3,
+  "yhook",
+  0x01b4,
+  "yhookabove",
+  0x1ef7,
+  "yiarmenian",
+  0x0575,
+  "yicyrillic",
+  0x0457,
+  "yikorean",
+  0x3162,
+  "yinyang",
+  0x262f,
+  "yiwnarmenian",
+  0x0582,
+  "ymonospace",
+  0xff59,
+  "yod",
+  0x05d9,
+  "yoddagesh",
+  0xfb39,
+  "yoddageshhebrew",
+  0xfb39,
+  "yodhebrew",
+  0x05d9,
+  "yodyodhebrew",
+  0x05f2,
+  "yodyodpatahhebrew",
+  0xfb1f,
+  "yohiragana",
+  0x3088,
+  "yoikorean",
+  0x3189,
+  "yokatakana",
+  0x30e8,
+  "yokatakanahalfwidth",
+  0xff96,
+  "yokorean",
+  0x315b,
+  "yosmallhiragana",
+  0x3087,
+  "yosmallkatakana",
+  0x30e7,
+  "yosmallkatakanahalfwidth",
+  0xff6e,
+  "yotgreek",
+  0x03f3,
+  "yoyaekorean",
+  0x3188,
+  "yoyakorean",
+  0x3187,
+  "yoyakthai",
+  0x0e22,
+  "yoyingthai",
+  0x0e0d,
+  "yparen",
+  0x24b4,
+  "ypogegrammeni",
+  0x037a,
+  "ypogegrammenigreekcmb",
+  0x0345,
+  "yr",
+  0x01a6,
+  "yring",
+  0x1e99,
+  "ysuperior",
+  0x02b8,
+  "ytilde",
+  0x1ef9,
+  "yturned",
+  0x028e,
+  "yuhiragana",
+  0x3086,
+  "yuikorean",
+  0x318c,
+  "yukatakana",
+  0x30e6,
+  "yukatakanahalfwidth",
+  0xff95,
+  "yukorean",
+  0x3160,
+  "yusbigcyrillic",
+  0x046b,
+  "yusbigiotifiedcyrillic",
+  0x046d,
+  "yuslittlecyrillic",
+  0x0467,
+  "yuslittleiotifiedcyrillic",
+  0x0469,
+  "yusmallhiragana",
+  0x3085,
+  "yusmallkatakana",
+  0x30e5,
+  "yusmallkatakanahalfwidth",
+  0xff6d,
+  "yuyekorean",
+  0x318b,
+  "yuyeokorean",
+  0x318a,
+  "yyabengali",
+  0x09df,
+  "yyadeva",
+  0x095f,
+  "z",
+  0x007a,
+  "zaarmenian",
+  0x0566,
+  "zacute",
+  0x017a,
+  "zadeva",
+  0x095b,
+  "zagurmukhi",
+  0x0a5b,
+  "zaharabic",
+  0x0638,
+  "zahfinalarabic",
+  0xfec6,
+  "zahinitialarabic",
+  0xfec7,
+  "zahiragana",
+  0x3056,
+  "zahmedialarabic",
+  0xfec8,
+  "zainarabic",
+  0x0632,
+  "zainfinalarabic",
+  0xfeb0,
+  "zakatakana",
+  0x30b6,
+  "zaqefgadolhebrew",
+  0x0595,
+  "zaqefqatanhebrew",
+  0x0594,
+  "zarqahebrew",
+  0x0598,
+  "zayin",
+  0x05d6,
+  "zayindagesh",
+  0xfb36,
+  "zayindageshhebrew",
+  0xfb36,
+  "zayinhebrew",
+  0x05d6,
+  "zbopomofo",
+  0x3117,
+  "zcaron",
+  0x017e,
+  "zcircle",
+  0x24e9,
+  "zcircumflex",
+  0x1e91,
+  "zcurl",
+  0x0291,
+  "zdot",
+  0x017c,
+  "zdotaccent",
+  0x017c,
+  "zdotbelow",
+  0x1e93,
+  "zecyrillic",
+  0x0437,
+  "zedescendercyrillic",
+  0x0499,
+  "zedieresiscyrillic",
+  0x04df,
+  "zehiragana",
+  0x305c,
+  "zekatakana",
+  0x30bc,
+  "zero",
+  0x0030,
+  "zeroarabic",
+  0x0660,
+  "zerobengali",
+  0x09e6,
+  "zerodeva",
+  0x0966,
+  "zerogujarati",
+  0x0ae6,
+  "zerogurmukhi",
+  0x0a66,
+  "zerohackarabic",
+  0x0660,
+  "zeroinferior",
+  0x2080,
+  "zeromonospace",
+  0xff10,
+  "zerooldstyle",
+  0xf730,
+  "zeropersian",
+  0x06f0,
+  "zerosuperior",
+  0x2070,
+  "zerothai",
+  0x0e50,
+  "zerowidthjoiner",
+  0xfeff,
+  "zerowidthnonjoiner",
+  0x200c,
+  "zerowidthspace",
+  0x200b,
+  "zeta",
+  0x03b6,
+  "zhbopomofo",
+  0x3113,
+  "zhearmenian",
+  0x056a,
+  "zhebrevecyrillic",
+  0x04c2,
+  "zhecyrillic",
+  0x0436,
+  "zhedescendercyrillic",
+  0x0497,
+  "zhedieresiscyrillic",
+  0x04dd,
+  "zihiragana",
+  0x3058,
+  "zikatakana",
+  0x30b8,
+  "zinorhebrew",
+  0x05ae,
+  "zlinebelow",
+  0x1e95,
+  "zmonospace",
+  0xff5a,
+  "zohiragana",
+  0x305e,
+  "zokatakana",
+  0x30be,
+  "zparen",
+  0x24b5,
+  "zretroflexhook",
+  0x0290,
+  "zstroke",
+  0x01b6,
+  "zuhiragana",
+  0x305a,
+  "zukatakana",
+  0x30ba,
+  ".notdef",
+  0x0000,
+  "angbracketleftbig",
+  0x2329,
+  "angbracketleftBig",
+  0x2329,
+  "angbracketleftbigg",
+  0x2329,
+  "angbracketleftBigg",
+  0x2329,
+  "angbracketrightBig",
+  0x232a,
+  "angbracketrightbig",
+  0x232a,
+  "angbracketrightBigg",
+  0x232a,
+  "angbracketrightbigg",
+  0x232a,
+  "arrowhookleft",
+  0x21aa,
+  "arrowhookright",
+  0x21a9,
+  "arrowlefttophalf",
+  0x21bc,
+  "arrowleftbothalf",
+  0x21bd,
+  "arrownortheast",
+  0x2197,
+  "arrownorthwest",
+  0x2196,
+  "arrowrighttophalf",
+  0x21c0,
+  "arrowrightbothalf",
+  0x21c1,
+  "arrowsoutheast",
+  0x2198,
+  "arrowsouthwest",
+  0x2199,
+  "backslashbig",
+  0x2216,
+  "backslashBig",
+  0x2216,
+  "backslashBigg",
+  0x2216,
+  "backslashbigg",
+  0x2216,
+  "bardbl",
+  0x2016,
+  "bracehtipdownleft",
+  0xfe37,
+  "bracehtipdownright",
+  0xfe37,
+  "bracehtipupleft",
+  0xfe38,
+  "bracehtipupright",
+  0xfe38,
+  "braceleftBig",
+  0x007b,
+  "braceleftbig",
+  0x007b,
+  "braceleftbigg",
+  0x007b,
+  "braceleftBigg",
+  0x007b,
+  "bracerightBig",
+  0x007d,
+  "bracerightbig",
+  0x007d,
+  "bracerightbigg",
+  0x007d,
+  "bracerightBigg",
+  0x007d,
+  "bracketleftbig",
+  0x005b,
+  "bracketleftBig",
+  0x005b,
+  "bracketleftbigg",
+  0x005b,
+  "bracketleftBigg",
+  0x005b,
+  "bracketrightBig",
+  0x005d,
+  "bracketrightbig",
+  0x005d,
+  "bracketrightbigg",
+  0x005d,
+  "bracketrightBigg",
+  0x005d,
+  "ceilingleftbig",
+  0x2308,
+  "ceilingleftBig",
+  0x2308,
+  "ceilingleftBigg",
+  0x2308,
+  "ceilingleftbigg",
+  0x2308,
+  "ceilingrightbig",
+  0x2309,
+  "ceilingrightBig",
+  0x2309,
+  "ceilingrightbigg",
+  0x2309,
+  "ceilingrightBigg",
+  0x2309,
+  "circledotdisplay",
+  0x2299,
+  "circledottext",
+  0x2299,
+  "circlemultiplydisplay",
+  0x2297,
+  "circlemultiplytext",
+  0x2297,
+  "circleplusdisplay",
+  0x2295,
+  "circleplustext",
+  0x2295,
+  "contintegraldisplay",
+  0x222e,
+  "contintegraltext",
+  0x222e,
+  "coproductdisplay",
+  0x2210,
+  "coproducttext",
+  0x2210,
+  "floorleftBig",
+  0x230a,
+  "floorleftbig",
+  0x230a,
+  "floorleftbigg",
+  0x230a,
+  "floorleftBigg",
+  0x230a,
+  "floorrightbig",
+  0x230b,
+  "floorrightBig",
+  0x230b,
+  "floorrightBigg",
+  0x230b,
+  "floorrightbigg",
+  0x230b,
+  "hatwide",
+  0x0302,
+  "hatwider",
+  0x0302,
+  "hatwidest",
+  0x0302,
+  "intercal",
+  0x1d40,
+  "integraldisplay",
+  0x222b,
+  "integraltext",
+  0x222b,
+  "intersectiondisplay",
+  0x22c2,
+  "intersectiontext",
+  0x22c2,
+  "logicalanddisplay",
+  0x2227,
+  "logicalandtext",
+  0x2227,
+  "logicalordisplay",
+  0x2228,
+  "logicalortext",
+  0x2228,
+  "parenleftBig",
+  0x0028,
+  "parenleftbig",
+  0x0028,
+  "parenleftBigg",
+  0x0028,
+  "parenleftbigg",
+  0x0028,
+  "parenrightBig",
+  0x0029,
+  "parenrightbig",
+  0x0029,
+  "parenrightBigg",
+  0x0029,
+  "parenrightbigg",
+  0x0029,
+  "prime",
+  0x2032,
+  "productdisplay",
+  0x220f,
+  "producttext",
+  0x220f,
+  "radicalbig",
+  0x221a,
+  "radicalBig",
+  0x221a,
+  "radicalBigg",
+  0x221a,
+  "radicalbigg",
+  0x221a,
+  "radicalbt",
+  0x221a,
+  "radicaltp",
+  0x221a,
+  "radicalvertex",
+  0x221a,
+  "slashbig",
+  0x002f,
+  "slashBig",
+  0x002f,
+  "slashBigg",
+  0x002f,
+  "slashbigg",
+  0x002f,
+  "summationdisplay",
+  0x2211,
+  "summationtext",
+  0x2211,
+  "tildewide",
+  0x02dc,
+  "tildewider",
+  0x02dc,
+  "tildewidest",
+  0x02dc,
+  "uniondisplay",
+  0x22c3,
+  "unionmultidisplay",
+  0x228e,
+  "unionmultitext",
+  0x228e,
+  "unionsqdisplay",
+  0x2294,
+  "unionsqtext",
+  0x2294,
+  "uniontext",
+  0x22c3,
+  "vextenddouble",
+  0x2225,
+  "vextendsingle",
+  0x2223
+ ];
 });
-var getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {
- t.space = 0x0020;
- t.a1 = 0x2701;
- t.a2 = 0x2702;
- t.a202 = 0x2703;
- t.a3 = 0x2704;
- t.a4 = 0x260e;
- t.a5 = 0x2706;
- t.a119 = 0x2707;
- t.a118 = 0x2708;
- t.a117 = 0x2709;
- t.a11 = 0x261b;
- t.a12 = 0x261e;
- t.a13 = 0x270c;
- t.a14 = 0x270d;
- t.a15 = 0x270e;
- t.a16 = 0x270f;
- t.a105 = 0x2710;
- t.a17 = 0x2711;
- t.a18 = 0x2712;
- t.a19 = 0x2713;
- t.a20 = 0x2714;
- t.a21 = 0x2715;
- t.a22 = 0x2716;
- t.a23 = 0x2717;
- t.a24 = 0x2718;
- t.a25 = 0x2719;
- t.a26 = 0x271a;
- t.a27 = 0x271b;
- t.a28 = 0x271c;
- t.a6 = 0x271d;
- t.a7 = 0x271e;
- t.a8 = 0x271f;
- t.a9 = 0x2720;
- t.a10 = 0x2721;
- t.a29 = 0x2722;
- t.a30 = 0x2723;
- t.a31 = 0x2724;
- t.a32 = 0x2725;
- t.a33 = 0x2726;
- t.a34 = 0x2727;
- t.a35 = 0x2605;
- t.a36 = 0x2729;
- t.a37 = 0x272a;
- t.a38 = 0x272b;
- t.a39 = 0x272c;
- t.a40 = 0x272d;
- t.a41 = 0x272e;
- t.a42 = 0x272f;
- t.a43 = 0x2730;
- t.a44 = 0x2731;
- t.a45 = 0x2732;
- t.a46 = 0x2733;
- t.a47 = 0x2734;
- t.a48 = 0x2735;
- t.a49 = 0x2736;
- t.a50 = 0x2737;
- t.a51 = 0x2738;
- t.a52 = 0x2739;
- t.a53 = 0x273a;
- t.a54 = 0x273b;
- t.a55 = 0x273c;
- t.a56 = 0x273d;
- t.a57 = 0x273e;
- t.a58 = 0x273f;
- t.a59 = 0x2740;
- t.a60 = 0x2741;
- t.a61 = 0x2742;
- t.a62 = 0x2743;
- t.a63 = 0x2744;
- t.a64 = 0x2745;
- t.a65 = 0x2746;
- t.a66 = 0x2747;
- t.a67 = 0x2748;
- t.a68 = 0x2749;
- t.a69 = 0x274a;
- t.a70 = 0x274b;
- t.a71 = 0x25cf;
- t.a72 = 0x274d;
- t.a73 = 0x25a0;
- t.a74 = 0x274f;
- t.a203 = 0x2750;
- t.a75 = 0x2751;
- t.a204 = 0x2752;
- t.a76 = 0x25b2;
- t.a77 = 0x25bc;
- t.a78 = 0x25c6;
- t.a79 = 0x2756;
- t.a81 = 0x25d7;
- t.a82 = 0x2758;
- t.a83 = 0x2759;
- t.a84 = 0x275a;
- t.a97 = 0x275b;
- t.a98 = 0x275c;
- t.a99 = 0x275d;
- t.a100 = 0x275e;
- t.a101 = 0x2761;
- t.a102 = 0x2762;
- t.a103 = 0x2763;
- t.a104 = 0x2764;
- t.a106 = 0x2765;
- t.a107 = 0x2766;
- t.a108 = 0x2767;
- t.a112 = 0x2663;
- t.a111 = 0x2666;
- t.a110 = 0x2665;
- t.a109 = 0x2660;
- t.a120 = 0x2460;
- t.a121 = 0x2461;
- t.a122 = 0x2462;
- t.a123 = 0x2463;
- t.a124 = 0x2464;
- t.a125 = 0x2465;
- t.a126 = 0x2466;
- t.a127 = 0x2467;
- t.a128 = 0x2468;
- t.a129 = 0x2469;
- t.a130 = 0x2776;
- t.a131 = 0x2777;
- t.a132 = 0x2778;
- t.a133 = 0x2779;
- t.a134 = 0x277a;
- t.a135 = 0x277b;
- t.a136 = 0x277c;
- t.a137 = 0x277d;
- t.a138 = 0x277e;
- t.a139 = 0x277f;
- t.a140 = 0x2780;
- t.a141 = 0x2781;
- t.a142 = 0x2782;
- t.a143 = 0x2783;
- t.a144 = 0x2784;
- t.a145 = 0x2785;
- t.a146 = 0x2786;
- t.a147 = 0x2787;
- t.a148 = 0x2788;
- t.a149 = 0x2789;
- t.a150 = 0x278a;
- t.a151 = 0x278b;
- t.a152 = 0x278c;
- t.a153 = 0x278d;
- t.a154 = 0x278e;
- t.a155 = 0x278f;
- t.a156 = 0x2790;
- t.a157 = 0x2791;
- t.a158 = 0x2792;
- t.a159 = 0x2793;
- t.a160 = 0x2794;
- t.a161 = 0x2192;
- t.a163 = 0x2194;
- t.a164 = 0x2195;
- t.a196 = 0x2798;
- t.a165 = 0x2799;
- t.a192 = 0x279a;
- t.a166 = 0x279b;
- t.a167 = 0x279c;
- t.a168 = 0x279d;
- t.a169 = 0x279e;
- t.a170 = 0x279f;
- t.a171 = 0x27a0;
- t.a172 = 0x27a1;
- t.a173 = 0x27a2;
- t.a162 = 0x27a3;
- t.a174 = 0x27a4;
- t.a175 = 0x27a5;
- t.a176 = 0x27a6;
- t.a177 = 0x27a7;
- t.a178 = 0x27a8;
- t.a179 = 0x27a9;
- t.a193 = 0x27aa;
- t.a180 = 0x27ab;
- t.a199 = 0x27ac;
- t.a181 = 0x27ad;
- t.a200 = 0x27ae;
- t.a182 = 0x27af;
- t.a201 = 0x27b1;
- t.a183 = 0x27b2;
- t.a184 = 0x27b3;
- t.a197 = 0x27b4;
- t.a185 = 0x27b5;
- t.a194 = 0x27b6;
- t.a198 = 0x27b7;
- t.a186 = 0x27b8;
- t.a195 = 0x27b9;
- t.a187 = 0x27ba;
- t.a188 = 0x27bb;
- t.a189 = 0x27bc;
- t.a190 = 0x27bd;
- t.a191 = 0x27be;
- t.a89 = 0x2768;
- t.a90 = 0x2769;
- t.a93 = 0x276a;
- t.a94 = 0x276b;
- t.a91 = 0x276c;
- t.a92 = 0x276d;
- t.a205 = 0x276e;
- t.a85 = 0x276f;
- t.a206 = 0x2770;
- t.a86 = 0x2771;
- t.a87 = 0x2772;
- t.a88 = 0x2773;
- t.a95 = 0x2774;
- t.a96 = 0x2775;
- t[".notdef"] = 0x0000;
+var getDingbatsGlyphsUnicode = 
(0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
+ return [
+  "space",
+  0x0020,
+  "a1",
+  0x2701,
+  "a2",
+  0x2702,
+  "a202",
+  0x2703,
+  "a3",
+  0x2704,
+  "a4",
+  0x260e,
+  "a5",
+  0x2706,
+  "a119",
+  0x2707,
+  "a118",
+  0x2708,
+  "a117",
+  0x2709,
+  "a11",
+  0x261b,
+  "a12",
+  0x261e,
+  "a13",
+  0x270c,
+  "a14",
+  0x270d,
+  "a15",
+  0x270e,
+  "a16",
+  0x270f,
+  "a105",
+  0x2710,
+  "a17",
+  0x2711,
+  "a18",
+  0x2712,
+  "a19",
+  0x2713,
+  "a20",
+  0x2714,
+  "a21",
+  0x2715,
+  "a22",
+  0x2716,
+  "a23",
+  0x2717,
+  "a24",
+  0x2718,
+  "a25",
+  0x2719,
+  "a26",
+  0x271a,
+  "a27",
+  0x271b,
+  "a28",
+  0x271c,
+  "a6",
+  0x271d,
+  "a7",
+  0x271e,
+  "a8",
+  0x271f,
+  "a9",
+  0x2720,
+  "a10",
+  0x2721,
+  "a29",
+  0x2722,
+  "a30",
+  0x2723,
+  "a31",
+  0x2724,
+  "a32",
+  0x2725,
+  "a33",
+  0x2726,
+  "a34",
+  0x2727,
+  "a35",
+  0x2605,
+  "a36",
+  0x2729,
+  "a37",
+  0x272a,
+  "a38",
+  0x272b,
+  "a39",
+  0x272c,
+  "a40",
+  0x272d,
+  "a41",
+  0x272e,
+  "a42",
+  0x272f,
+  "a43",
+  0x2730,
+  "a44",
+  0x2731,
+  "a45",
+  0x2732,
+  "a46",
+  0x2733,
+  "a47",
+  0x2734,
+  "a48",
+  0x2735,
+  "a49",
+  0x2736,
+  "a50",
+  0x2737,
+  "a51",
+  0x2738,
+  "a52",
+  0x2739,
+  "a53",
+  0x273a,
+  "a54",
+  0x273b,
+  "a55",
+  0x273c,
+  "a56",
+  0x273d,
+  "a57",
+  0x273e,
+  "a58",
+  0x273f,
+  "a59",
+  0x2740,
+  "a60",
+  0x2741,
+  "a61",
+  0x2742,
+  "a62",
+  0x2743,
+  "a63",
+  0x2744,
+  "a64",
+  0x2745,
+  "a65",
+  0x2746,
+  "a66",
+  0x2747,
+  "a67",
+  0x2748,
+  "a68",
+  0x2749,
+  "a69",
+  0x274a,
+  "a70",
+  0x274b,
+  "a71",
+  0x25cf,
+  "a72",
+  0x274d,
+  "a73",
+  0x25a0,
+  "a74",
+  0x274f,
+  "a203",
+  0x2750,
+  "a75",
+  0x2751,
+  "a204",
+  0x2752,
+  "a76",
+  0x25b2,
+  "a77",
+  0x25bc,
+  "a78",
+  0x25c6,
+  "a79",
+  0x2756,
+  "a81",
+  0x25d7,
+  "a82",
+  0x2758,
+  "a83",
+  0x2759,
+  "a84",
+  0x275a,
+  "a97",
+  0x275b,
+  "a98",
+  0x275c,
+  "a99",
+  0x275d,
+  "a100",
+  0x275e,
+  "a101",
+  0x2761,
+  "a102",
+  0x2762,
+  "a103",
+  0x2763,
+  "a104",
+  0x2764,
+  "a106",
+  0x2765,
+  "a107",
+  0x2766,
+  "a108",
+  0x2767,
+  "a112",
+  0x2663,
+  "a111",
+  0x2666,
+  "a110",
+  0x2665,
+  "a109",
+  0x2660,
+  "a120",
+  0x2460,
+  "a121",
+  0x2461,
+  "a122",
+  0x2462,
+  "a123",
+  0x2463,
+  "a124",
+  0x2464,
+  "a125",
+  0x2465,
+  "a126",
+  0x2466,
+  "a127",
+  0x2467,
+  "a128",
+  0x2468,
+  "a129",
+  0x2469,
+  "a130",
+  0x2776,
+  "a131",
+  0x2777,
+  "a132",
+  0x2778,
+  "a133",
+  0x2779,
+  "a134",
+  0x277a,
+  "a135",
+  0x277b,
+  "a136",
+  0x277c,
+  "a137",
+  0x277d,
+  "a138",
+  0x277e,
+  "a139",
+  0x277f,
+  "a140",
+  0x2780,
+  "a141",
+  0x2781,
+  "a142",
+  0x2782,
+  "a143",
+  0x2783,
+  "a144",
+  0x2784,
+  "a145",
+  0x2785,
+  "a146",
+  0x2786,
+  "a147",
+  0x2787,
+  "a148",
+  0x2788,
+  "a149",
+  0x2789,
+  "a150",
+  0x278a,
+  "a151",
+  0x278b,
+  "a152",
+  0x278c,
+  "a153",
+  0x278d,
+  "a154",
+  0x278e,
+  "a155",
+  0x278f,
+  "a156",
+  0x2790,
+  "a157",
+  0x2791,
+  "a158",
+  0x2792,
+  "a159",
+  0x2793,
+  "a160",
+  0x2794,
+  "a161",
+  0x2192,
+  "a163",
+  0x2194,
+  "a164",
+  0x2195,
+  "a196",
+  0x2798,
+  "a165",
+  0x2799,
+  "a192",
+  0x279a,
+  "a166",
+  0x279b,
+  "a167",
+  0x279c,
+  "a168",
+  0x279d,
+  "a169",
+  0x279e,
+  "a170",
+  0x279f,
+  "a171",
+  0x27a0,
+  "a172",
+  0x27a1,
+  "a173",
+  0x27a2,
+  "a162",
+  0x27a3,
+  "a174",
+  0x27a4,
+  "a175",
+  0x27a5,
+  "a176",
+  0x27a6,
+  "a177",
+  0x27a7,
+  "a178",
+  0x27a8,
+  "a179",
+  0x27a9,
+  "a193",
+  0x27aa,
+  "a180",
+  0x27ab,
+  "a199",
+  0x27ac,
+  "a181",
+  0x27ad,
+  "a200",
+  0x27ae,
+  "a182",
+  0x27af,
+  "a201",
+  0x27b1,
+  "a183",
+  0x27b2,
+  "a184",
+  0x27b3,
+  "a197",
+  0x27b4,
+  "a185",
+  0x27b5,
+  "a194",
+  0x27b6,
+  "a198",
+  0x27b7,
+  "a186",
+  0x27b8,
+  "a195",
+  0x27b9,
+  "a187",
+  0x27ba,
+  "a188",
+  0x27bb,
+  "a189",
+  0x27bc,
+  "a190",
+  0x27bd,
+  "a191",
+  0x27be,
+  "a89",
+  0x2768,
+  "a90",
+  0x2769,
+  "a93",
+  0x276a,
+  "a94",
+  0x276b,
+  "a91",
+  0x276c,
+  "a92",
+  0x276d,
+  "a205",
+  0x276e,
+  "a85",
+  0x276f,
+  "a206",
+  0x2770,
+  "a86",
+  0x2771,
+  "a87",
+  0x2772,
+  "a88",
+  0x2773,
+  "a95",
+  0x2774,
+  "a96",
+  0x2775,
+  ".notdef",
+  0x0000
+ ];
 });
-exports.getGlyphsUnicode = getGlyphsUnicode;
-exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;
+
 
 /***/ }),
-/* 35 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 34 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = 
exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = 
exports.getNonStdFontMap = exports.getStdFontMap = void 0;
+}));
+exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = 
exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = exports.getSerifFonts = 
exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = void 0;
 
 var _core_utils = __w_pdfjs_require__(8);
 
@@ -36628,11 +41480,20 @@ const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)
 exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;
 
 /***/ }),
-/* 36 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-var getLookupTableFactory = __w_pdfjs_require__(8).getLookupTableFactory;
-var getSpecialPUASymbols = getLookupTableFactory(function (t) {
+/* 35 */
+/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
+
+__w_pdfjs_require__.r(__webpack_exports__);
+/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
+/* harmony export */   "getNormalizedUnicodes": () => /* binding */ getNormalizedUnicodes,
+/* harmony export */   "getUnicodeForGlyph": () => /* binding */ getUnicodeForGlyph,
+/* harmony export */   "getUnicodeRangeFor": () => /* binding */ getUnicodeRangeFor,
+/* harmony export */   "mapSpecialUnicodeValues": () => /* binding */ mapSpecialUnicodeValues,
+/* harmony export */   "reverseIfRtl": () => /* binding */ reverseIfRtl
+/* harmony export */ });
+/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);
+
+var getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function 
(t) {
  t[63721] = 0x00a9;
  t[63193] = 0x00a9;
  t[63720] = 0x00ae;
@@ -37208,1384 +42069,2763 @@ function isRTLRangeFor(value) {
  }
  return false;
 }
-var getNormalizedUnicodes = getLookupTableFactory(function (t) {
- t["\u00A8"] = "\u0020\u0308";
- t["\u00AF"] = "\u0020\u0304";
- t["\u00B4"] = "\u0020\u0301";
- t["\u00B5"] = "\u03BC";
- t["\u00B8"] = "\u0020\u0327";
- t["\u0132"] = "\u0049\u004A";
- t["\u0133"] = "\u0069\u006A";
- t["\u013F"] = "\u004C\u00B7";
- t["\u0140"] = "\u006C\u00B7";
- t["\u0149"] = "\u02BC\u006E";
- t["\u017F"] = "\u0073";
- t["\u01C4"] = "\u0044\u017D";
- t["\u01C5"] = "\u0044\u017E";
- t["\u01C6"] = "\u0064\u017E";
- t["\u01C7"] = "\u004C\u004A";
- t["\u01C8"] = "\u004C\u006A";
- t["\u01C9"] = "\u006C\u006A";
- t["\u01CA"] = "\u004E\u004A";
- t["\u01CB"] = "\u004E\u006A";
- t["\u01CC"] = "\u006E\u006A";
- t["\u01F1"] = "\u0044\u005A";
- t["\u01F2"] = "\u0044\u007A";
- t["\u01F3"] = "\u0064\u007A";
- t["\u02D8"] = "\u0020\u0306";
- t["\u02D9"] = "\u0020\u0307";
- t["\u02DA"] = "\u0020\u030A";
- t["\u02DB"] = "\u0020\u0328";
- t["\u02DC"] = "\u0020\u0303";
- t["\u02DD"] = "\u0020\u030B";
- t["\u037A"] = "\u0020\u0345";
- t["\u0384"] = "\u0020\u0301";
- t["\u03D0"] = "\u03B2";
- t["\u03D1"] = "\u03B8";
- t["\u03D2"] = "\u03A5";
- t["\u03D5"] = "\u03C6";
- t["\u03D6"] = "\u03C0";
- t["\u03F0"] = "\u03BA";
- t["\u03F1"] = "\u03C1";
- t["\u03F2"] = "\u03C2";
- t["\u03F4"] = "\u0398";
- t["\u03F5"] = "\u03B5";
- t["\u03F9"] = "\u03A3";
- t["\u0587"] = "\u0565\u0582";
- t["\u0675"] = "\u0627\u0674";
- t["\u0676"] = "\u0648\u0674";
- t["\u0677"] = "\u06C7\u0674";
- t["\u0678"] = "\u064A\u0674";
- t["\u0E33"] = "\u0E4D\u0E32";
- t["\u0EB3"] = "\u0ECD\u0EB2";
- t["\u0EDC"] = "\u0EAB\u0E99";
- t["\u0EDD"] = "\u0EAB\u0EA1";
- t["\u0F77"] = "\u0FB2\u0F81";
- t["\u0F79"] = "\u0FB3\u0F81";
- t["\u1E9A"] = "\u0061\u02BE";
- t["\u1FBD"] = "\u0020\u0313";
- t["\u1FBF"] = "\u0020\u0313";
- t["\u1FC0"] = "\u0020\u0342";
- t["\u1FFE"] = "\u0020\u0314";
- t["\u2002"] = "\u0020";
- t["\u2003"] = "\u0020";
- t["\u2004"] = "\u0020";
- t["\u2005"] = "\u0020";
- t["\u2006"] = "\u0020";
- t["\u2008"] = "\u0020";
- t["\u2009"] = "\u0020";
- t["\u200A"] = "\u0020";
- t["\u2017"] = "\u0020\u0333";
- t["\u2024"] = "\u002E";
- t["\u2025"] = "\u002E\u002E";
- t["\u2026"] = "\u002E\u002E\u002E";
- t["\u2033"] = "\u2032\u2032";
- t["\u2034"] = "\u2032\u2032\u2032";
- t["\u2036"] = "\u2035\u2035";
- t["\u2037"] = "\u2035\u2035\u2035";
- t["\u203C"] = "\u0021\u0021";
- t["\u203E"] = "\u0020\u0305";
- t["\u2047"] = "\u003F\u003F";
- t["\u2048"] = "\u003F\u0021";
- t["\u2049"] = "\u0021\u003F";
- t["\u2057"] = "\u2032\u2032\u2032\u2032";
- t["\u205F"] = "\u0020";
- t["\u20A8"] = "\u0052\u0073";
- t["\u2100"] = "\u0061\u002F\u0063";
- t["\u2101"] = "\u0061\u002F\u0073";
- t["\u2103"] = "\u00B0\u0043";
- t["\u2105"] = "\u0063\u002F\u006F";
- t["\u2106"] = "\u0063\u002F\u0075";
- t["\u2107"] = "\u0190";
- t["\u2109"] = "\u00B0\u0046";
- t["\u2116"] = "\u004E\u006F";
- t["\u2121"] = "\u0054\u0045\u004C";
- t["\u2135"] = "\u05D0";
- t["\u2136"] = "\u05D1";
- t["\u2137"] = "\u05D2";
- t["\u2138"] = "\u05D3";
- t["\u213B"] = "\u0046\u0041\u0058";
- t["\u2160"] = "\u0049";
- t["\u2161"] = "\u0049\u0049";
- t["\u2162"] = "\u0049\u0049\u0049";
- t["\u2163"] = "\u0049\u0056";
- t["\u2164"] = "\u0056";
- t["\u2165"] = "\u0056\u0049";
- t["\u2166"] = "\u0056\u0049\u0049";
- t["\u2167"] = "\u0056\u0049\u0049\u0049";
- t["\u2168"] = "\u0049\u0058";
- t["\u2169"] = "\u0058";
- t["\u216A"] = "\u0058\u0049";
- t["\u216B"] = "\u0058\u0049\u0049";
- t["\u216C"] = "\u004C";
- t["\u216D"] = "\u0043";
- t["\u216E"] = "\u0044";
- t["\u216F"] = "\u004D";
- t["\u2170"] = "\u0069";
- t["\u2171"] = "\u0069\u0069";
- t["\u2172"] = "\u0069\u0069\u0069";
- t["\u2173"] = "\u0069\u0076";
- t["\u2174"] = "\u0076";
- t["\u2175"] = "\u0076\u0069";
- t["\u2176"] = "\u0076\u0069\u0069";
- t["\u2177"] = "\u0076\u0069\u0069\u0069";
- t["\u2178"] = "\u0069\u0078";
- t["\u2179"] = "\u0078";
- t["\u217A"] = "\u0078\u0069";
- t["\u217B"] = "\u0078\u0069\u0069";
- t["\u217C"] = "\u006C";
- t["\u217D"] = "\u0063";
- t["\u217E"] = "\u0064";
- t["\u217F"] = "\u006D";
- t["\u222C"] = "\u222B\u222B";
- t["\u222D"] = "\u222B\u222B\u222B";
- t["\u222F"] = "\u222E\u222E";
- t["\u2230"] = "\u222E\u222E\u222E";
- t["\u2474"] = "\u0028\u0031\u0029";
- t["\u2475"] = "\u0028\u0032\u0029";
- t["\u2476"] = "\u0028\u0033\u0029";
- t["\u2477"] = "\u0028\u0034\u0029";
- t["\u2478"] = "\u0028\u0035\u0029";
- t["\u2479"] = "\u0028\u0036\u0029";
- t["\u247A"] = "\u0028\u0037\u0029";
- t["\u247B"] = "\u0028\u0038\u0029";
- t["\u247C"] = "\u0028\u0039\u0029";
- t["\u247D"] = "\u0028\u0031\u0030\u0029";
- t["\u247E"] = "\u0028\u0031\u0031\u0029";
- t["\u247F"] = "\u0028\u0031\u0032\u0029";
- t["\u2480"] = "\u0028\u0031\u0033\u0029";
- t["\u2481"] = "\u0028\u0031\u0034\u0029";
- t["\u2482"] = "\u0028\u0031\u0035\u0029";
- t["\u2483"] = "\u0028\u0031\u0036\u0029";
- t["\u2484"] = "\u0028\u0031\u0037\u0029";
- t["\u2485"] = "\u0028\u0031\u0038\u0029";
- t["\u2486"] = "\u0028\u0031\u0039\u0029";
- t["\u2487"] = "\u0028\u0032\u0030\u0029";
- t["\u2488"] = "\u0031\u002E";
- t["\u2489"] = "\u0032\u002E";
- t["\u248A"] = "\u0033\u002E";
- t["\u248B"] = "\u0034\u002E";
- t["\u248C"] = "\u0035\u002E";
- t["\u248D"] = "\u0036\u002E";
- t["\u248E"] = "\u0037\u002E";
- t["\u248F"] = "\u0038\u002E";
- t["\u2490"] = "\u0039\u002E";
- t["\u2491"] = "\u0031\u0030\u002E";
- t["\u2492"] = "\u0031\u0031\u002E";
- t["\u2493"] = "\u0031\u0032\u002E";
- t["\u2494"] = "\u0031\u0033\u002E";
- t["\u2495"] = "\u0031\u0034\u002E";
- t["\u2496"] = "\u0031\u0035\u002E";
- t["\u2497"] = "\u0031\u0036\u002E";
- t["\u2498"] = "\u0031\u0037\u002E";
- t["\u2499"] = "\u0031\u0038\u002E";
- t["\u249A"] = "\u0031\u0039\u002E";
- t["\u249B"] = "\u0032\u0030\u002E";
- t["\u249C"] = "\u0028\u0061\u0029";
- t["\u249D"] = "\u0028\u0062\u0029";
- t["\u249E"] = "\u0028\u0063\u0029";
- t["\u249F"] = "\u0028\u0064\u0029";
- t["\u24A0"] = "\u0028\u0065\u0029";
- t["\u24A1"] = "\u0028\u0066\u0029";
- t["\u24A2"] = "\u0028\u0067\u0029";
- t["\u24A3"] = "\u0028\u0068\u0029";
- t["\u24A4"] = "\u0028\u0069\u0029";
- t["\u24A5"] = "\u0028\u006A\u0029";
- t["\u24A6"] = "\u0028\u006B\u0029";
- t["\u24A7"] = "\u0028\u006C\u0029";
- t["\u24A8"] = "\u0028\u006D\u0029";
- t["\u24A9"] = "\u0028\u006E\u0029";
- t["\u24AA"] = "\u0028\u006F\u0029";
- t["\u24AB"] = "\u0028\u0070\u0029";
- t["\u24AC"] = "\u0028\u0071\u0029";
- t["\u24AD"] = "\u0028\u0072\u0029";
- t["\u24AE"] = "\u0028\u0073\u0029";
- t["\u24AF"] = "\u0028\u0074\u0029";
- t["\u24B0"] = "\u0028\u0075\u0029";
- t["\u24B1"] = "\u0028\u0076\u0029";
- t["\u24B2"] = "\u0028\u0077\u0029";
- t["\u24B3"] = "\u0028\u0078\u0029";
- t["\u24B4"] = "\u0028\u0079\u0029";
- t["\u24B5"] = "\u0028\u007A\u0029";
- t["\u2A0C"] = "\u222B\u222B\u222B\u222B";
- t["\u2A74"] = "\u003A\u003A\u003D";
- t["\u2A75"] = "\u003D\u003D";
- t["\u2A76"] = "\u003D\u003D\u003D";
- t["\u2E9F"] = "\u6BCD";
- t["\u2EF3"] = "\u9F9F";
- t["\u2F00"] = "\u4E00";
- t["\u2F01"] = "\u4E28";
- t["\u2F02"] = "\u4E36";
- t["\u2F03"] = "\u4E3F";
- t["\u2F04"] = "\u4E59";
- t["\u2F05"] = "\u4E85";
- t["\u2F06"] = "\u4E8C";
- t["\u2F07"] = "\u4EA0";
- t["\u2F08"] = "\u4EBA";
- t["\u2F09"] = "\u513F";
- t["\u2F0A"] = "\u5165";
- t["\u2F0B"] = "\u516B";
- t["\u2F0C"] = "\u5182";
- t["\u2F0D"] = "\u5196";
- t["\u2F0E"] = "\u51AB";
- t["\u2F0F"] = "\u51E0";
- t["\u2F10"] = "\u51F5";
- t["\u2F11"] = "\u5200";
- t["\u2F12"] = "\u529B";
- t["\u2F13"] = "\u52F9";
- t["\u2F14"] = "\u5315";
- t["\u2F15"] = "\u531A";
- t["\u2F16"] = "\u5338";
- t["\u2F17"] = "\u5341";
- t["\u2F18"] = "\u535C";
- t["\u2F19"] = "\u5369";
- t["\u2F1A"] = "\u5382";
- t["\u2F1B"] = "\u53B6";
- t["\u2F1C"] = "\u53C8";
- t["\u2F1D"] = "\u53E3";
- t["\u2F1E"] = "\u56D7";
- t["\u2F1F"] = "\u571F";
- t["\u2F20"] = "\u58EB";
- t["\u2F21"] = "\u5902";
- t["\u2F22"] = "\u590A";
- t["\u2F23"] = "\u5915";
- t["\u2F24"] = "\u5927";
- t["\u2F25"] = "\u5973";
- t["\u2F26"] = "\u5B50";
- t["\u2F27"] = "\u5B80";
- t["\u2F28"] = "\u5BF8";
- t["\u2F29"] = "\u5C0F";
- t["\u2F2A"] = "\u5C22";
- t["\u2F2B"] = "\u5C38";
- t["\u2F2C"] = "\u5C6E";
- t["\u2F2D"] = "\u5C71";
- t["\u2F2E"] = "\u5DDB";
- t["\u2F2F"] = "\u5DE5";
- t["\u2F30"] = "\u5DF1";
- t["\u2F31"] = "\u5DFE";
- t["\u2F32"] = "\u5E72";
- t["\u2F33"] = "\u5E7A";
- t["\u2F34"] = "\u5E7F";
- t["\u2F35"] = "\u5EF4";
- t["\u2F36"] = "\u5EFE";
- t["\u2F37"] = "\u5F0B";
- t["\u2F38"] = "\u5F13";
- t["\u2F39"] = "\u5F50";
- t["\u2F3A"] = "\u5F61";
- t["\u2F3B"] = "\u5F73";
- t["\u2F3C"] = "\u5FC3";
- t["\u2F3D"] = "\u6208";
- t["\u2F3E"] = "\u6236";
- t["\u2F3F"] = "\u624B";
- t["\u2F40"] = "\u652F";
- t["\u2F41"] = "\u6534";
- t["\u2F42"] = "\u6587";
- t["\u2F43"] = "\u6597";
- t["\u2F44"] = "\u65A4";
- t["\u2F45"] = "\u65B9";
- t["\u2F46"] = "\u65E0";
- t["\u2F47"] = "\u65E5";
- t["\u2F48"] = "\u66F0";
- t["\u2F49"] = "\u6708";
- t["\u2F4A"] = "\u6728";
- t["\u2F4B"] = "\u6B20";
- t["\u2F4C"] = "\u6B62";
- t["\u2F4D"] = "\u6B79";
- t["\u2F4E"] = "\u6BB3";
- t["\u2F4F"] = "\u6BCB";
- t["\u2F50"] = "\u6BD4";
- t["\u2F51"] = "\u6BDB";
- t["\u2F52"] = "\u6C0F";
- t["\u2F53"] = "\u6C14";
- t["\u2F54"] = "\u6C34";
- t["\u2F55"] = "\u706B";
- t["\u2F56"] = "\u722A";
- t["\u2F57"] = "\u7236";
- t["\u2F58"] = "\u723B";
- t["\u2F59"] = "\u723F";
- t["\u2F5A"] = "\u7247";
- t["\u2F5B"] = "\u7259";
- t["\u2F5C"] = "\u725B";
- t["\u2F5D"] = "\u72AC";
- t["\u2F5E"] = "\u7384";
- t["\u2F5F"] = "\u7389";
- t["\u2F60"] = "\u74DC";
- t["\u2F61"] = "\u74E6";
- t["\u2F62"] = "\u7518";
- t["\u2F63"] = "\u751F";
- t["\u2F64"] = "\u7528";
- t["\u2F65"] = "\u7530";
- t["\u2F66"] = "\u758B";
- t["\u2F67"] = "\u7592";
- t["\u2F68"] = "\u7676";
- t["\u2F69"] = "\u767D";
- t["\u2F6A"] = "\u76AE";
- t["\u2F6B"] = "\u76BF";
- t["\u2F6C"] = "\u76EE";
- t["\u2F6D"] = "\u77DB";
- t["\u2F6E"] = "\u77E2";
- t["\u2F6F"] = "\u77F3";
- t["\u2F70"] = "\u793A";
- t["\u2F71"] = "\u79B8";
- t["\u2F72"] = "\u79BE";
- t["\u2F73"] = "\u7A74";
- t["\u2F74"] = "\u7ACB";
- t["\u2F75"] = "\u7AF9";
- t["\u2F76"] = "\u7C73";
- t["\u2F77"] = "\u7CF8";
- t["\u2F78"] = "\u7F36";
- t["\u2F79"] = "\u7F51";
- t["\u2F7A"] = "\u7F8A";
- t["\u2F7B"] = "\u7FBD";
- t["\u2F7C"] = "\u8001";
- t["\u2F7D"] = "\u800C";
- t["\u2F7E"] = "\u8012";
- t["\u2F7F"] = "\u8033";
- t["\u2F80"] = "\u807F";
- t["\u2F81"] = "\u8089";
- t["\u2F82"] = "\u81E3";
- t["\u2F83"] = "\u81EA";
- t["\u2F84"] = "\u81F3";
- t["\u2F85"] = "\u81FC";
- t["\u2F86"] = "\u820C";
- t["\u2F87"] = "\u821B";
- t["\u2F88"] = "\u821F";
- t["\u2F89"] = "\u826E";
- t["\u2F8A"] = "\u8272";
- t["\u2F8B"] = "\u8278";
- t["\u2F8C"] = "\u864D";
- t["\u2F8D"] = "\u866B";
- t["\u2F8E"] = "\u8840";
- t["\u2F8F"] = "\u884C";
- t["\u2F90"] = "\u8863";
- t["\u2F91"] = "\u897E";
- t["\u2F92"] = "\u898B";
- t["\u2F93"] = "\u89D2";
- t["\u2F94"] = "\u8A00";
- t["\u2F95"] = "\u8C37";
- t["\u2F96"] = "\u8C46";
- t["\u2F97"] = "\u8C55";
- t["\u2F98"] = "\u8C78";
- t["\u2F99"] = "\u8C9D";
- t["\u2F9A"] = "\u8D64";
- t["\u2F9B"] = "\u8D70";
- t["\u2F9C"] = "\u8DB3";
- t["\u2F9D"] = "\u8EAB";
- t["\u2F9E"] = "\u8ECA";
- t["\u2F9F"] = "\u8F9B";
- t["\u2FA0"] = "\u8FB0";
- t["\u2FA1"] = "\u8FB5";
- t["\u2FA2"] = "\u9091";
- t["\u2FA3"] = "\u9149";
- t["\u2FA4"] = "\u91C6";
- t["\u2FA5"] = "\u91CC";
- t["\u2FA6"] = "\u91D1";
- t["\u2FA7"] = "\u9577";
- t["\u2FA8"] = "\u9580";
- t["\u2FA9"] = "\u961C";
- t["\u2FAA"] = "\u96B6";
- t["\u2FAB"] = "\u96B9";
- t["\u2FAC"] = "\u96E8";
- t["\u2FAD"] = "\u9751";
- t["\u2FAE"] = "\u975E";
- t["\u2FAF"] = "\u9762";
- t["\u2FB0"] = "\u9769";
- t["\u2FB1"] = "\u97CB";
- t["\u2FB2"] = "\u97ED";
- t["\u2FB3"] = "\u97F3";
- t["\u2FB4"] = "\u9801";
- t["\u2FB5"] = "\u98A8";
- t["\u2FB6"] = "\u98DB";
- t["\u2FB7"] = "\u98DF";
- t["\u2FB8"] = "\u9996";
- t["\u2FB9"] = "\u9999";
- t["\u2FBA"] = "\u99AC";
- t["\u2FBB"] = "\u9AA8";
- t["\u2FBC"] = "\u9AD8";
- t["\u2FBD"] = "\u9ADF";
- t["\u2FBE"] = "\u9B25";
- t["\u2FBF"] = "\u9B2F";
- t["\u2FC0"] = "\u9B32";
- t["\u2FC1"] = "\u9B3C";
- t["\u2FC2"] = "\u9B5A";
- t["\u2FC3"] = "\u9CE5";
- t["\u2FC4"] = "\u9E75";
- t["\u2FC5"] = "\u9E7F";
- t["\u2FC6"] = "\u9EA5";
- t["\u2FC7"] = "\u9EBB";
- t["\u2FC8"] = "\u9EC3";
- t["\u2FC9"] = "\u9ECD";
- t["\u2FCA"] = "\u9ED1";
- t["\u2FCB"] = "\u9EF9";
- t["\u2FCC"] = "\u9EFD";
- t["\u2FCD"] = "\u9F0E";
- t["\u2FCE"] = "\u9F13";
- t["\u2FCF"] = "\u9F20";
- t["\u2FD0"] = "\u9F3B";
- t["\u2FD1"] = "\u9F4A";
- t["\u2FD2"] = "\u9F52";
- t["\u2FD3"] = "\u9F8D";
- t["\u2FD4"] = "\u9F9C";
- t["\u2FD5"] = "\u9FA0";
- t["\u3036"] = "\u3012";
- t["\u3038"] = "\u5341";
- t["\u3039"] = "\u5344";
- t["\u303A"] = "\u5345";
- t["\u309B"] = "\u0020\u3099";
- t["\u309C"] = "\u0020\u309A";
- t["\u3131"] = "\u1100";
- t["\u3132"] = "\u1101";
- t["\u3133"] = "\u11AA";
- t["\u3134"] = "\u1102";
- t["\u3135"] = "\u11AC";
- t["\u3136"] = "\u11AD";
- t["\u3137"] = "\u1103";
- t["\u3138"] = "\u1104";
- t["\u3139"] = "\u1105";
- t["\u313A"] = "\u11B0";
- t["\u313B"] = "\u11B1";
- t["\u313C"] = "\u11B2";
- t["\u313D"] = "\u11B3";
- t["\u313E"] = "\u11B4";
- t["\u313F"] = "\u11B5";
- t["\u3140"] = "\u111A";
- t["\u3141"] = "\u1106";
- t["\u3142"] = "\u1107";
- t["\u3143"] = "\u1108";
- t["\u3144"] = "\u1121";
- t["\u3145"] = "\u1109";
- t["\u3146"] = "\u110A";
- t["\u3147"] = "\u110B";
- t["\u3148"] = "\u110C";
- t["\u3149"] = "\u110D";
- t["\u314A"] = "\u110E";
- t["\u314B"] = "\u110F";
- t["\u314C"] = "\u1110";
- t["\u314D"] = "\u1111";
- t["\u314E"] = "\u1112";
- t["\u314F"] = "\u1161";
- t["\u3150"] = "\u1162";
- t["\u3151"] = "\u1163";
- t["\u3152"] = "\u1164";
- t["\u3153"] = "\u1165";
- t["\u3154"] = "\u1166";
- t["\u3155"] = "\u1167";
- t["\u3156"] = "\u1168";
- t["\u3157"] = "\u1169";
- t["\u3158"] = "\u116A";
- t["\u3159"] = "\u116B";
- t["\u315A"] = "\u116C";
- t["\u315B"] = "\u116D";
- t["\u315C"] = "\u116E";
- t["\u315D"] = "\u116F";
- t["\u315E"] = "\u1170";
- t["\u315F"] = "\u1171";
- t["\u3160"] = "\u1172";
- t["\u3161"] = "\u1173";
- t["\u3162"] = "\u1174";
- t["\u3163"] = "\u1175";
- t["\u3164"] = "\u1160";
- t["\u3165"] = "\u1114";
- t["\u3166"] = "\u1115";
- t["\u3167"] = "\u11C7";
- t["\u3168"] = "\u11C8";
- t["\u3169"] = "\u11CC";
- t["\u316A"] = "\u11CE";
- t["\u316B"] = "\u11D3";
- t["\u316C"] = "\u11D7";
- t["\u316D"] = "\u11D9";
- t["\u316E"] = "\u111C";
- t["\u316F"] = "\u11DD";
- t["\u3170"] = "\u11DF";
- t["\u3171"] = "\u111D";
- t["\u3172"] = "\u111E";
- t["\u3173"] = "\u1120";
- t["\u3174"] = "\u1122";
- t["\u3175"] = "\u1123";
- t["\u3176"] = "\u1127";
- t["\u3177"] = "\u1129";
- t["\u3178"] = "\u112B";
- t["\u3179"] = "\u112C";
- t["\u317A"] = "\u112D";
- t["\u317B"] = "\u112E";
- t["\u317C"] = "\u112F";
- t["\u317D"] = "\u1132";
- t["\u317E"] = "\u1136";
- t["\u317F"] = "\u1140";
- t["\u3180"] = "\u1147";
- t["\u3181"] = "\u114C";
- t["\u3182"] = "\u11F1";
- t["\u3183"] = "\u11F2";
- t["\u3184"] = "\u1157";
- t["\u3185"] = "\u1158";
- t["\u3186"] = "\u1159";
- t["\u3187"] = "\u1184";
- t["\u3188"] = "\u1185";
- t["\u3189"] = "\u1188";
- t["\u318A"] = "\u1191";
- t["\u318B"] = "\u1192";
- t["\u318C"] = "\u1194";
- t["\u318D"] = "\u119E";
- t["\u318E"] = "\u11A1";
- t["\u3200"] = "\u0028\u1100\u0029";
- t["\u3201"] = "\u0028\u1102\u0029";
- t["\u3202"] = "\u0028\u1103\u0029";
- t["\u3203"] = "\u0028\u1105\u0029";
- t["\u3204"] = "\u0028\u1106\u0029";
- t["\u3205"] = "\u0028\u1107\u0029";
- t["\u3206"] = "\u0028\u1109\u0029";
- t["\u3207"] = "\u0028\u110B\u0029";
- t["\u3208"] = "\u0028\u110C\u0029";
- t["\u3209"] = "\u0028\u110E\u0029";
- t["\u320A"] = "\u0028\u110F\u0029";
- t["\u320B"] = "\u0028\u1110\u0029";
- t["\u320C"] = "\u0028\u1111\u0029";
- t["\u320D"] = "\u0028\u1112\u0029";
- t["\u320E"] = "\u0028\u1100\u1161\u0029";
- t["\u320F"] = "\u0028\u1102\u1161\u0029";
- t["\u3210"] = "\u0028\u1103\u1161\u0029";
- t["\u3211"] = "\u0028\u1105\u1161\u0029";
- t["\u3212"] = "\u0028\u1106\u1161\u0029";
- t["\u3213"] = "\u0028\u1107\u1161\u0029";
- t["\u3214"] = "\u0028\u1109\u1161\u0029";
- t["\u3215"] = "\u0028\u110B\u1161\u0029";
- t["\u3216"] = "\u0028\u110C\u1161\u0029";
- t["\u3217"] = "\u0028\u110E\u1161\u0029";
- t["\u3218"] = "\u0028\u110F\u1161\u0029";
- t["\u3219"] = "\u0028\u1110\u1161\u0029";
- t["\u321A"] = "\u0028\u1111\u1161\u0029";
- t["\u321B"] = "\u0028\u1112\u1161\u0029";
- t["\u321C"] = "\u0028\u110C\u116E\u0029";
- t["\u321D"] = "\u0028\u110B\u1169\u110C\u1165\u11AB\u0029";
- t["\u321E"] = "\u0028\u110B\u1169\u1112\u116E\u0029";
- t["\u3220"] = "\u0028\u4E00\u0029";
- t["\u3221"] = "\u0028\u4E8C\u0029";
- t["\u3222"] = "\u0028\u4E09\u0029";
- t["\u3223"] = "\u0028\u56DB\u0029";
- t["\u3224"] = "\u0028\u4E94\u0029";
- t["\u3225"] = "\u0028\u516D\u0029";
- t["\u3226"] = "\u0028\u4E03\u0029";
- t["\u3227"] = "\u0028\u516B\u0029";
- t["\u3228"] = "\u0028\u4E5D\u0029";
- t["\u3229"] = "\u0028\u5341\u0029";
- t["\u322A"] = "\u0028\u6708\u0029";
- t["\u322B"] = "\u0028\u706B\u0029";
- t["\u322C"] = "\u0028\u6C34\u0029";
- t["\u322D"] = "\u0028\u6728\u0029";
- t["\u322E"] = "\u0028\u91D1\u0029";
- t["\u322F"] = "\u0028\u571F\u0029";
- t["\u3230"] = "\u0028\u65E5\u0029";
- t["\u3231"] = "\u0028\u682A\u0029";
- t["\u3232"] = "\u0028\u6709\u0029";
- t["\u3233"] = "\u0028\u793E\u0029";
- t["\u3234"] = "\u0028\u540D\u0029";
- t["\u3235"] = "\u0028\u7279\u0029";
- t["\u3236"] = "\u0028\u8CA1\u0029";
- t["\u3237"] = "\u0028\u795D\u0029";
- t["\u3238"] = "\u0028\u52B4\u0029";
- t["\u3239"] = "\u0028\u4EE3\u0029";
- t["\u323A"] = "\u0028\u547C\u0029";
- t["\u323B"] = "\u0028\u5B66\u0029";
- t["\u323C"] = "\u0028\u76E3\u0029";
- t["\u323D"] = "\u0028\u4F01\u0029";
- t["\u323E"] = "\u0028\u8CC7\u0029";
- t["\u323F"] = "\u0028\u5354\u0029";
- t["\u3240"] = "\u0028\u796D\u0029";
- t["\u3241"] = "\u0028\u4F11\u0029";
- t["\u3242"] = "\u0028\u81EA\u0029";
- t["\u3243"] = "\u0028\u81F3\u0029";
- t["\u32C0"] = "\u0031\u6708";
- t["\u32C1"] = "\u0032\u6708";
- t["\u32C2"] = "\u0033\u6708";
- t["\u32C3"] = "\u0034\u6708";
- t["\u32C4"] = "\u0035\u6708";
- t["\u32C5"] = "\u0036\u6708";
- t["\u32C6"] = "\u0037\u6708";
- t["\u32C7"] = "\u0038\u6708";
- t["\u32C8"] = "\u0039\u6708";
- t["\u32C9"] = "\u0031\u0030\u6708";
- t["\u32CA"] = "\u0031\u0031\u6708";
- t["\u32CB"] = "\u0031\u0032\u6708";
- t["\u3358"] = "\u0030\u70B9";
- t["\u3359"] = "\u0031\u70B9";
- t["\u335A"] = "\u0032\u70B9";
- t["\u335B"] = "\u0033\u70B9";
- t["\u335C"] = "\u0034\u70B9";
- t["\u335D"] = "\u0035\u70B9";
- t["\u335E"] = "\u0036\u70B9";
- t["\u335F"] = "\u0037\u70B9";
- t["\u3360"] = "\u0038\u70B9";
- t["\u3361"] = "\u0039\u70B9";
- t["\u3362"] = "\u0031\u0030\u70B9";
- t["\u3363"] = "\u0031\u0031\u70B9";
- t["\u3364"] = "\u0031\u0032\u70B9";
- t["\u3365"] = "\u0031\u0033\u70B9";
- t["\u3366"] = "\u0031\u0034\u70B9";
- t["\u3367"] = "\u0031\u0035\u70B9";
- t["\u3368"] = "\u0031\u0036\u70B9";
- t["\u3369"] = "\u0031\u0037\u70B9";
- t["\u336A"] = "\u0031\u0038\u70B9";
- t["\u336B"] = "\u0031\u0039\u70B9";
- t["\u336C"] = "\u0032\u0030\u70B9";
- t["\u336D"] = "\u0032\u0031\u70B9";
- t["\u336E"] = "\u0032\u0032\u70B9";
- t["\u336F"] = "\u0032\u0033\u70B9";
- t["\u3370"] = "\u0032\u0034\u70B9";
- t["\u33E0"] = "\u0031\u65E5";
- t["\u33E1"] = "\u0032\u65E5";
- t["\u33E2"] = "\u0033\u65E5";
- t["\u33E3"] = "\u0034\u65E5";
- t["\u33E4"] = "\u0035\u65E5";
- t["\u33E5"] = "\u0036\u65E5";
- t["\u33E6"] = "\u0037\u65E5";
- t["\u33E7"] = "\u0038\u65E5";
- t["\u33E8"] = "\u0039\u65E5";
- t["\u33E9"] = "\u0031\u0030\u65E5";
- t["\u33EA"] = "\u0031\u0031\u65E5";
- t["\u33EB"] = "\u0031\u0032\u65E5";
- t["\u33EC"] = "\u0031\u0033\u65E5";
- t["\u33ED"] = "\u0031\u0034\u65E5";
- t["\u33EE"] = "\u0031\u0035\u65E5";
- t["\u33EF"] = "\u0031\u0036\u65E5";
- t["\u33F0"] = "\u0031\u0037\u65E5";
- t["\u33F1"] = "\u0031\u0038\u65E5";
- t["\u33F2"] = "\u0031\u0039\u65E5";
- t["\u33F3"] = "\u0032\u0030\u65E5";
- t["\u33F4"] = "\u0032\u0031\u65E5";
- t["\u33F5"] = "\u0032\u0032\u65E5";
- t["\u33F6"] = "\u0032\u0033\u65E5";
- t["\u33F7"] = "\u0032\u0034\u65E5";
- t["\u33F8"] = "\u0032\u0035\u65E5";
- t["\u33F9"] = "\u0032\u0036\u65E5";
- t["\u33FA"] = "\u0032\u0037\u65E5";
- t["\u33FB"] = "\u0032\u0038\u65E5";
- t["\u33FC"] = "\u0032\u0039\u65E5";
- t["\u33FD"] = "\u0033\u0030\u65E5";
- t["\u33FE"] = "\u0033\u0031\u65E5";
- t["\uFB00"] = "\u0066\u0066";
- t["\uFB01"] = "\u0066\u0069";
- t["\uFB02"] = "\u0066\u006C";
- t["\uFB03"] = "\u0066\u0066\u0069";
- t["\uFB04"] = "\u0066\u0066\u006C";
- t["\uFB05"] = "\u017F\u0074";
- t["\uFB06"] = "\u0073\u0074";
- t["\uFB13"] = "\u0574\u0576";
- t["\uFB14"] = "\u0574\u0565";
- t["\uFB15"] = "\u0574\u056B";
- t["\uFB16"] = "\u057E\u0576";
- t["\uFB17"] = "\u0574\u056D";
- t["\uFB4F"] = "\u05D0\u05DC";
- t["\uFB50"] = "\u0671";
- t["\uFB51"] = "\u0671";
- t["\uFB52"] = "\u067B";
- t["\uFB53"] = "\u067B";
- t["\uFB54"] = "\u067B";
- t["\uFB55"] = "\u067B";
- t["\uFB56"] = "\u067E";
- t["\uFB57"] = "\u067E";
- t["\uFB58"] = "\u067E";
- t["\uFB59"] = "\u067E";
- t["\uFB5A"] = "\u0680";
- t["\uFB5B"] = "\u0680";
- t["\uFB5C"] = "\u0680";
- t["\uFB5D"] = "\u0680";
- t["\uFB5E"] = "\u067A";
- t["\uFB5F"] = "\u067A";
- t["\uFB60"] = "\u067A";
- t["\uFB61"] = "\u067A";
- t["\uFB62"] = "\u067F";
- t["\uFB63"] = "\u067F";
- t["\uFB64"] = "\u067F";
- t["\uFB65"] = "\u067F";
- t["\uFB66"] = "\u0679";
- t["\uFB67"] = "\u0679";
- t["\uFB68"] = "\u0679";
- t["\uFB69"] = "\u0679";
- t["\uFB6A"] = "\u06A4";
- t["\uFB6B"] = "\u06A4";
- t["\uFB6C"] = "\u06A4";
- t["\uFB6D"] = "\u06A4";
- t["\uFB6E"] = "\u06A6";
- t["\uFB6F"] = "\u06A6";
- t["\uFB70"] = "\u06A6";
- t["\uFB71"] = "\u06A6";
- t["\uFB72"] = "\u0684";
- t["\uFB73"] = "\u0684";
- t["\uFB74"] = "\u0684";
- t["\uFB75"] = "\u0684";
- t["\uFB76"] = "\u0683";
- t["\uFB77"] = "\u0683";
- t["\uFB78"] = "\u0683";
- t["\uFB79"] = "\u0683";
- t["\uFB7A"] = "\u0686";
- t["\uFB7B"] = "\u0686";
- t["\uFB7C"] = "\u0686";
- t["\uFB7D"] = "\u0686";
- t["\uFB7E"] = "\u0687";
- t["\uFB7F"] = "\u0687";
- t["\uFB80"] = "\u0687";
- t["\uFB81"] = "\u0687";
- t["\uFB82"] = "\u068D";
- t["\uFB83"] = "\u068D";
- t["\uFB84"] = "\u068C";
- t["\uFB85"] = "\u068C";
- t["\uFB86"] = "\u068E";
- t["\uFB87"] = "\u068E";
- t["\uFB88"] = "\u0688";
- t["\uFB89"] = "\u0688";
- t["\uFB8A"] = "\u0698";
- t["\uFB8B"] = "\u0698";
- t["\uFB8C"] = "\u0691";
- t["\uFB8D"] = "\u0691";
- t["\uFB8E"] = "\u06A9";
- t["\uFB8F"] = "\u06A9";
- t["\uFB90"] = "\u06A9";
- t["\uFB91"] = "\u06A9";
- t["\uFB92"] = "\u06AF";
- t["\uFB93"] = "\u06AF";
- t["\uFB94"] = "\u06AF";
- t["\uFB95"] = "\u06AF";
- t["\uFB96"] = "\u06B3";
- t["\uFB97"] = "\u06B3";
- t["\uFB98"] = "\u06B3";
- t["\uFB99"] = "\u06B3";
- t["\uFB9A"] = "\u06B1";
- t["\uFB9B"] = "\u06B1";
- t["\uFB9C"] = "\u06B1";
- t["\uFB9D"] = "\u06B1";
- t["\uFB9E"] = "\u06BA";
- t["\uFB9F"] = "\u06BA";
- t["\uFBA0"] = "\u06BB";
- t["\uFBA1"] = "\u06BB";
- t["\uFBA2"] = "\u06BB";
- t["\uFBA3"] = "\u06BB";
- t["\uFBA4"] = "\u06C0";
- t["\uFBA5"] = "\u06C0";
- t["\uFBA6"] = "\u06C1";
- t["\uFBA7"] = "\u06C1";
- t["\uFBA8"] = "\u06C1";
- t["\uFBA9"] = "\u06C1";
- t["\uFBAA"] = "\u06BE";
- t["\uFBAB"] = "\u06BE";
- t["\uFBAC"] = "\u06BE";
- t["\uFBAD"] = "\u06BE";
- t["\uFBAE"] = "\u06D2";
- t["\uFBAF"] = "\u06D2";
- t["\uFBB0"] = "\u06D3";
- t["\uFBB1"] = "\u06D3";
- t["\uFBD3"] = "\u06AD";
- t["\uFBD4"] = "\u06AD";
- t["\uFBD5"] = "\u06AD";
- t["\uFBD6"] = "\u06AD";
- t["\uFBD7"] = "\u06C7";
- t["\uFBD8"] = "\u06C7";
- t["\uFBD9"] = "\u06C6";
- t["\uFBDA"] = "\u06C6";
- t["\uFBDB"] = "\u06C8";
- t["\uFBDC"] = "\u06C8";
- t["\uFBDD"] = "\u0677";
- t["\uFBDE"] = "\u06CB";
- t["\uFBDF"] = "\u06CB";
- t["\uFBE0"] = "\u06C5";
- t["\uFBE1"] = "\u06C5";
- t["\uFBE2"] = "\u06C9";
- t["\uFBE3"] = "\u06C9";
- t["\uFBE4"] = "\u06D0";
- t["\uFBE5"] = "\u06D0";
- t["\uFBE6"] = "\u06D0";
- t["\uFBE7"] = "\u06D0";
- t["\uFBE8"] = "\u0649";
- t["\uFBE9"] = "\u0649";
- t["\uFBEA"] = "\u0626\u0627";
- t["\uFBEB"] = "\u0626\u0627";
- t["\uFBEC"] = "\u0626\u06D5";
- t["\uFBED"] = "\u0626\u06D5";
- t["\uFBEE"] = "\u0626\u0648";
- t["\uFBEF"] = "\u0626\u0648";
- t["\uFBF0"] = "\u0626\u06C7";
- t["\uFBF1"] = "\u0626\u06C7";
- t["\uFBF2"] = "\u0626\u06C6";
- t["\uFBF3"] = "\u0626\u06C6";
- t["\uFBF4"] = "\u0626\u06C8";
- t["\uFBF5"] = "\u0626\u06C8";
- t["\uFBF6"] = "\u0626\u06D0";
- t["\uFBF7"] = "\u0626\u06D0";
- t["\uFBF8"] = "\u0626\u06D0";
- t["\uFBF9"] = "\u0626\u0649";
- t["\uFBFA"] = "\u0626\u0649";
- t["\uFBFB"] = "\u0626\u0649";
- t["\uFBFC"] = "\u06CC";
- t["\uFBFD"] = "\u06CC";
- t["\uFBFE"] = "\u06CC";
- t["\uFBFF"] = "\u06CC";
- t["\uFC00"] = "\u0626\u062C";
- t["\uFC01"] = "\u0626\u062D";
- t["\uFC02"] = "\u0626\u0645";
- t["\uFC03"] = "\u0626\u0649";
- t["\uFC04"] = "\u0626\u064A";
- t["\uFC05"] = "\u0628\u062C";
- t["\uFC06"] = "\u0628\u062D";
- t["\uFC07"] = "\u0628\u062E";
- t["\uFC08"] = "\u0628\u0645";
- t["\uFC09"] = "\u0628\u0649";
- t["\uFC0A"] = "\u0628\u064A";
- t["\uFC0B"] = "\u062A\u062C";
- t["\uFC0C"] = "\u062A\u062D";
- t["\uFC0D"] = "\u062A\u062E";
- t["\uFC0E"] = "\u062A\u0645";
- t["\uFC0F"] = "\u062A\u0649";
- t["\uFC10"] = "\u062A\u064A";
- t["\uFC11"] = "\u062B\u062C";
- t["\uFC12"] = "\u062B\u0645";
- t["\uFC13"] = "\u062B\u0649";
- t["\uFC14"] = "\u062B\u064A";
- t["\uFC15"] = "\u062C\u062D";
- t["\uFC16"] = "\u062C\u0645";
- t["\uFC17"] = "\u062D\u062C";
- t["\uFC18"] = "\u062D\u0645";
- t["\uFC19"] = "\u062E\u062C";
- t["\uFC1A"] = "\u062E\u062D";
- t["\uFC1B"] = "\u062E\u0645";
- t["\uFC1C"] = "\u0633\u062C";
- t["\uFC1D"] = "\u0633\u062D";
- t["\uFC1E"] = "\u0633\u062E";
- t["\uFC1F"] = "\u0633\u0645";
- t["\uFC20"] = "\u0635\u062D";
- t["\uFC21"] = "\u0635\u0645";
- t["\uFC22"] = "\u0636\u062C";
- t["\uFC23"] = "\u0636\u062D";
- t["\uFC24"] = "\u0636\u062E";
- t["\uFC25"] = "\u0636\u0645";
- t["\uFC26"] = "\u0637\u062D";
- t["\uFC27"] = "\u0637\u0645";
- t["\uFC28"] = "\u0638\u0645";
- t["\uFC29"] = "\u0639\u062C";
- t["\uFC2A"] = "\u0639\u0645";
- t["\uFC2B"] = "\u063A\u062C";
- t["\uFC2C"] = "\u063A\u0645";
- t["\uFC2D"] = "\u0641\u062C";
- t["\uFC2E"] = "\u0641\u062D";
- t["\uFC2F"] = "\u0641\u062E";
- t["\uFC30"] = "\u0641\u0645";
- t["\uFC31"] = "\u0641\u0649";
- t["\uFC32"] = "\u0641\u064A";
- t["\uFC33"] = "\u0642\u062D";
- t["\uFC34"] = "\u0642\u0645";
- t["\uFC35"] = "\u0642\u0649";
- t["\uFC36"] = "\u0642\u064A";
- t["\uFC37"] = "\u0643\u0627";
- t["\uFC38"] = "\u0643\u062C";
- t["\uFC39"] = "\u0643\u062D";
- t["\uFC3A"] = "\u0643\u062E";
- t["\uFC3B"] = "\u0643\u0644";
- t["\uFC3C"] = "\u0643\u0645";
- t["\uFC3D"] = "\u0643\u0649";
- t["\uFC3E"] = "\u0643\u064A";
- t["\uFC3F"] = "\u0644\u062C";
- t["\uFC40"] = "\u0644\u062D";
- t["\uFC41"] = "\u0644\u062E";
- t["\uFC42"] = "\u0644\u0645";
- t["\uFC43"] = "\u0644\u0649";
- t["\uFC44"] = "\u0644\u064A";
- t["\uFC45"] = "\u0645\u062C";
- t["\uFC46"] = "\u0645\u062D";
- t["\uFC47"] = "\u0645\u062E";
- t["\uFC48"] = "\u0645\u0645";
- t["\uFC49"] = "\u0645\u0649";
- t["\uFC4A"] = "\u0645\u064A";
- t["\uFC4B"] = "\u0646\u062C";
- t["\uFC4C"] = "\u0646\u062D";
- t["\uFC4D"] = "\u0646\u062E";
- t["\uFC4E"] = "\u0646\u0645";
- t["\uFC4F"] = "\u0646\u0649";
- t["\uFC50"] = "\u0646\u064A";
- t["\uFC51"] = "\u0647\u062C";
- t["\uFC52"] = "\u0647\u0645";
- t["\uFC53"] = "\u0647\u0649";
- t["\uFC54"] = "\u0647\u064A";
- t["\uFC55"] = "\u064A\u062C";
- t["\uFC56"] = "\u064A\u062D";
- t["\uFC57"] = "\u064A\u062E";
- t["\uFC58"] = "\u064A\u0645";
- t["\uFC59"] = "\u064A\u0649";
- t["\uFC5A"] = "\u064A\u064A";
- t["\uFC5B"] = "\u0630\u0670";
- t["\uFC5C"] = "\u0631\u0670";
- t["\uFC5D"] = "\u0649\u0670";
- t["\uFC5E"] = "\u0020\u064C\u0651";
- t["\uFC5F"] = "\u0020\u064D\u0651";
- t["\uFC60"] = "\u0020\u064E\u0651";
- t["\uFC61"] = "\u0020\u064F\u0651";
- t["\uFC62"] = "\u0020\u0650\u0651";
- t["\uFC63"] = "\u0020\u0651\u0670";
- t["\uFC64"] = "\u0626\u0631";
- t["\uFC65"] = "\u0626\u0632";
- t["\uFC66"] = "\u0626\u0645";
- t["\uFC67"] = "\u0626\u0646";
- t["\uFC68"] = "\u0626\u0649";
- t["\uFC69"] = "\u0626\u064A";
- t["\uFC6A"] = "\u0628\u0631";
- t["\uFC6B"] = "\u0628\u0632";
- t["\uFC6C"] = "\u0628\u0645";
- t["\uFC6D"] = "\u0628\u0646";
- t["\uFC6E"] = "\u0628\u0649";
- t["\uFC6F"] = "\u0628\u064A";
- t["\uFC70"] = "\u062A\u0631";
- t["\uFC71"] = "\u062A\u0632";
- t["\uFC72"] = "\u062A\u0645";
- t["\uFC73"] = "\u062A\u0646";
- t["\uFC74"] = "\u062A\u0649";
- t["\uFC75"] = "\u062A\u064A";
- t["\uFC76"] = "\u062B\u0631";
- t["\uFC77"] = "\u062B\u0632";
- t["\uFC78"] = "\u062B\u0645";
- t["\uFC79"] = "\u062B\u0646";
- t["\uFC7A"] = "\u062B\u0649";
- t["\uFC7B"] = "\u062B\u064A";
- t["\uFC7C"] = "\u0641\u0649";
- t["\uFC7D"] = "\u0641\u064A";
- t["\uFC7E"] = "\u0642\u0649";
- t["\uFC7F"] = "\u0642\u064A";
- t["\uFC80"] = "\u0643\u0627";
- t["\uFC81"] = "\u0643\u0644";
- t["\uFC82"] = "\u0643\u0645";
- t["\uFC83"] = "\u0643\u0649";
- t["\uFC84"] = "\u0643\u064A";
- t["\uFC85"] = "\u0644\u0645";
- t["\uFC86"] = "\u0644\u0649";
- t["\uFC87"] = "\u0644\u064A";
- t["\uFC88"] = "\u0645\u0627";
- t["\uFC89"] = "\u0645\u0645";
- t["\uFC8A"] = "\u0646\u0631";
- t["\uFC8B"] = "\u0646\u0632";
- t["\uFC8C"] = "\u0646\u0645";
- t["\uFC8D"] = "\u0646\u0646";
- t["\uFC8E"] = "\u0646\u0649";
- t["\uFC8F"] = "\u0646\u064A";
- t["\uFC90"] = "\u0649\u0670";
- t["\uFC91"] = "\u064A\u0631";
- t["\uFC92"] = "\u064A\u0632";
- t["\uFC93"] = "\u064A\u0645";
- t["\uFC94"] = "\u064A\u0646";
- t["\uFC95"] = "\u064A\u0649";
- t["\uFC96"] = "\u064A\u064A";
- t["\uFC97"] = "\u0626\u062C";
- t["\uFC98"] = "\u0626\u062D";
- t["\uFC99"] = "\u0626\u062E";
- t["\uFC9A"] = "\u0626\u0645";
- t["\uFC9B"] = "\u0626\u0647";
- t["\uFC9C"] = "\u0628\u062C";
- t["\uFC9D"] = "\u0628\u062D";
- t["\uFC9E"] = "\u0628\u062E";
- t["\uFC9F"] = "\u0628\u0645";
- t["\uFCA0"] = "\u0628\u0647";
- t["\uFCA1"] = "\u062A\u062C";
- t["\uFCA2"] = "\u062A\u062D";
- t["\uFCA3"] = "\u062A\u062E";
- t["\uFCA4"] = "\u062A\u0645";
- t["\uFCA5"] = "\u062A\u0647";
- t["\uFCA6"] = "\u062B\u0645";
- t["\uFCA7"] = "\u062C\u062D";
- t["\uFCA8"] = "\u062C\u0645";
- t["\uFCA9"] = "\u062D\u062C";
- t["\uFCAA"] = "\u062D\u0645";
- t["\uFCAB"] = "\u062E\u062C";
- t["\uFCAC"] = "\u062E\u0645";
- t["\uFCAD"] = "\u0633\u062C";
- t["\uFCAE"] = "\u0633\u062D";
- t["\uFCAF"] = "\u0633\u062E";
- t["\uFCB0"] = "\u0633\u0645";
- t["\uFCB1"] = "\u0635\u062D";
- t["\uFCB2"] = "\u0635\u062E";
- t["\uFCB3"] = "\u0635\u0645";
- t["\uFCB4"] = "\u0636\u062C";
- t["\uFCB5"] = "\u0636\u062D";
- t["\uFCB6"] = "\u0636\u062E";
- t["\uFCB7"] = "\u0636\u0645";
- t["\uFCB8"] = "\u0637\u062D";
- t["\uFCB9"] = "\u0638\u0645";
- t["\uFCBA"] = "\u0639\u062C";
- t["\uFCBB"] = "\u0639\u0645";
- t["\uFCBC"] = "\u063A\u062C";
- t["\uFCBD"] = "\u063A\u0645";
- t["\uFCBE"] = "\u0641\u062C";
- t["\uFCBF"] = "\u0641\u062D";
- t["\uFCC0"] = "\u0641\u062E";
- t["\uFCC1"] = "\u0641\u0645";
- t["\uFCC2"] = "\u0642\u062D";
- t["\uFCC3"] = "\u0642\u0645";
- t["\uFCC4"] = "\u0643\u062C";
- t["\uFCC5"] = "\u0643\u062D";
- t["\uFCC6"] = "\u0643\u062E";
- t["\uFCC7"] = "\u0643\u0644";
- t["\uFCC8"] = "\u0643\u0645";
- t["\uFCC9"] = "\u0644\u062C";
- t["\uFCCA"] = "\u0644\u062D";
- t["\uFCCB"] = "\u0644\u062E";
- t["\uFCCC"] = "\u0644\u0645";
- t["\uFCCD"] = "\u0644\u0647";
- t["\uFCCE"] = "\u0645\u062C";
- t["\uFCCF"] = "\u0645\u062D";
- t["\uFCD0"] = "\u0645\u062E";
- t["\uFCD1"] = "\u0645\u0645";
- t["\uFCD2"] = "\u0646\u062C";
- t["\uFCD3"] = "\u0646\u062D";
- t["\uFCD4"] = "\u0646\u062E";
- t["\uFCD5"] = "\u0646\u0645";
- t["\uFCD6"] = "\u0646\u0647";
- t["\uFCD7"] = "\u0647\u062C";
- t["\uFCD8"] = "\u0647\u0645";
- t["\uFCD9"] = "\u0647\u0670";
- t["\uFCDA"] = "\u064A\u062C";
- t["\uFCDB"] = "\u064A\u062D";
- t["\uFCDC"] = "\u064A\u062E";
- t["\uFCDD"] = "\u064A\u0645";
- t["\uFCDE"] = "\u064A\u0647";
- t["\uFCDF"] = "\u0626\u0645";
- t["\uFCE0"] = "\u0626\u0647";
- t["\uFCE1"] = "\u0628\u0645";
- t["\uFCE2"] = "\u0628\u0647";
- t["\uFCE3"] = "\u062A\u0645";
- t["\uFCE4"] = "\u062A\u0647";
- t["\uFCE5"] = "\u062B\u0645";
- t["\uFCE6"] = "\u062B\u0647";
- t["\uFCE7"] = "\u0633\u0645";
- t["\uFCE8"] = "\u0633\u0647";
- t["\uFCE9"] = "\u0634\u0645";
- t["\uFCEA"] = "\u0634\u0647";
- t["\uFCEB"] = "\u0643\u0644";
- t["\uFCEC"] = "\u0643\u0645";
- t["\uFCED"] = "\u0644\u0645";
- t["\uFCEE"] = "\u0646\u0645";
- t["\uFCEF"] = "\u0646\u0647";
- t["\uFCF0"] = "\u064A\u0645";
- t["\uFCF1"] = "\u064A\u0647";
- t["\uFCF2"] = "\u0640\u064E\u0651";
- t["\uFCF3"] = "\u0640\u064F\u0651";
- t["\uFCF4"] = "\u0640\u0650\u0651";
- t["\uFCF5"] = "\u0637\u0649";
- t["\uFCF6"] = "\u0637\u064A";
- t["\uFCF7"] = "\u0639\u0649";
- t["\uFCF8"] = "\u0639\u064A";
- t["\uFCF9"] = "\u063A\u0649";
- t["\uFCFA"] = "\u063A\u064A";
- t["\uFCFB"] = "\u0633\u0649";
- t["\uFCFC"] = "\u0633\u064A";
- t["\uFCFD"] = "\u0634\u0649";
- t["\uFCFE"] = "\u0634\u064A";
- t["\uFCFF"] = "\u062D\u0649";
- t["\uFD00"] = "\u062D\u064A";
- t["\uFD01"] = "\u062C\u0649";
- t["\uFD02"] = "\u062C\u064A";
- t["\uFD03"] = "\u062E\u0649";
- t["\uFD04"] = "\u062E\u064A";
- t["\uFD05"] = "\u0635\u0649";
- t["\uFD06"] = "\u0635\u064A";
- t["\uFD07"] = "\u0636\u0649";
- t["\uFD08"] = "\u0636\u064A";
- t["\uFD09"] = "\u0634\u062C";
- t["\uFD0A"] = "\u0634\u062D";
- t["\uFD0B"] = "\u0634\u062E";
- t["\uFD0C"] = "\u0634\u0645";
- t["\uFD0D"] = "\u0634\u0631";
- t["\uFD0E"] = "\u0633\u0631";
- t["\uFD0F"] = "\u0635\u0631";
- t["\uFD10"] = "\u0636\u0631";
- t["\uFD11"] = "\u0637\u0649";
- t["\uFD12"] = "\u0637\u064A";
- t["\uFD13"] = "\u0639\u0649";
- t["\uFD14"] = "\u0639\u064A";
- t["\uFD15"] = "\u063A\u0649";
- t["\uFD16"] = "\u063A\u064A";
- t["\uFD17"] = "\u0633\u0649";
- t["\uFD18"] = "\u0633\u064A";
- t["\uFD19"] = "\u0634\u0649";
- t["\uFD1A"] = "\u0634\u064A";
- t["\uFD1B"] = "\u062D\u0649";
- t["\uFD1C"] = "\u062D\u064A";
- t["\uFD1D"] = "\u062C\u0649";
- t["\uFD1E"] = "\u062C\u064A";
- t["\uFD1F"] = "\u062E\u0649";
- t["\uFD20"] = "\u062E\u064A";
- t["\uFD21"] = "\u0635\u0649";
- t["\uFD22"] = "\u0635\u064A";
- t["\uFD23"] = "\u0636\u0649";
- t["\uFD24"] = "\u0636\u064A";
- t["\uFD25"] = "\u0634\u062C";
- t["\uFD26"] = "\u0634\u062D";
- t["\uFD27"] = "\u0634\u062E";
- t["\uFD28"] = "\u0634\u0645";
- t["\uFD29"] = "\u0634\u0631";
- t["\uFD2A"] = "\u0633\u0631";
- t["\uFD2B"] = "\u0635\u0631";
- t["\uFD2C"] = "\u0636\u0631";
- t["\uFD2D"] = "\u0634\u062C";
- t["\uFD2E"] = "\u0634\u062D";
- t["\uFD2F"] = "\u0634\u062E";
- t["\uFD30"] = "\u0634\u0645";
- t["\uFD31"] = "\u0633\u0647";
- t["\uFD32"] = "\u0634\u0647";
- t["\uFD33"] = "\u0637\u0645";
- t["\uFD34"] = "\u0633\u062C";
- t["\uFD35"] = "\u0633\u062D";
- t["\uFD36"] = "\u0633\u062E";
- t["\uFD37"] = "\u0634\u062C";
- t["\uFD38"] = "\u0634\u062D";
- t["\uFD39"] = "\u0634\u062E";
- t["\uFD3A"] = "\u0637\u0645";
- t["\uFD3B"] = "\u0638\u0645";
- t["\uFD3C"] = "\u0627\u064B";
- t["\uFD3D"] = "\u0627\u064B";
- t["\uFD50"] = "\u062A\u062C\u0645";
- t["\uFD51"] = "\u062A\u062D\u062C";
- t["\uFD52"] = "\u062A\u062D\u062C";
- t["\uFD53"] = "\u062A\u062D\u0645";
- t["\uFD54"] = "\u062A\u062E\u0645";
- t["\uFD55"] = "\u062A\u0645\u062C";
- t["\uFD56"] = "\u062A\u0645\u062D";
- t["\uFD57"] = "\u062A\u0645\u062E";
- t["\uFD58"] = "\u062C\u0645\u062D";
- t["\uFD59"] = "\u062C\u0645\u062D";
- t["\uFD5A"] = "\u062D\u0645\u064A";
- t["\uFD5B"] = "\u062D\u0645\u0649";
- t["\uFD5C"] = "\u0633\u062D\u062C";
- t["\uFD5D"] = "\u0633\u062C\u062D";
- t["\uFD5E"] = "\u0633\u062C\u0649";
- t["\uFD5F"] = "\u0633\u0645\u062D";
- t["\uFD60"] = "\u0633\u0645\u062D";
- t["\uFD61"] = "\u0633\u0645\u062C";
- t["\uFD62"] = "\u0633\u0645\u0645";
- t["\uFD63"] = "\u0633\u0645\u0645";
- t["\uFD64"] = "\u0635\u062D\u062D";
- t["\uFD65"] = "\u0635\u062D\u062D";
- t["\uFD66"] = "\u0635\u0645\u0645";
- t["\uFD67"] = "\u0634\u062D\u0645";
- t["\uFD68"] = "\u0634\u062D\u0645";
- t["\uFD69"] = "\u0634\u062C\u064A";
- t["\uFD6A"] = "\u0634\u0645\u062E";
- t["\uFD6B"] = "\u0634\u0645\u062E";
- t["\uFD6C"] = "\u0634\u0645\u0645";
- t["\uFD6D"] = "\u0634\u0645\u0645";
- t["\uFD6E"] = "\u0636\u062D\u0649";
- t["\uFD6F"] = "\u0636\u062E\u0645";
- t["\uFD70"] = "\u0636\u062E\u0645";
- t["\uFD71"] = "\u0637\u0645\u062D";
- t["\uFD72"] = "\u0637\u0645\u062D";
- t["\uFD73"] = "\u0637\u0645\u0645";
- t["\uFD74"] = "\u0637\u0645\u064A";
- t["\uFD75"] = "\u0639\u062C\u0645";
- t["\uFD76"] = "\u0639\u0645\u0645";
- t["\uFD77"] = "\u0639\u0645\u0645";
- t["\uFD78"] = "\u0639\u0645\u0649";
- t["\uFD79"] = "\u063A\u0645\u0645";
- t["\uFD7A"] = "\u063A\u0645\u064A";
- t["\uFD7B"] = "\u063A\u0645\u0649";
- t["\uFD7C"] = "\u0641\u062E\u0645";
- t["\uFD7D"] = "\u0641\u062E\u0645";
- t["\uFD7E"] = "\u0642\u0645\u062D";
- t["\uFD7F"] = "\u0642\u0645\u0645";
- t["\uFD80"] = "\u0644\u062D\u0645";
- t["\uFD81"] = "\u0644\u062D\u064A";
- t["\uFD82"] = "\u0644\u062D\u0649";
- t["\uFD83"] = "\u0644\u062C\u062C";
- t["\uFD84"] = "\u0644\u062C\u062C";
- t["\uFD85"] = "\u0644\u062E\u0645";
- t["\uFD86"] = "\u0644\u062E\u0645";
- t["\uFD87"] = "\u0644\u0645\u062D";
- t["\uFD88"] = "\u0644\u0645\u062D";
- t["\uFD89"] = "\u0645\u062D\u062C";
- t["\uFD8A"] = "\u0645\u062D\u0645";
- t["\uFD8B"] = "\u0645\u062D\u064A";
- t["\uFD8C"] = "\u0645\u062C\u062D";
- t["\uFD8D"] = "\u0645\u062C\u0645";
- t["\uFD8E"] = "\u0645\u062E\u062C";
- t["\uFD8F"] = "\u0645\u062E\u0645";
- t["\uFD92"] = "\u0645\u062C\u062E";
- t["\uFD93"] = "\u0647\u0645\u062C";
- t["\uFD94"] = "\u0647\u0645\u0645";
- t["\uFD95"] = "\u0646\u062D\u0645";
- t["\uFD96"] = "\u0646\u062D\u0649";
- t["\uFD97"] = "\u0646\u062C\u0645";
- t["\uFD98"] = "\u0646\u062C\u0645";
- t["\uFD99"] = "\u0646\u062C\u0649";
- t["\uFD9A"] = "\u0646\u0645\u064A";
- t["\uFD9B"] = "\u0646\u0645\u0649";
- t["\uFD9C"] = "\u064A\u0645\u0645";
- t["\uFD9D"] = "\u064A\u0645\u0645";
- t["\uFD9E"] = "\u0628\u062E\u064A";
- t["\uFD9F"] = "\u062A\u062C\u064A";
- t["\uFDA0"] = "\u062A\u062C\u0649";
- t["\uFDA1"] = "\u062A\u062E\u064A";
- t["\uFDA2"] = "\u062A\u062E\u0649";
- t["\uFDA3"] = "\u062A\u0645\u064A";
- t["\uFDA4"] = "\u062A\u0645\u0649";
- t["\uFDA5"] = "\u062C\u0645\u064A";
- t["\uFDA6"] = "\u062C\u062D\u0649";
- t["\uFDA7"] = "\u062C\u0645\u0649";
- t["\uFDA8"] = "\u0633\u062E\u0649";
- t["\uFDA9"] = "\u0635\u062D\u064A";
- t["\uFDAA"] = "\u0634\u062D\u064A";
- t["\uFDAB"] = "\u0636\u062D\u064A";
- t["\uFDAC"] = "\u0644\u062C\u064A";
- t["\uFDAD"] = "\u0644\u0645\u064A";
- t["\uFDAE"] = "\u064A\u062D\u064A";
- t["\uFDAF"] = "\u064A\u062C\u064A";
- t["\uFDB0"] = "\u064A\u0645\u064A";
- t["\uFDB1"] = "\u0645\u0645\u064A";
- t["\uFDB2"] = "\u0642\u0645\u064A";
- t["\uFDB3"] = "\u0646\u062D\u064A";
- t["\uFDB4"] = "\u0642\u0645\u062D";
- t["\uFDB5"] = "\u0644\u062D\u0645";
- t["\uFDB6"] = "\u0639\u0645\u064A";
- t["\uFDB7"] = "\u0643\u0645\u064A";
- t["\uFDB8"] = "\u0646\u062C\u062D";
- t["\uFDB9"] = "\u0645\u062E\u064A";
- t["\uFDBA"] = "\u0644\u062C\u0645";
- t["\uFDBB"] = "\u0643\u0645\u0645";
- t["\uFDBC"] = "\u0644\u062C\u0645";
- t["\uFDBD"] = "\u0646\u062C\u062D";
- t["\uFDBE"] = "\u062C\u062D\u064A";
- t["\uFDBF"] = "\u062D\u062C\u064A";
- t["\uFDC0"] = "\u0645\u062C\u064A";
- t["\uFDC1"] = "\u0641\u0645\u064A";
- t["\uFDC2"] = "\u0628\u062D\u064A";
- t["\uFDC3"] = "\u0643\u0645\u0645";
- t["\uFDC4"] = "\u0639\u062C\u0645";
- t["\uFDC5"] = "\u0635\u0645\u0645";
- t["\uFDC6"] = "\u0633\u062E\u064A";
- t["\uFDC7"] = "\u0646\u062C\u064A";
- t["\uFE49"] = "\u203E";
- t["\uFE4A"] = "\u203E";
- t["\uFE4B"] = "\u203E";
- t["\uFE4C"] = "\u203E";
- t["\uFE4D"] = "\u005F";
- t["\uFE4E"] = "\u005F";
- t["\uFE4F"] = "\u005F";
- t["\uFE80"] = "\u0621";
- t["\uFE81"] = "\u0622";
- t["\uFE82"] = "\u0622";
- t["\uFE83"] = "\u0623";
- t["\uFE84"] = "\u0623";
- t["\uFE85"] = "\u0624";
- t["\uFE86"] = "\u0624";
- t["\uFE87"] = "\u0625";
- t["\uFE88"] = "\u0625";
- t["\uFE89"] = "\u0626";
- t["\uFE8A"] = "\u0626";
- t["\uFE8B"] = "\u0626";
- t["\uFE8C"] = "\u0626";
- t["\uFE8D"] = "\u0627";
- t["\uFE8E"] = "\u0627";
- t["\uFE8F"] = "\u0628";
- t["\uFE90"] = "\u0628";
- t["\uFE91"] = "\u0628";
- t["\uFE92"] = "\u0628";
- t["\uFE93"] = "\u0629";
- t["\uFE94"] = "\u0629";
- t["\uFE95"] = "\u062A";
- t["\uFE96"] = "\u062A";
- t["\uFE97"] = "\u062A";
- t["\uFE98"] = "\u062A";
- t["\uFE99"] = "\u062B";
- t["\uFE9A"] = "\u062B";
- t["\uFE9B"] = "\u062B";
- t["\uFE9C"] = "\u062B";
- t["\uFE9D"] = "\u062C";
- t["\uFE9E"] = "\u062C";
- t["\uFE9F"] = "\u062C";
- t["\uFEA0"] = "\u062C";
- t["\uFEA1"] = "\u062D";
- t["\uFEA2"] = "\u062D";
- t["\uFEA3"] = "\u062D";
- t["\uFEA4"] = "\u062D";
- t["\uFEA5"] = "\u062E";
- t["\uFEA6"] = "\u062E";
- t["\uFEA7"] = "\u062E";
- t["\uFEA8"] = "\u062E";
- t["\uFEA9"] = "\u062F";
- t["\uFEAA"] = "\u062F";
- t["\uFEAB"] = "\u0630";
- t["\uFEAC"] = "\u0630";
- t["\uFEAD"] = "\u0631";
- t["\uFEAE"] = "\u0631";
- t["\uFEAF"] = "\u0632";
- t["\uFEB0"] = "\u0632";
- t["\uFEB1"] = "\u0633";
- t["\uFEB2"] = "\u0633";
- t["\uFEB3"] = "\u0633";
- t["\uFEB4"] = "\u0633";
- t["\uFEB5"] = "\u0634";
- t["\uFEB6"] = "\u0634";
- t["\uFEB7"] = "\u0634";
- t["\uFEB8"] = "\u0634";
- t["\uFEB9"] = "\u0635";
- t["\uFEBA"] = "\u0635";
- t["\uFEBB"] = "\u0635";
- t["\uFEBC"] = "\u0635";
- t["\uFEBD"] = "\u0636";
- t["\uFEBE"] = "\u0636";
- t["\uFEBF"] = "\u0636";
- t["\uFEC0"] = "\u0636";
- t["\uFEC1"] = "\u0637";
- t["\uFEC2"] = "\u0637";
- t["\uFEC3"] = "\u0637";
- t["\uFEC4"] = "\u0637";
- t["\uFEC5"] = "\u0638";
- t["\uFEC6"] = "\u0638";
- t["\uFEC7"] = "\u0638";
- t["\uFEC8"] = "\u0638";
- t["\uFEC9"] = "\u0639";
- t["\uFECA"] = "\u0639";
- t["\uFECB"] = "\u0639";
- t["\uFECC"] = "\u0639";
- t["\uFECD"] = "\u063A";
- t["\uFECE"] = "\u063A";
- t["\uFECF"] = "\u063A";
- t["\uFED0"] = "\u063A";
- t["\uFED1"] = "\u0641";
- t["\uFED2"] = "\u0641";
- t["\uFED3"] = "\u0641";
- t["\uFED4"] = "\u0641";
- t["\uFED5"] = "\u0642";
- t["\uFED6"] = "\u0642";
- t["\uFED7"] = "\u0642";
- t["\uFED8"] = "\u0642";
- t["\uFED9"] = "\u0643";
- t["\uFEDA"] = "\u0643";
- t["\uFEDB"] = "\u0643";
- t["\uFEDC"] = "\u0643";
- t["\uFEDD"] = "\u0644";
- t["\uFEDE"] = "\u0644";
- t["\uFEDF"] = "\u0644";
- t["\uFEE0"] = "\u0644";
- t["\uFEE1"] = "\u0645";
- t["\uFEE2"] = "\u0645";
- t["\uFEE3"] = "\u0645";
- t["\uFEE4"] = "\u0645";
- t["\uFEE5"] = "\u0646";
- t["\uFEE6"] = "\u0646";
- t["\uFEE7"] = "\u0646";
- t["\uFEE8"] = "\u0646";
- t["\uFEE9"] = "\u0647";
- t["\uFEEA"] = "\u0647";
- t["\uFEEB"] = "\u0647";
- t["\uFEEC"] = "\u0647";
- t["\uFEED"] = "\u0648";
- t["\uFEEE"] = "\u0648";
- t["\uFEEF"] = "\u0649";
- t["\uFEF0"] = "\u0649";
- t["\uFEF1"] = "\u064A";
- t["\uFEF2"] = "\u064A";
- t["\uFEF3"] = "\u064A";
- t["\uFEF4"] = "\u064A";
- t["\uFEF5"] = "\u0644\u0622";
- t["\uFEF6"] = "\u0644\u0622";
- t["\uFEF7"] = "\u0644\u0623";
- t["\uFEF8"] = "\u0644\u0623";
- t["\uFEF9"] = "\u0644\u0625";
- t["\uFEFA"] = "\u0644\u0625";
- t["\uFEFB"] = "\u0644\u0627";
- t["\uFEFC"] = "\u0644\u0627";
+var getNormalizedUnicodes = 
(0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
+ return [
+  "\u00A8",
+  "\u0020\u0308",
+  "\u00AF",
+  "\u0020\u0304",
+  "\u00B4",
+  "\u0020\u0301",
+  "\u00B5",
+  "\u03BC",
+  "\u00B8",
+  "\u0020\u0327",
+  "\u0132",
+  "\u0049\u004A",
+  "\u0133",
+  "\u0069\u006A",
+  "\u013F",
+  "\u004C\u00B7",
+  "\u0140",
+  "\u006C\u00B7",
+  "\u0149",
+  "\u02BC\u006E",
+  "\u017F",
+  "\u0073",
+  "\u01C4",
+  "\u0044\u017D",
+  "\u01C5",
+  "\u0044\u017E",
+  "\u01C6",
+  "\u0064\u017E",
+  "\u01C7",
+  "\u004C\u004A",
+  "\u01C8",
+  "\u004C\u006A",
+  "\u01C9",
+  "\u006C\u006A",
+  "\u01CA",
+  "\u004E\u004A",
+  "\u01CB",
+  "\u004E\u006A",
+  "\u01CC",
+  "\u006E\u006A",
+  "\u01F1",
+  "\u0044\u005A",
+  "\u01F2",
+  "\u0044\u007A",
+  "\u01F3",
+  "\u0064\u007A",
+  "\u02D8",
+  "\u0020\u0306",
+  "\u02D9",
+  "\u0020\u0307",
+  "\u02DA",
+  "\u0020\u030A",
+  "\u02DB",
+  "\u0020\u0328",
+  "\u02DC",
+  "\u0020\u0303",
+  "\u02DD",
+  "\u0020\u030B",
+  "\u037A",
+  "\u0020\u0345",
+  "\u0384",
+  "\u0020\u0301",
+  "\u03D0",
+  "\u03B2",
+  "\u03D1",
+  "\u03B8",
+  "\u03D2",
+  "\u03A5",
+  "\u03D5",
+  "\u03C6",
+  "\u03D6",
+  "\u03C0",
+  "\u03F0",
+  "\u03BA",
+  "\u03F1",
+  "\u03C1",
+  "\u03F2",
+  "\u03C2",
+  "\u03F4",
+  "\u0398",
+  "\u03F5",
+  "\u03B5",
+  "\u03F9",
+  "\u03A3",
+  "\u0587",
+  "\u0565\u0582",
+  "\u0675",
+  "\u0627\u0674",
+  "\u0676",
+  "\u0648\u0674",
+  "\u0677",
+  "\u06C7\u0674",
+  "\u0678",
+  "\u064A\u0674",
+  "\u0E33",
+  "\u0E4D\u0E32",
+  "\u0EB3",
+  "\u0ECD\u0EB2",
+  "\u0EDC",
+  "\u0EAB\u0E99",
+  "\u0EDD",
+  "\u0EAB\u0EA1",
+  "\u0F77",
+  "\u0FB2\u0F81",
+  "\u0F79",
+  "\u0FB3\u0F81",
+  "\u1E9A",
+  "\u0061\u02BE",
+  "\u1FBD",
+  "\u0020\u0313",
+  "\u1FBF",
+  "\u0020\u0313",
+  "\u1FC0",
+  "\u0020\u0342",
+  "\u1FFE",
+  "\u0020\u0314",
+  "\u2002",
+  "\u0020",
+  "\u2003",
+  "\u0020",
+  "\u2004",
+  "\u0020",
+  "\u2005",
+  "\u0020",
+  "\u2006",
+  "\u0020",
+  "\u2008",
+  "\u0020",
+  "\u2009",
+  "\u0020",
+  "\u200A",
+  "\u0020",
+  "\u2017",
+  "\u0020\u0333",
+  "\u2024",
+  "\u002E",
+  "\u2025",
+  "\u002E\u002E",
+  "\u2026",
+  "\u002E\u002E\u002E",
+  "\u2033",
+  "\u2032\u2032",
+  "\u2034",
+  "\u2032\u2032\u2032",
+  "\u2036",
+  "\u2035\u2035",
+  "\u2037",
+  "\u2035\u2035\u2035",
+  "\u203C",
+  "\u0021\u0021",
+  "\u203E",
+  "\u0020\u0305",
+  "\u2047",
+  "\u003F\u003F",
+  "\u2048",
+  "\u003F\u0021",
+  "\u2049",
+  "\u0021\u003F",
+  "\u2057",
+  "\u2032\u2032\u2032\u2032",
+  "\u205F",
+  "\u0020",
+  "\u20A8",
+  "\u0052\u0073",
+  "\u2100",
+  "\u0061\u002F\u0063",
+  "\u2101",
+  "\u0061\u002F\u0073",
+  "\u2103",
+  "\u00B0\u0043",
+  "\u2105",
+  "\u0063\u002F\u006F",
+  "\u2106",
+  "\u0063\u002F\u0075",
+  "\u2107",
+  "\u0190",
+  "\u2109",
+  "\u00B0\u0046",
+  "\u2116",
+  "\u004E\u006F",
+  "\u2121",
+  "\u0054\u0045\u004C",
+  "\u2135",
+  "\u05D0",
+  "\u2136",
+  "\u05D1",
+  "\u2137",
+  "\u05D2",
+  "\u2138",
+  "\u05D3",
+  "\u213B",
+  "\u0046\u0041\u0058",
+  "\u2160",
+  "\u0049",
+  "\u2161",
+  "\u0049\u0049",
+  "\u2162",
+  "\u0049\u0049\u0049",
+  "\u2163",
+  "\u0049\u0056",
+  "\u2164",
+  "\u0056",
+  "\u2165",
+  "\u0056\u0049",
+  "\u2166",
+  "\u0056\u0049\u0049",
+  "\u2167",
+  "\u0056\u0049\u0049\u0049",
+  "\u2168",
+  "\u0049\u0058",
+  "\u2169",
+  "\u0058",
+  "\u216A",
+  "\u0058\u0049",
+  "\u216B",
+  "\u0058\u0049\u0049",
+  "\u216C",
+  "\u004C",
+  "\u216D",
+  "\u0043",
+  "\u216E",
+  "\u0044",
+  "\u216F",
+  "\u004D",
+  "\u2170",
+  "\u0069",
+  "\u2171",
+  "\u0069\u0069",
+  "\u2172",
+  "\u0069\u0069\u0069",
+  "\u2173",
+  "\u0069\u0076",
+  "\u2174",
+  "\u0076",
+  "\u2175",
+  "\u0076\u0069",
+  "\u2176",
+  "\u0076\u0069\u0069",
+  "\u2177",
+  "\u0076\u0069\u0069\u0069",
+  "\u2178",
+  "\u0069\u0078",
+  "\u2179",
+  "\u0078",
+  "\u217A",
+  "\u0078\u0069",
+  "\u217B",
+  "\u0078\u0069\u0069",
+  "\u217C",
+  "\u006C",
+  "\u217D",
+  "\u0063",
+  "\u217E",
+  "\u0064",
+  "\u217F",
+  "\u006D",
+  "\u222C",
+  "\u222B\u222B",
+  "\u222D",
+  "\u222B\u222B\u222B",
+  "\u222F",
+  "\u222E\u222E",
+  "\u2230",
+  "\u222E\u222E\u222E",
+  "\u2474",
+  "\u0028\u0031\u0029",
+  "\u2475",
+  "\u0028\u0032\u0029",
+  "\u2476",
+  "\u0028\u0033\u0029",
+  "\u2477",
+  "\u0028\u0034\u0029",
+  "\u2478",
+  "\u0028\u0035\u0029",
+  "\u2479",
+  "\u0028\u0036\u0029",
+  "\u247A",
+  "\u0028\u0037\u0029",
+  "\u247B",
+  "\u0028\u0038\u0029",
+  "\u247C",
+  "\u0028\u0039\u0029",
+  "\u247D",
+  "\u0028\u0031\u0030\u0029",
+  "\u247E",
+  "\u0028\u0031\u0031\u0029",
+  "\u247F",
+  "\u0028\u0031\u0032\u0029",
+  "\u2480",
+  "\u0028\u0031\u0033\u0029",
+  "\u2481",
+  "\u0028\u0031\u0034\u0029",
+  "\u2482",
+  "\u0028\u0031\u0035\u0029",
+  "\u2483",
+  "\u0028\u0031\u0036\u0029",
+  "\u2484",
+  "\u0028\u0031\u0037\u0029",
+  "\u2485",
+  "\u0028\u0031\u0038\u0029",
+  "\u2486",
+  "\u0028\u0031\u0039\u0029",
+  "\u2487",
+  "\u0028\u0032\u0030\u0029",
+  "\u2488",
+  "\u0031\u002E",
+  "\u2489",
+  "\u0032\u002E",
+  "\u248A",
+  "\u0033\u002E",
+  "\u248B",
+  "\u0034\u002E",
+  "\u248C",
+  "\u0035\u002E",
+  "\u248D",
+  "\u0036\u002E",
+  "\u248E",
+  "\u0037\u002E",
+  "\u248F",
+  "\u0038\u002E",
+  "\u2490",
+  "\u0039\u002E",
+  "\u2491",
+  "\u0031\u0030\u002E",
+  "\u2492",
+  "\u0031\u0031\u002E",
+  "\u2493",
+  "\u0031\u0032\u002E",
+  "\u2494",
+  "\u0031\u0033\u002E",
+  "\u2495",
+  "\u0031\u0034\u002E",
+  "\u2496",
+  "\u0031\u0035\u002E",
+  "\u2497",
+  "\u0031\u0036\u002E",
+  "\u2498",
+  "\u0031\u0037\u002E",
+  "\u2499",
+  "\u0031\u0038\u002E",
+  "\u249A",
+  "\u0031\u0039\u002E",
+  "\u249B",
+  "\u0032\u0030\u002E",
+  "\u249C",
+  "\u0028\u0061\u0029",
+  "\u249D",
+  "\u0028\u0062\u0029",
+  "\u249E",
+  "\u0028\u0063\u0029",
+  "\u249F",
+  "\u0028\u0064\u0029",
+  "\u24A0",
+  "\u0028\u0065\u0029",
+  "\u24A1",
+  "\u0028\u0066\u0029",
+  "\u24A2",
+  "\u0028\u0067\u0029",
+  "\u24A3",
+  "\u0028\u0068\u0029",
+  "\u24A4",
+  "\u0028\u0069\u0029",
+  "\u24A5",
+  "\u0028\u006A\u0029",
+  "\u24A6",
+  "\u0028\u006B\u0029",
+  "\u24A7",
+  "\u0028\u006C\u0029",
+  "\u24A8",
+  "\u0028\u006D\u0029",
+  "\u24A9",
+  "\u0028\u006E\u0029",
+  "\u24AA",
+  "\u0028\u006F\u0029",
+  "\u24AB",
+  "\u0028\u0070\u0029",
+  "\u24AC",
+  "\u0028\u0071\u0029",
+  "\u24AD",
+  "\u0028\u0072\u0029",
+  "\u24AE",
+  "\u0028\u0073\u0029",
+  "\u24AF",
+  "\u0028\u0074\u0029",
+  "\u24B0",
+  "\u0028\u0075\u0029",
+  "\u24B1",
+  "\u0028\u0076\u0029",
+  "\u24B2",
+  "\u0028\u0077\u0029",
+  "\u24B3",
+  "\u0028\u0078\u0029",
+  "\u24B4",
+  "\u0028\u0079\u0029",
+  "\u24B5",
+  "\u0028\u007A\u0029",
+  "\u2A0C",
+  "\u222B\u222B\u222B\u222B",
+  "\u2A74",
+  "\u003A\u003A\u003D",
+  "\u2A75",
+  "\u003D\u003D",
+  "\u2A76",
+  "\u003D\u003D\u003D",
+  "\u2E9F",
+  "\u6BCD",
+  "\u2EF3",
+  "\u9F9F",
+  "\u2F00",
+  "\u4E00",
+  "\u2F01",
+  "\u4E28",
+  "\u2F02",
+  "\u4E36",
+  "\u2F03",
+  "\u4E3F",
+  "\u2F04",
+  "\u4E59",
+  "\u2F05",
+  "\u4E85",
+  "\u2F06",
+  "\u4E8C",
+  "\u2F07",
+  "\u4EA0",
+  "\u2F08",
+  "\u4EBA",
+  "\u2F09",
+  "\u513F",
+  "\u2F0A",
+  "\u5165",
+  "\u2F0B",
+  "\u516B",
+  "\u2F0C",
+  "\u5182",
+  "\u2F0D",
+  "\u5196",
+  "\u2F0E",
+  "\u51AB",
+  "\u2F0F",
+  "\u51E0",
+  "\u2F10",
+  "\u51F5",
+  "\u2F11",
+  "\u5200",
+  "\u2F12",
+  "\u529B",
+  "\u2F13",
+  "\u52F9",
+  "\u2F14",
+  "\u5315",
+  "\u2F15",
+  "\u531A",
+  "\u2F16",
+  "\u5338",
+  "\u2F17",
+  "\u5341",
+  "\u2F18",
+  "\u535C",
+  "\u2F19",
+  "\u5369",
+  "\u2F1A",
+  "\u5382",
+  "\u2F1B",
+  "\u53B6",
+  "\u2F1C",
+  "\u53C8",
+  "\u2F1D",
+  "\u53E3",
+  "\u2F1E",
+  "\u56D7",
+  "\u2F1F",
+  "\u571F",
+  "\u2F20",
+  "\u58EB",
+  "\u2F21",
+  "\u5902",
+  "\u2F22",
+  "\u590A",
+  "\u2F23",
+  "\u5915",
+  "\u2F24",
+  "\u5927",
+  "\u2F25",
+  "\u5973",
+  "\u2F26",
+  "\u5B50",
+  "\u2F27",
+  "\u5B80",
+  "\u2F28",
+  "\u5BF8",
+  "\u2F29",
+  "\u5C0F",
+  "\u2F2A",
+  "\u5C22",
+  "\u2F2B",
+  "\u5C38",
+  "\u2F2C",
+  "\u5C6E",
+  "\u2F2D",
+  "\u5C71",
+  "\u2F2E",
+  "\u5DDB",
+  "\u2F2F",
+  "\u5DE5",
+  "\u2F30",
+  "\u5DF1",
+  "\u2F31",
+  "\u5DFE",
+  "\u2F32",
+  "\u5E72",
+  "\u2F33",
+  "\u5E7A",
+  "\u2F34",
+  "\u5E7F",
+  "\u2F35",
+  "\u5EF4",
+  "\u2F36",
+  "\u5EFE",
+  "\u2F37",
+  "\u5F0B",
+  "\u2F38",
+  "\u5F13",
+  "\u2F39",
+  "\u5F50",
+  "\u2F3A",
+  "\u5F61",
+  "\u2F3B",
+  "\u5F73",
+  "\u2F3C",
+  "\u5FC3",
+  "\u2F3D",
+  "\u6208",
+  "\u2F3E",
+  "\u6236",
+  "\u2F3F",
+  "\u624B",
+  "\u2F40",
+  "\u652F",
+  "\u2F41",
+  "\u6534",
+  "\u2F42",
+  "\u6587",
+  "\u2F43",
+  "\u6597",
+  "\u2F44",
+  "\u65A4",
+  "\u2F45",
+  "\u65B9",
+  "\u2F46",
+  "\u65E0",
+  "\u2F47",
+  "\u65E5",
+  "\u2F48",
+  "\u66F0",
+  "\u2F49",
+  "\u6708",
+  "\u2F4A",
+  "\u6728",
+  "\u2F4B",
+  "\u6B20",
+  "\u2F4C",
+  "\u6B62",
+  "\u2F4D",
+  "\u6B79",
+  "\u2F4E",
+  "\u6BB3",
+  "\u2F4F",
+  "\u6BCB",
+  "\u2F50",
+  "\u6BD4",
+  "\u2F51",
+  "\u6BDB",
+  "\u2F52",
+  "\u6C0F",
+  "\u2F53",
+  "\u6C14",
+  "\u2F54",
+  "\u6C34",
+  "\u2F55",
+  "\u706B",
+  "\u2F56",
+  "\u722A",
+  "\u2F57",
+  "\u7236",
+  "\u2F58",
+  "\u723B",
+  "\u2F59",
+  "\u723F",
+  "\u2F5A",
+  "\u7247",
+  "\u2F5B",
+  "\u7259",
+  "\u2F5C",
+  "\u725B",
+  "\u2F5D",
+  "\u72AC",
+  "\u2F5E",
+  "\u7384",
+  "\u2F5F",
+  "\u7389",
+  "\u2F60",
+  "\u74DC",
+  "\u2F61",
+  "\u74E6",
+  "\u2F62",
+  "\u7518",
+  "\u2F63",
+  "\u751F",
+  "\u2F64",
+  "\u7528",
+  "\u2F65",
+  "\u7530",
+  "\u2F66",
+  "\u758B",
+  "\u2F67",
+  "\u7592",
+  "\u2F68",
+  "\u7676",
+  "\u2F69",
+  "\u767D",
+  "\u2F6A",
+  "\u76AE",
+  "\u2F6B",
+  "\u76BF",
+  "\u2F6C",
+  "\u76EE",
+  "\u2F6D",
+  "\u77DB",
+  "\u2F6E",
+  "\u77E2",
+  "\u2F6F",
+  "\u77F3",
+  "\u2F70",
+  "\u793A",
+  "\u2F71",
+  "\u79B8",
+  "\u2F72",
+  "\u79BE",
+  "\u2F73",
+  "\u7A74",
+  "\u2F74",
+  "\u7ACB",
+  "\u2F75",
+  "\u7AF9",
+  "\u2F76",
+  "\u7C73",
+  "\u2F77",
+  "\u7CF8",
+  "\u2F78",
+  "\u7F36",
+  "\u2F79",
+  "\u7F51",
+  "\u2F7A",
+  "\u7F8A",
+  "\u2F7B",
+  "\u7FBD",
+  "\u2F7C",
+  "\u8001",
+  "\u2F7D",
+  "\u800C",
+  "\u2F7E",
+  "\u8012",
+  "\u2F7F",
+  "\u8033",
+  "\u2F80",
+  "\u807F",
+  "\u2F81",
+  "\u8089",
+  "\u2F82",
+  "\u81E3",
+  "\u2F83",
+  "\u81EA",
+  "\u2F84",
+  "\u81F3",
+  "\u2F85",
+  "\u81FC",
+  "\u2F86",
+  "\u820C",
+  "\u2F87",
+  "\u821B",
+  "\u2F88",
+  "\u821F",
+  "\u2F89",
+  "\u826E",
+  "\u2F8A",
+  "\u8272",
+  "\u2F8B",
+  "\u8278",
+  "\u2F8C",
+  "\u864D",
+  "\u2F8D",
+  "\u866B",
+  "\u2F8E",
+  "\u8840",
+  "\u2F8F",
+  "\u884C",
+  "\u2F90",
+  "\u8863",
+  "\u2F91",
+  "\u897E",
+  "\u2F92",
+  "\u898B",
+  "\u2F93",
+  "\u89D2",
+  "\u2F94",
+  "\u8A00",
+  "\u2F95",
+  "\u8C37",
+  "\u2F96",
+  "\u8C46",
+  "\u2F97",
+  "\u8C55",
+  "\u2F98",
+  "\u8C78",
+  "\u2F99",
+  "\u8C9D",
+  "\u2F9A",
+  "\u8D64",
+  "\u2F9B",
+  "\u8D70",
+  "\u2F9C",
+  "\u8DB3",
+  "\u2F9D",
+  "\u8EAB",
+  "\u2F9E",
+  "\u8ECA",
+  "\u2F9F",
+  "\u8F9B",
+  "\u2FA0",
+  "\u8FB0",
+  "\u2FA1",
+  "\u8FB5",
+  "\u2FA2",
+  "\u9091",
+  "\u2FA3",
+  "\u9149",
+  "\u2FA4",
+  "\u91C6",
+  "\u2FA5",
+  "\u91CC",
+  "\u2FA6",
+  "\u91D1",
+  "\u2FA7",
+  "\u9577",
+  "\u2FA8",
+  "\u9580",
+  "\u2FA9",
+  "\u961C",
+  "\u2FAA",
+  "\u96B6",
+  "\u2FAB",
+  "\u96B9",
+  "\u2FAC",
+  "\u96E8",
+  "\u2FAD",
+  "\u9751",
+  "\u2FAE",
+  "\u975E",
+  "\u2FAF",
+  "\u9762",
+  "\u2FB0",
+  "\u9769",
+  "\u2FB1",
+  "\u97CB",
+  "\u2FB2",
+  "\u97ED",
+  "\u2FB3",
+  "\u97F3",
+  "\u2FB4",
+  "\u9801",
+  "\u2FB5",
+  "\u98A8",
+  "\u2FB6",
+  "\u98DB",
+  "\u2FB7",
+  "\u98DF",
+  "\u2FB8",
+  "\u9996",
+  "\u2FB9",
+  "\u9999",
+  "\u2FBA",
+  "\u99AC",
+  "\u2FBB",
+  "\u9AA8",
+  "\u2FBC",
+  "\u9AD8",
+  "\u2FBD",
+  "\u9ADF",
+  "\u2FBE",
+  "\u9B25",
+  "\u2FBF",
+  "\u9B2F",
+  "\u2FC0",
+  "\u9B32",
+  "\u2FC1",
+  "\u9B3C",
+  "\u2FC2",
+  "\u9B5A",
+  "\u2FC3",
+  "\u9CE5",
+  "\u2FC4",
+  "\u9E75",
+  "\u2FC5",
+  "\u9E7F",
+  "\u2FC6",
+  "\u9EA5",
+  "\u2FC7",
+  "\u9EBB",
+  "\u2FC8",
+  "\u9EC3",
+  "\u2FC9",
+  "\u9ECD",
+  "\u2FCA",
+  "\u9ED1",
+  "\u2FCB",
+  "\u9EF9",
+  "\u2FCC",
+  "\u9EFD",
+  "\u2FCD",
+  "\u9F0E",
+  "\u2FCE",
+  "\u9F13",
+  "\u2FCF",
+  "\u9F20",
+  "\u2FD0",
+  "\u9F3B",
+  "\u2FD1",
+  "\u9F4A",
+  "\u2FD2",
+  "\u9F52",
+  "\u2FD3",
+  "\u9F8D",
+  "\u2FD4",
+  "\u9F9C",
+  "\u2FD5",
+  "\u9FA0",
+  "\u3036",
+  "\u3012",
+  "\u3038",
+  "\u5341",
+  "\u3039",
+  "\u5344",
+  "\u303A",
+  "\u5345",
+  "\u309B",
+  "\u0020\u3099",
+  "\u309C",
+  "\u0020\u309A",
+  "\u3131",
+  "\u1100",
+  "\u3132",
+  "\u1101",
+  "\u3133",
+  "\u11AA",
+  "\u3134",
+  "\u1102",
+  "\u3135",
+  "\u11AC",
+  "\u3136",
+  "\u11AD",
+  "\u3137",
+  "\u1103",
+  "\u3138",
+  "\u1104",
+  "\u3139",
+  "\u1105",
+  "\u313A",
+  "\u11B0",
+  "\u313B",
+  "\u11B1",
+  "\u313C",
+  "\u11B2",
+  "\u313D",
+  "\u11B3",
+  "\u313E",
+  "\u11B4",
+  "\u313F",
+  "\u11B5",
+  "\u3140",
+  "\u111A",
+  "\u3141",
+  "\u1106",
+  "\u3142",
+  "\u1107",
+  "\u3143",
+  "\u1108",
+  "\u3144",
+  "\u1121",
+  "\u3145",
+  "\u1109",
+  "\u3146",
+  "\u110A",
+  "\u3147",
+  "\u110B",
+  "\u3148",
+  "\u110C",
+  "\u3149",
+  "\u110D",
+  "\u314A",
+  "\u110E",
+  "\u314B",
+  "\u110F",
+  "\u314C",
+  "\u1110",
+  "\u314D",
+  "\u1111",
+  "\u314E",
+  "\u1112",
+  "\u314F",
+  "\u1161",
+  "\u3150",
+  "\u1162",
+  "\u3151",
+  "\u1163",
+  "\u3152",
+  "\u1164",
+  "\u3153",
+  "\u1165",
+  "\u3154",
+  "\u1166",
+  "\u3155",
+  "\u1167",
+  "\u3156",
+  "\u1168",
+  "\u3157",
+  "\u1169",
+  "\u3158",
+  "\u116A",
+  "\u3159",
+  "\u116B",
+  "\u315A",
+  "\u116C",
+  "\u315B",
+  "\u116D",
+  "\u315C",
+  "\u116E",
+  "\u315D",
+  "\u116F",
+  "\u315E",
+  "\u1170",
+  "\u315F",
+  "\u1171",
+  "\u3160",
+  "\u1172",
+  "\u3161",
+  "\u1173",
+  "\u3162",
+  "\u1174",
+  "\u3163",
+  "\u1175",
+  "\u3164",
+  "\u1160",
+  "\u3165",
+  "\u1114",
+  "\u3166",
+  "\u1115",
+  "\u3167",
+  "\u11C7",
+  "\u3168",
+  "\u11C8",
+  "\u3169",
+  "\u11CC",
+  "\u316A",
+  "\u11CE",
+  "\u316B",
+  "\u11D3",
+  "\u316C",
+  "\u11D7",
+  "\u316D",
+  "\u11D9",
+  "\u316E",
+  "\u111C",
+  "\u316F",
+  "\u11DD",
+  "\u3170",
+  "\u11DF",
+  "\u3171",
+  "\u111D",
+  "\u3172",
+  "\u111E",
+  "\u3173",
+  "\u1120",
+  "\u3174",
+  "\u1122",
+  "\u3175",
+  "\u1123",
+  "\u3176",
+  "\u1127",
+  "\u3177",
+  "\u1129",
+  "\u3178",
+  "\u112B",
+  "\u3179",
+  "\u112C",
+  "\u317A",
+  "\u112D",
+  "\u317B",
+  "\u112E",
+  "\u317C",
+  "\u112F",
+  "\u317D",
+  "\u1132",
+  "\u317E",
+  "\u1136",
+  "\u317F",
+  "\u1140",
+  "\u3180",
+  "\u1147",
+  "\u3181",
+  "\u114C",
+  "\u3182",
+  "\u11F1",
+  "\u3183",
+  "\u11F2",
+  "\u3184",
+  "\u1157",
+  "\u3185",
+  "\u1158",
+  "\u3186",
+  "\u1159",
+  "\u3187",
+  "\u1184",
+  "\u3188",
+  "\u1185",
+  "\u3189",
+  "\u1188",
+  "\u318A",
+  "\u1191",
+  "\u318B",
+  "\u1192",
+  "\u318C",
+  "\u1194",
+  "\u318D",
+  "\u119E",
+  "\u318E",
+  "\u11A1",
+  "\u3200",
+  "\u0028\u1100\u0029",
+  "\u3201",
+  "\u0028\u1102\u0029",
+  "\u3202",
+  "\u0028\u1103\u0029",
+  "\u3203",
+  "\u0028\u1105\u0029",
+  "\u3204",
+  "\u0028\u1106\u0029",
+  "\u3205",
+  "\u0028\u1107\u0029",
+  "\u3206",
+  "\u0028\u1109\u0029",
+  "\u3207",
+  "\u0028\u110B\u0029",
+  "\u3208",
+  "\u0028\u110C\u0029",
+  "\u3209",
+  "\u0028\u110E\u0029",
+  "\u320A",
+  "\u0028\u110F\u0029",
+  "\u320B",
+  "\u0028\u1110\u0029",
+  "\u320C",
+  "\u0028\u1111\u0029",
+  "\u320D",
+  "\u0028\u1112\u0029",
+  "\u320E",
+  "\u0028\u1100\u1161\u0029",
+  "\u320F",
+  "\u0028\u1102\u1161\u0029",
+  "\u3210",
+  "\u0028\u1103\u1161\u0029",
+  "\u3211",
+  "\u0028\u1105\u1161\u0029",
+  "\u3212",
+  "\u0028\u1106\u1161\u0029",
+  "\u3213",
+  "\u0028\u1107\u1161\u0029",
+  "\u3214",
+  "\u0028\u1109\u1161\u0029",
+  "\u3215",
+  "\u0028\u110B\u1161\u0029",
+  "\u3216",
+  "\u0028\u110C\u1161\u0029",
+  "\u3217",
+  "\u0028\u110E\u1161\u0029",
+  "\u3218",
+  "\u0028\u110F\u1161\u0029",
+  "\u3219",
+  "\u0028\u1110\u1161\u0029",
+  "\u321A",
+  "\u0028\u1111\u1161\u0029",
+  "\u321B",
+  "\u0028\u1112\u1161\u0029",
+  "\u321C",
+  "\u0028\u110C\u116E\u0029",
+  "\u321D",
+  "\u0028\u110B\u1169\u110C\u1165\u11AB\u0029",
+  "\u321E",
+  "\u0028\u110B\u1169\u1112\u116E\u0029",
+  "\u3220",
+  "\u0028\u4E00\u0029",
+  "\u3221",
+  "\u0028\u4E8C\u0029",
+  "\u3222",
+  "\u0028\u4E09\u0029",
+  "\u3223",
+  "\u0028\u56DB\u0029",
+  "\u3224",
+  "\u0028\u4E94\u0029",
+  "\u3225",
+  "\u0028\u516D\u0029",
+  "\u3226",
+  "\u0028\u4E03\u0029",
+  "\u3227",
+  "\u0028\u516B\u0029",
+  "\u3228",
+  "\u0028\u4E5D\u0029",
+  "\u3229",
+  "\u0028\u5341\u0029",
+  "\u322A",
+  "\u0028\u6708\u0029",
+  "\u322B",
+  "\u0028\u706B\u0029",
+  "\u322C",
+  "\u0028\u6C34\u0029",
+  "\u322D",
+  "\u0028\u6728\u0029",
+  "\u322E",
+  "\u0028\u91D1\u0029",
+  "\u322F",
+  "\u0028\u571F\u0029",
+  "\u3230",
+  "\u0028\u65E5\u0029",
+  "\u3231",
+  "\u0028\u682A\u0029",
+  "\u3232",
+  "\u0028\u6709\u0029",
+  "\u3233",
+  "\u0028\u793E\u0029",
+  "\u3234",
+  "\u0028\u540D\u0029",
+  "\u3235",
+  "\u0028\u7279\u0029",
+  "\u3236",
+  "\u0028\u8CA1\u0029",
+  "\u3237",
+  "\u0028\u795D\u0029",
+  "\u3238",
+  "\u0028\u52B4\u0029",
+  "\u3239",
+  "\u0028\u4EE3\u0029",
+  "\u323A",
+  "\u0028\u547C\u0029",
+  "\u323B",
+  "\u0028\u5B66\u0029",
+  "\u323C",
+  "\u0028\u76E3\u0029",
+  "\u323D",
+  "\u0028\u4F01\u0029",
+  "\u323E",
+  "\u0028\u8CC7\u0029",
+  "\u323F",
+  "\u0028\u5354\u0029",
+  "\u3240",
+  "\u0028\u796D\u0029",
+  "\u3241",
+  "\u0028\u4F11\u0029",
+  "\u3242",
+  "\u0028\u81EA\u0029",
+  "\u3243",
+  "\u0028\u81F3\u0029",
+  "\u32C0",
+  "\u0031\u6708",
+  "\u32C1",
+  "\u0032\u6708",
+  "\u32C2",
+  "\u0033\u6708",
+  "\u32C3",
+  "\u0034\u6708",
+  "\u32C4",
+  "\u0035\u6708",
+  "\u32C5",
+  "\u0036\u6708",
+  "\u32C6",
+  "\u0037\u6708",
+  "\u32C7",
+  "\u0038\u6708",
+  "\u32C8",
+  "\u0039\u6708",
+  "\u32C9",
+  "\u0031\u0030\u6708",
+  "\u32CA",
+  "\u0031\u0031\u6708",
+  "\u32CB",
+  "\u0031\u0032\u6708",
+  "\u3358",
+  "\u0030\u70B9",
+  "\u3359",
+  "\u0031\u70B9",
+  "\u335A",
+  "\u0032\u70B9",
+  "\u335B",
+  "\u0033\u70B9",
+  "\u335C",
+  "\u0034\u70B9",
+  "\u335D",
+  "\u0035\u70B9",
+  "\u335E",
+  "\u0036\u70B9",
+  "\u335F",
+  "\u0037\u70B9",
+  "\u3360",
+  "\u0038\u70B9",
+  "\u3361",
+  "\u0039\u70B9",
+  "\u3362",
+  "\u0031\u0030\u70B9",
+  "\u3363",
+  "\u0031\u0031\u70B9",
+  "\u3364",
+  "\u0031\u0032\u70B9",
+  "\u3365",
+  "\u0031\u0033\u70B9",
+  "\u3366",
+  "\u0031\u0034\u70B9",
+  "\u3367",
+  "\u0031\u0035\u70B9",
+  "\u3368",
+  "\u0031\u0036\u70B9",
+  "\u3369",
+  "\u0031\u0037\u70B9",
+  "\u336A",
+  "\u0031\u0038\u70B9",
+  "\u336B",
+  "\u0031\u0039\u70B9",
+  "\u336C",
+  "\u0032\u0030\u70B9",
+  "\u336D",
+  "\u0032\u0031\u70B9",
+  "\u336E",
+  "\u0032\u0032\u70B9",
+  "\u336F",
+  "\u0032\u0033\u70B9",
+  "\u3370",
+  "\u0032\u0034\u70B9",
+  "\u33E0",
+  "\u0031\u65E5",
+  "\u33E1",
+  "\u0032\u65E5",
+  "\u33E2",
+  "\u0033\u65E5",
+  "\u33E3",
+  "\u0034\u65E5",
+  "\u33E4",
+  "\u0035\u65E5",
+  "\u33E5",
+  "\u0036\u65E5",
+  "\u33E6",
+  "\u0037\u65E5",
+  "\u33E7",
+  "\u0038\u65E5",
+  "\u33E8",
+  "\u0039\u65E5",
+  "\u33E9",
+  "\u0031\u0030\u65E5",
+  "\u33EA",
+  "\u0031\u0031\u65E5",
+  "\u33EB",
+  "\u0031\u0032\u65E5",
+  "\u33EC",
+  "\u0031\u0033\u65E5",
+  "\u33ED",
+  "\u0031\u0034\u65E5",
+  "\u33EE",
+  "\u0031\u0035\u65E5",
+  "\u33EF",
+  "\u0031\u0036\u65E5",
+  "\u33F0",
+  "\u0031\u0037\u65E5",
+  "\u33F1",
+  "\u0031\u0038\u65E5",
+  "\u33F2",
+  "\u0031\u0039\u65E5",
+  "\u33F3",
+  "\u0032\u0030\u65E5",
+  "\u33F4",
+  "\u0032\u0031\u65E5",
+  "\u33F5",
+  "\u0032\u0032\u65E5",
+  "\u33F6",
+  "\u0032\u0033\u65E5",
+  "\u33F7",
+  "\u0032\u0034\u65E5",
+  "\u33F8",
+  "\u0032\u0035\u65E5",
+  "\u33F9",
+  "\u0032\u0036\u65E5",
+  "\u33FA",
+  "\u0032\u0037\u65E5",
+  "\u33FB",
+  "\u0032\u0038\u65E5",
+  "\u33FC",
+  "\u0032\u0039\u65E5",
+  "\u33FD",
+  "\u0033\u0030\u65E5",
+  "\u33FE",
+  "\u0033\u0031\u65E5",
+  "\uFB00",
+  "\u0066\u0066",
+  "\uFB01",
+  "\u0066\u0069",
+  "\uFB02",
+  "\u0066\u006C",
+  "\uFB03",
+  "\u0066\u0066\u0069",
+  "\uFB04",
+  "\u0066\u0066\u006C",
+  "\uFB05",
+  "\u017F\u0074",
+  "\uFB06",
+  "\u0073\u0074",
+  "\uFB13",
+  "\u0574\u0576",
+  "\uFB14",
+  "\u0574\u0565",
+  "\uFB15",
+  "\u0574\u056B",
+  "\uFB16",
+  "\u057E\u0576",
+  "\uFB17",
+  "\u0574\u056D",
+  "\uFB4F",
+  "\u05D0\u05DC",
+  "\uFB50",
+  "\u0671",
+  "\uFB51",
+  "\u0671",
+  "\uFB52",
+  "\u067B",
+  "\uFB53",
+  "\u067B",
+  "\uFB54",
+  "\u067B",
+  "\uFB55",
+  "\u067B",
+  "\uFB56",
+  "\u067E",
+  "\uFB57",
+  "\u067E",
+  "\uFB58",
+  "\u067E",
+  "\uFB59",
+  "\u067E",
+  "\uFB5A",
+  "\u0680",
+  "\uFB5B",
+  "\u0680",
+  "\uFB5C",
+  "\u0680",
+  "\uFB5D",
+  "\u0680",
+  "\uFB5E",
+  "\u067A",
+  "\uFB5F",
+  "\u067A",
+  "\uFB60",
+  "\u067A",
+  "\uFB61",
+  "\u067A",
+  "\uFB62",
+  "\u067F",
+  "\uFB63",
+  "\u067F",
+  "\uFB64",
+  "\u067F",
+  "\uFB65",
+  "\u067F",
+  "\uFB66",
+  "\u0679",
+  "\uFB67",
+  "\u0679",
+  "\uFB68",
+  "\u0679",
+  "\uFB69",
+  "\u0679",
+  "\uFB6A",
+  "\u06A4",
+  "\uFB6B",
+  "\u06A4",
+  "\uFB6C",
+  "\u06A4",
+  "\uFB6D",
+  "\u06A4",
+  "\uFB6E",
+  "\u06A6",
+  "\uFB6F",
+  "\u06A6",
+  "\uFB70",
+  "\u06A6",
+  "\uFB71",
+  "\u06A6",
+  "\uFB72",
+  "\u0684",
+  "\uFB73",
+  "\u0684",
+  "\uFB74",
+  "\u0684",
+  "\uFB75",
+  "\u0684",
+  "\uFB76",
+  "\u0683",
+  "\uFB77",
+  "\u0683",
+  "\uFB78",
+  "\u0683",
+  "\uFB79",
+  "\u0683",
+  "\uFB7A",
+  "\u0686",
+  "\uFB7B",
+  "\u0686",
+  "\uFB7C",
+  "\u0686",
+  "\uFB7D",
+  "\u0686",
+  "\uFB7E",
+  "\u0687",
+  "\uFB7F",
+  "\u0687",
+  "\uFB80",
+  "\u0687",
+  "\uFB81",
+  "\u0687",
+  "\uFB82",
+  "\u068D",
+  "\uFB83",
+  "\u068D",
+  "\uFB84",
+  "\u068C",
+  "\uFB85",
+  "\u068C",
+  "\uFB86",
+  "\u068E",
+  "\uFB87",
+  "\u068E",
+  "\uFB88",
+  "\u0688",
+  "\uFB89",
+  "\u0688",
+  "\uFB8A",
+  "\u0698",
+  "\uFB8B",
+  "\u0698",
+  "\uFB8C",
+  "\u0691",
+  "\uFB8D",
+  "\u0691",
+  "\uFB8E",
+  "\u06A9",
+  "\uFB8F",
+  "\u06A9",
+  "\uFB90",
+  "\u06A9",
+  "\uFB91",
+  "\u06A9",
+  "\uFB92",
+  "\u06AF",
+  "\uFB93",
+  "\u06AF",
+  "\uFB94",
+  "\u06AF",
+  "\uFB95",
+  "\u06AF",
+  "\uFB96",
+  "\u06B3",
+  "\uFB97",
+  "\u06B3",
+  "\uFB98",
+  "\u06B3",
+  "\uFB99",
+  "\u06B3",
+  "\uFB9A",
+  "\u06B1",
+  "\uFB9B",
+  "\u06B1",
+  "\uFB9C",
+  "\u06B1",
+  "\uFB9D",
+  "\u06B1",
+  "\uFB9E",
+  "\u06BA",
+  "\uFB9F",
+  "\u06BA",
+  "\uFBA0",
+  "\u06BB",
+  "\uFBA1",
+  "\u06BB",
+  "\uFBA2",
+  "\u06BB",
+  "\uFBA3",
+  "\u06BB",
+  "\uFBA4",
+  "\u06C0",
+  "\uFBA5",
+  "\u06C0",
+  "\uFBA6",
+  "\u06C1",
+  "\uFBA7",
+  "\u06C1",
+  "\uFBA8",
+  "\u06C1",
+  "\uFBA9",
+  "\u06C1",
+  "\uFBAA",
+  "\u06BE",
+  "\uFBAB",
+  "\u06BE",
+  "\uFBAC",
+  "\u06BE",
+  "\uFBAD",
+  "\u06BE",
+  "\uFBAE",
+  "\u06D2",
+  "\uFBAF",
+  "\u06D2",
+  "\uFBB0",
+  "\u06D3",
+  "\uFBB1",
+  "\u06D3",
+  "\uFBD3",
+  "\u06AD",
+  "\uFBD4",
+  "\u06AD",
+  "\uFBD5",
+  "\u06AD",
+  "\uFBD6",
+  "\u06AD",
+  "\uFBD7",
+  "\u06C7",
+  "\uFBD8",
+  "\u06C7",
+  "\uFBD9",
+  "\u06C6",
+  "\uFBDA",
+  "\u06C6",
+  "\uFBDB",
+  "\u06C8",
+  "\uFBDC",
+  "\u06C8",
+  "\uFBDD",
+  "\u0677",
+  "\uFBDE",
+  "\u06CB",
+  "\uFBDF",
+  "\u06CB",
+  "\uFBE0",
+  "\u06C5",
+  "\uFBE1",
+  "\u06C5",
+  "\uFBE2",
+  "\u06C9",
+  "\uFBE3",
+  "\u06C9",
+  "\uFBE4",
+  "\u06D0",
+  "\uFBE5",
+  "\u06D0",
+  "\uFBE6",
+  "\u06D0",
+  "\uFBE7",
+  "\u06D0",
+  "\uFBE8",
+  "\u0649",
+  "\uFBE9",
+  "\u0649",
+  "\uFBEA",
+  "\u0626\u0627",
+  "\uFBEB",
+  "\u0626\u0627",
+  "\uFBEC",
+  "\u0626\u06D5",
+  "\uFBED",
+  "\u0626\u06D5",
+  "\uFBEE",
+  "\u0626\u0648",
+  "\uFBEF",
+  "\u0626\u0648",
+  "\uFBF0",
+  "\u0626\u06C7",
+  "\uFBF1",
+  "\u0626\u06C7",
+  "\uFBF2",
+  "\u0626\u06C6",
+  "\uFBF3",
+  "\u0626\u06C6",
+  "\uFBF4",
+  "\u0626\u06C8",
+  "\uFBF5",
+  "\u0626\u06C8",
+  "\uFBF6",
+  "\u0626\u06D0",
+  "\uFBF7",
+  "\u0626\u06D0",
+  "\uFBF8",
+  "\u0626\u06D0",
+  "\uFBF9",
+  "\u0626\u0649",
+  "\uFBFA",
+  "\u0626\u0649",
+  "\uFBFB",
+  "\u0626\u0649",
+  "\uFBFC",
+  "\u06CC",
+  "\uFBFD",
+  "\u06CC",
+  "\uFBFE",
+  "\u06CC",
+  "\uFBFF",
+  "\u06CC",
+  "\uFC00",
+  "\u0626\u062C",
+  "\uFC01",
+  "\u0626\u062D",
+  "\uFC02",
+  "\u0626\u0645",
+  "\uFC03",
+  "\u0626\u0649",
+  "\uFC04",
+  "\u0626\u064A",
+  "\uFC05",
+  "\u0628\u062C",
+  "\uFC06",
+  "\u0628\u062D",
+  "\uFC07",
+  "\u0628\u062E",
+  "\uFC08",
+  "\u0628\u0645",
+  "\uFC09",
+  "\u0628\u0649",
+  "\uFC0A",
+  "\u0628\u064A",
+  "\uFC0B",
+  "\u062A\u062C",
+  "\uFC0C",
+  "\u062A\u062D",
+  "\uFC0D",
+  "\u062A\u062E",
+  "\uFC0E",
+  "\u062A\u0645",
+  "\uFC0F",
+  "\u062A\u0649",
+  "\uFC10",
+  "\u062A\u064A",
+  "\uFC11",
+  "\u062B\u062C",
+  "\uFC12",
+  "\u062B\u0645",
+  "\uFC13",
+  "\u062B\u0649",
+  "\uFC14",
+  "\u062B\u064A",
+  "\uFC15",
+  "\u062C\u062D",
+  "\uFC16",
+  "\u062C\u0645",
+  "\uFC17",
+  "\u062D\u062C",
+  "\uFC18",
+  "\u062D\u0645",
+  "\uFC19",
+  "\u062E\u062C",
+  "\uFC1A",
+  "\u062E\u062D",
+  "\uFC1B",
+  "\u062E\u0645",
+  "\uFC1C",
+  "\u0633\u062C",
+  "\uFC1D",
+  "\u0633\u062D",
+  "\uFC1E",
+  "\u0633\u062E",
+  "\uFC1F",
+  "\u0633\u0645",
+  "\uFC20",
+  "\u0635\u062D",
+  "\uFC21",
+  "\u0635\u0645",
+  "\uFC22",
+  "\u0636\u062C",
+  "\uFC23",
+  "\u0636\u062D",
+  "\uFC24",
+  "\u0636\u062E",
+  "\uFC25",
+  "\u0636\u0645",
+  "\uFC26",
+  "\u0637\u062D",
+  "\uFC27",
+  "\u0637\u0645",
+  "\uFC28",
+  "\u0638\u0645",
+  "\uFC29",
+  "\u0639\u062C",
+  "\uFC2A",
+  "\u0639\u0645",
+  "\uFC2B",
+  "\u063A\u062C",
+  "\uFC2C",
+  "\u063A\u0645",
+  "\uFC2D",
+  "\u0641\u062C",
+  "\uFC2E",
+  "\u0641\u062D",
+  "\uFC2F",
+  "\u0641\u062E",
+  "\uFC30",
+  "\u0641\u0645",
+  "\uFC31",
+  "\u0641\u0649",
+  "\uFC32",
+  "\u0641\u064A",
+  "\uFC33",
+  "\u0642\u062D",
+  "\uFC34",
+  "\u0642\u0645",
+  "\uFC35",
+  "\u0642\u0649",
+  "\uFC36",
+  "\u0642\u064A",
+  "\uFC37",
+  "\u0643\u0627",
+  "\uFC38",
+  "\u0643\u062C",
+  "\uFC39",
+  "\u0643\u062D",
+  "\uFC3A",
+  "\u0643\u062E",
+  "\uFC3B",
+  "\u0643\u0644",
+  "\uFC3C",
+  "\u0643\u0645",
+  "\uFC3D",
+  "\u0643\u0649",
+  "\uFC3E",
+  "\u0643\u064A",
+  "\uFC3F",
+  "\u0644\u062C",
+  "\uFC40",
+  "\u0644\u062D",
+  "\uFC41",
+  "\u0644\u062E",
+  "\uFC42",
+  "\u0644\u0645",
+  "\uFC43",
+  "\u0644\u0649",
+  "\uFC44",
+  "\u0644\u064A",
+  "\uFC45",
+  "\u0645\u062C",
+  "\uFC46",
+  "\u0645\u062D",
+  "\uFC47",
+  "\u0645\u062E",
+  "\uFC48",
+  "\u0645\u0645",
+  "\uFC49",
+  "\u0645\u0649",
+  "\uFC4A",
+  "\u0645\u064A",
+  "\uFC4B",
+  "\u0646\u062C",
+  "\uFC4C",
+  "\u0646\u062D",
+  "\uFC4D",
+  "\u0646\u062E",
+  "\uFC4E",
+  "\u0646\u0645",
+  "\uFC4F",
+  "\u0646\u0649",
+  "\uFC50",
+  "\u0646\u064A",
+  "\uFC51",
+  "\u0647\u062C",
+  "\uFC52",
+  "\u0647\u0645",
+  "\uFC53",
+  "\u0647\u0649",
+  "\uFC54",
+  "\u0647\u064A",
+  "\uFC55",
+  "\u064A\u062C",
+  "\uFC56",
+  "\u064A\u062D",
+  "\uFC57",
+  "\u064A\u062E",
+  "\uFC58",
+  "\u064A\u0645",
+  "\uFC59",
+  "\u064A\u0649",
+  "\uFC5A",
+  "\u064A\u064A",
+  "\uFC5B",
+  "\u0630\u0670",
+  "\uFC5C",
+  "\u0631\u0670",
+  "\uFC5D",
+  "\u0649\u0670",
+  "\uFC5E",
+  "\u0020\u064C\u0651",
+  "\uFC5F",
+  "\u0020\u064D\u0651",
+  "\uFC60",
+  "\u0020\u064E\u0651",
+  "\uFC61",
+  "\u0020\u064F\u0651",
+  "\uFC62",
+  "\u0020\u0650\u0651",
+  "\uFC63",
+  "\u0020\u0651\u0670",
+  "\uFC64",
+  "\u0626\u0631",
+  "\uFC65",
+  "\u0626\u0632",
+  "\uFC66",
+  "\u0626\u0645",
+  "\uFC67",
+  "\u0626\u0646",
+  "\uFC68",
+  "\u0626\u0649",
+  "\uFC69",
+  "\u0626\u064A",
+  "\uFC6A",
+  "\u0628\u0631",
+  "\uFC6B",
+  "\u0628\u0632",
+  "\uFC6C",
+  "\u0628\u0645",
+  "\uFC6D",
+  "\u0628\u0646",
+  "\uFC6E",
+  "\u0628\u0649",
+  "\uFC6F",
+  "\u0628\u064A",
+  "\uFC70",
+  "\u062A\u0631",
+  "\uFC71",
+  "\u062A\u0632",
+  "\uFC72",
+  "\u062A\u0645",
+  "\uFC73",
+  "\u062A\u0646",
+  "\uFC74",
+  "\u062A\u0649",
+  "\uFC75",
+  "\u062A\u064A",
+  "\uFC76",
+  "\u062B\u0631",
+  "\uFC77",
+  "\u062B\u0632",
+  "\uFC78",
+  "\u062B\u0645",
+  "\uFC79",
+  "\u062B\u0646",
+  "\uFC7A",
+  "\u062B\u0649",
+  "\uFC7B",
+  "\u062B\u064A",
+  "\uFC7C",
+  "\u0641\u0649",
+  "\uFC7D",
+  "\u0641\u064A",
+  "\uFC7E",
+  "\u0642\u0649",
+  "\uFC7F",
+  "\u0642\u064A",
+  "\uFC80",
+  "\u0643\u0627",
+  "\uFC81",
+  "\u0643\u0644",
+  "\uFC82",
+  "\u0643\u0645",
+  "\uFC83",
+  "\u0643\u0649",
+  "\uFC84",
+  "\u0643\u064A",
+  "\uFC85",
+  "\u0644\u0645",
+  "\uFC86",
+  "\u0644\u0649",
+  "\uFC87",
+  "\u0644\u064A",
+  "\uFC88",
+  "\u0645\u0627",
+  "\uFC89",
+  "\u0645\u0645",
+  "\uFC8A",
+  "\u0646\u0631",
+  "\uFC8B",
+  "\u0646\u0632",
+  "\uFC8C",
+  "\u0646\u0645",
+  "\uFC8D",
+  "\u0646\u0646",
+  "\uFC8E",
+  "\u0646\u0649",
+  "\uFC8F",
+  "\u0646\u064A",
+  "\uFC90",
+  "\u0649\u0670",
+  "\uFC91",
+  "\u064A\u0631",
+  "\uFC92",
+  "\u064A\u0632",
+  "\uFC93",
+  "\u064A\u0645",
+  "\uFC94",
+  "\u064A\u0646",
+  "\uFC95",
+  "\u064A\u0649",
+  "\uFC96",
+  "\u064A\u064A",
+  "\uFC97",
+  "\u0626\u062C",
+  "\uFC98",
+  "\u0626\u062D",
+  "\uFC99",
+  "\u0626\u062E",
+  "\uFC9A",
+  "\u0626\u0645",
+  "\uFC9B",
+  "\u0626\u0647",
+  "\uFC9C",
+  "\u0628\u062C",
+  "\uFC9D",
+  "\u0628\u062D",
+  "\uFC9E",
+  "\u0628\u062E",
+  "\uFC9F",
+  "\u0628\u0645",
+  "\uFCA0",
+  "\u0628\u0647",
+  "\uFCA1",
+  "\u062A\u062C",
+  "\uFCA2",
+  "\u062A\u062D",
+  "\uFCA3",
+  "\u062A\u062E",
+  "\uFCA4",
+  "\u062A\u0645",
+  "\uFCA5",
+  "\u062A\u0647",
+  "\uFCA6",
+  "\u062B\u0645",
+  "\uFCA7",
+  "\u062C\u062D",
+  "\uFCA8",
+  "\u062C\u0645",
+  "\uFCA9",
+  "\u062D\u062C",
+  "\uFCAA",
+  "\u062D\u0645",
+  "\uFCAB",
+  "\u062E\u062C",
+  "\uFCAC",
+  "\u062E\u0645",
+  "\uFCAD",
+  "\u0633\u062C",
+  "\uFCAE",
+  "\u0633\u062D",
+  "\uFCAF",
+  "\u0633\u062E",
+  "\uFCB0",
+  "\u0633\u0645",
+  "\uFCB1",
+  "\u0635\u062D",
+  "\uFCB2",
+  "\u0635\u062E",
+  "\uFCB3",
+  "\u0635\u0645",
+  "\uFCB4",
+  "\u0636\u062C",
+  "\uFCB5",
+  "\u0636\u062D",
+  "\uFCB6",
+  "\u0636\u062E",
+  "\uFCB7",
+  "\u0636\u0645",
+  "\uFCB8",
+  "\u0637\u062D",
+  "\uFCB9",
+  "\u0638\u0645",
+  "\uFCBA",
+  "\u0639\u062C",
+  "\uFCBB",
+  "\u0639\u0645",
+  "\uFCBC",
+  "\u063A\u062C",
+  "\uFCBD",
+  "\u063A\u0645",
+  "\uFCBE",
+  "\u0641\u062C",
+  "\uFCBF",
+  "\u0641\u062D",
+  "\uFCC0",
+  "\u0641\u062E",
+  "\uFCC1",
+  "\u0641\u0645",
+  "\uFCC2",
+  "\u0642\u062D",
+  "\uFCC3",
+  "\u0642\u0645",
+  "\uFCC4",
+  "\u0643\u062C",
+  "\uFCC5",
+  "\u0643\u062D",
+  "\uFCC6",
+  "\u0643\u062E",
+  "\uFCC7",
+  "\u0643\u0644",
+  "\uFCC8",
+  "\u0643\u0645",
+  "\uFCC9",
+  "\u0644\u062C",
+  "\uFCCA",
+  "\u0644\u062D",
+  "\uFCCB",
+  "\u0644\u062E",
+  "\uFCCC",
+  "\u0644\u0645",
+  "\uFCCD",
+  "\u0644\u0647",
+  "\uFCCE",
+  "\u0645\u062C",
+  "\uFCCF",
+  "\u0645\u062D",
+  "\uFCD0",
+  "\u0645\u062E",
+  "\uFCD1",
+  "\u0645\u0645",
+  "\uFCD2",
+  "\u0646\u062C",
+  "\uFCD3",
+  "\u0646\u062D",
+  "\uFCD4",
+  "\u0646\u062E",
+  "\uFCD5",
+  "\u0646\u0645",
+  "\uFCD6",
+  "\u0646\u0647",
+  "\uFCD7",
+  "\u0647\u062C",
+  "\uFCD8",
+  "\u0647\u0645",
+  "\uFCD9",
+  "\u0647\u0670",
+  "\uFCDA",
+  "\u064A\u062C",
+  "\uFCDB",
+  "\u064A\u062D",
+  "\uFCDC",
+  "\u064A\u062E",
+  "\uFCDD",
+  "\u064A\u0645",
+  "\uFCDE",
+  "\u064A\u0647",
+  "\uFCDF",
+  "\u0626\u0645",
+  "\uFCE0",
+  "\u0626\u0647",
+  "\uFCE1",
+  "\u0628\u0645",
+  "\uFCE2",
+  "\u0628\u0647",
+  "\uFCE3",
+  "\u062A\u0645",
+  "\uFCE4",
+  "\u062A\u0647",
+  "\uFCE5",
+  "\u062B\u0645",
+  "\uFCE6",
+  "\u062B\u0647",
+  "\uFCE7",
+  "\u0633\u0645",
+  "\uFCE8",
+  "\u0633\u0647",
+  "\uFCE9",
+  "\u0634\u0645",
+  "\uFCEA",
+  "\u0634\u0647",
+  "\uFCEB",
+  "\u0643\u0644",
+  "\uFCEC",
+  "\u0643\u0645",
+  "\uFCED",
+  "\u0644\u0645",
+  "\uFCEE",
+  "\u0646\u0645",
+  "\uFCEF",
+  "\u0646\u0647",
+  "\uFCF0",
+  "\u064A\u0645",
+  "\uFCF1",
+  "\u064A\u0647",
+  "\uFCF2",
+  "\u0640\u064E\u0651",
+  "\uFCF3",
+  "\u0640\u064F\u0651",
+  "\uFCF4",
+  "\u0640\u0650\u0651",
+  "\uFCF5",
+  "\u0637\u0649",
+  "\uFCF6",
+  "\u0637\u064A",
+  "\uFCF7",
+  "\u0639\u0649",
+  "\uFCF8",
+  "\u0639\u064A",
+  "\uFCF9",
+  "\u063A\u0649",
+  "\uFCFA",
+  "\u063A\u064A",
+  "\uFCFB",
+  "\u0633\u0649",
+  "\uFCFC",
+  "\u0633\u064A",
+  "\uFCFD",
+  "\u0634\u0649",
+  "\uFCFE",
+  "\u0634\u064A",
+  "\uFCFF",
+  "\u062D\u0649",
+  "\uFD00",
+  "\u062D\u064A",
+  "\uFD01",
+  "\u062C\u0649",
+  "\uFD02",
+  "\u062C\u064A",
+  "\uFD03",
+  "\u062E\u0649",
+  "\uFD04",
+  "\u062E\u064A",
+  "\uFD05",
+  "\u0635\u0649",
+  "\uFD06",
+  "\u0635\u064A",
+  "\uFD07",
+  "\u0636\u0649",
+  "\uFD08",
+  "\u0636\u064A",
+  "\uFD09",
+  "\u0634\u062C",
+  "\uFD0A",
+  "\u0634\u062D",
+  "\uFD0B",
+  "\u0634\u062E",
+  "\uFD0C",
+  "\u0634\u0645",
+  "\uFD0D",
+  "\u0634\u0631",
+  "\uFD0E",
+  "\u0633\u0631",
+  "\uFD0F",
+  "\u0635\u0631",
+  "\uFD10",
+  "\u0636\u0631",
+  "\uFD11",
+  "\u0637\u0649",
+  "\uFD12",
+  "\u0637\u064A",
+  "\uFD13",
+  "\u0639\u0649",
+  "\uFD14",
+  "\u0639\u064A",
+  "\uFD15",
+  "\u063A\u0649",
+  "\uFD16",
+  "\u063A\u064A",
+  "\uFD17",
+  "\u0633\u0649",
+  "\uFD18",
+  "\u0633\u064A",
+  "\uFD19",
+  "\u0634\u0649",
+  "\uFD1A",
+  "\u0634\u064A",
+  "\uFD1B",
+  "\u062D\u0649",
+  "\uFD1C",
+  "\u062D\u064A",
+  "\uFD1D",
+  "\u062C\u0649",
+  "\uFD1E",
+  "\u062C\u064A",
+  "\uFD1F",
+  "\u062E\u0649",
+  "\uFD20",
+  "\u062E\u064A",
+  "\uFD21",
+  "\u0635\u0649",
+  "\uFD22",
+  "\u0635\u064A",
+  "\uFD23",
+  "\u0636\u0649",
+  "\uFD24",
+  "\u0636\u064A",
+  "\uFD25",
+  "\u0634\u062C",
+  "\uFD26",
+  "\u0634\u062D",
+  "\uFD27",
+  "\u0634\u062E",
+  "\uFD28",
+  "\u0634\u0645",
+  "\uFD29",
+  "\u0634\u0631",
+  "\uFD2A",
+  "\u0633\u0631",
+  "\uFD2B",
+  "\u0635\u0631",
+  "\uFD2C",
+  "\u0636\u0631",
+  "\uFD2D",
+  "\u0634\u062C",
+  "\uFD2E",
+  "\u0634\u062D",
+  "\uFD2F",
+  "\u0634\u062E",
+  "\uFD30",
+  "\u0634\u0645",
+  "\uFD31",
+  "\u0633\u0647",
+  "\uFD32",
+  "\u0634\u0647",
+  "\uFD33",
+  "\u0637\u0645",
+  "\uFD34",
+  "\u0633\u062C",
+  "\uFD35",
+  "\u0633\u062D",
+  "\uFD36",
+  "\u0633\u062E",
+  "\uFD37",
+  "\u0634\u062C",
+  "\uFD38",
+  "\u0634\u062D",
+  "\uFD39",
+  "\u0634\u062E",
+  "\uFD3A",
+  "\u0637\u0645",
+  "\uFD3B",
+  "\u0638\u0645",
+  "\uFD3C",
+  "\u0627\u064B",
+  "\uFD3D",
+  "\u0627\u064B",
+  "\uFD50",
+  "\u062A\u062C\u0645",
+  "\uFD51",
+  "\u062A\u062D\u062C",
+  "\uFD52",
+  "\u062A\u062D\u062C",
+  "\uFD53",
+  "\u062A\u062D\u0645",
+  "\uFD54",
+  "\u062A\u062E\u0645",
+  "\uFD55",
+  "\u062A\u0645\u062C",
+  "\uFD56",
+  "\u062A\u0645\u062D",
+  "\uFD57",
+  "\u062A\u0645\u062E",
+  "\uFD58",
+  "\u062C\u0645\u062D",
+  "\uFD59",
+  "\u062C\u0645\u062D",
+  "\uFD5A",
+  "\u062D\u0645\u064A",
+  "\uFD5B",
+  "\u062D\u0645\u0649",
+  "\uFD5C",
+  "\u0633\u062D\u062C",
+  "\uFD5D",
+  "\u0633\u062C\u062D",
+  "\uFD5E",
+  "\u0633\u062C\u0649",
+  "\uFD5F",
+  "\u0633\u0645\u062D",
+  "\uFD60",
+  "\u0633\u0645\u062D",
+  "\uFD61",
+  "\u0633\u0645\u062C",
+  "\uFD62",
+  "\u0633\u0645\u0645",
+  "\uFD63",
+  "\u0633\u0645\u0645",
+  "\uFD64",
+  "\u0635\u062D\u062D",
+  "\uFD65",
+  "\u0635\u062D\u062D",
+  "\uFD66",
+  "\u0635\u0645\u0645",
+  "\uFD67",
+  "\u0634\u062D\u0645",
+  "\uFD68",
+  "\u0634\u062D\u0645",
+  "\uFD69",
+  "\u0634\u062C\u064A",
+  "\uFD6A",
+  "\u0634\u0645\u062E",
+  "\uFD6B",
+  "\u0634\u0645\u062E",
+  "\uFD6C",
+  "\u0634\u0645\u0645",
+  "\uFD6D",
+  "\u0634\u0645\u0645",
+  "\uFD6E",
+  "\u0636\u062D\u0649",
+  "\uFD6F",
+  "\u0636\u062E\u0645",
+  "\uFD70",
+  "\u0636\u062E\u0645",
+  "\uFD71",
+  "\u0637\u0645\u062D",
+  "\uFD72",
+  "\u0637\u0645\u062D",
+  "\uFD73",
+  "\u0637\u0645\u0645",
+  "\uFD74",
+  "\u0637\u0645\u064A",
+  "\uFD75",
+  "\u0639\u062C\u0645",
+  "\uFD76",
+  "\u0639\u0645\u0645",
+  "\uFD77",
+  "\u0639\u0645\u0645",
+  "\uFD78",
+  "\u0639\u0645\u0649",
+  "\uFD79",
+  "\u063A\u0645\u0645",
+  "\uFD7A",
+  "\u063A\u0645\u064A",
+  "\uFD7B",
+  "\u063A\u0645\u0649",
+  "\uFD7C",
+  "\u0641\u062E\u0645",
+  "\uFD7D",
+  "\u0641\u062E\u0645",
+  "\uFD7E",
+  "\u0642\u0645\u062D",
+  "\uFD7F",
+  "\u0642\u0645\u0645",
+  "\uFD80",
+  "\u0644\u062D\u0645",
+  "\uFD81",
+  "\u0644\u062D\u064A",
+  "\uFD82",
+  "\u0644\u062D\u0649",
+  "\uFD83",
+  "\u0644\u062C\u062C",
+  "\uFD84",
+  "\u0644\u062C\u062C",
+  "\uFD85",
+  "\u0644\u062E\u0645",
+  "\uFD86",
+  "\u0644\u062E\u0645",
+  "\uFD87",
+  "\u0644\u0645\u062D",
+  "\uFD88",
+  "\u0644\u0645\u062D",
+  "\uFD89",
+  "\u0645\u062D\u062C",
+  "\uFD8A",
+  "\u0645\u062D\u0645",
+  "\uFD8B",
+  "\u0645\u062D\u064A",
+  "\uFD8C",
+  "\u0645\u062C\u062D",
+  "\uFD8D",
+  "\u0645\u062C\u0645",
+  "\uFD8E",
+  "\u0645\u062E\u062C",
+  "\uFD8F",
+  "\u0645\u062E\u0645",
+  "\uFD92",
+  "\u0645\u062C\u062E",
+  "\uFD93",
+  "\u0647\u0645\u062C",
+  "\uFD94",
+  "\u0647\u0645\u0645",
+  "\uFD95",
+  "\u0646\u062D\u0645",
+  "\uFD96",
+  "\u0646\u062D\u0649",
+  "\uFD97",
+  "\u0646\u062C\u0645",
+  "\uFD98",
+  "\u0646\u062C\u0645",
+  "\uFD99",
+  "\u0646\u062C\u0649",
+  "\uFD9A",
+  "\u0646\u0645\u064A",
+  "\uFD9B",
+  "\u0646\u0645\u0649",
+  "\uFD9C",
+  "\u064A\u0645\u0645",
+  "\uFD9D",
+  "\u064A\u0645\u0645",
+  "\uFD9E",
+  "\u0628\u062E\u064A",
+  "\uFD9F",
+  "\u062A\u062C\u064A",
+  "\uFDA0",
+  "\u062A\u062C\u0649",
+  "\uFDA1",
+  "\u062A\u062E\u064A",
+  "\uFDA2",
+  "\u062A\u062E\u0649",
+  "\uFDA3",
+  "\u062A\u0645\u064A",
+  "\uFDA4",
+  "\u062A\u0645\u0649",
+  "\uFDA5",
+  "\u062C\u0645\u064A",
+  "\uFDA6",
+  "\u062C\u062D\u0649",
+  "\uFDA7",
+  "\u062C\u0645\u0649",
+  "\uFDA8",
+  "\u0633\u062E\u0649",
+  "\uFDA9",
+  "\u0635\u062D\u064A",
+  "\uFDAA",
+  "\u0634\u062D\u064A",
+  "\uFDAB",
+  "\u0636\u062D\u064A",
+  "\uFDAC",
+  "\u0644\u062C\u064A",
+  "\uFDAD",
+  "\u0644\u0645\u064A",
+  "\uFDAE",
+  "\u064A\u062D\u064A",
+  "\uFDAF",
+  "\u064A\u062C\u064A",
+  "\uFDB0",
+  "\u064A\u0645\u064A",
+  "\uFDB1",
+  "\u0645\u0645\u064A",
+  "\uFDB2",
+  "\u0642\u0645\u064A",
+  "\uFDB3",
+  "\u0646\u062D\u064A",
+  "\uFDB4",
+  "\u0642\u0645\u062D",
+  "\uFDB5",
+  "\u0644\u062D\u0645",
+  "\uFDB6",
+  "\u0639\u0645\u064A",
+  "\uFDB7",
+  "\u0643\u0645\u064A",
+  "\uFDB8",
+  "\u0646\u062C\u062D",
+  "\uFDB9",
+  "\u0645\u062E\u064A",
+  "\uFDBA",
+  "\u0644\u062C\u0645",
+  "\uFDBB",
+  "\u0643\u0645\u0645",
+  "\uFDBC",
+  "\u0644\u062C\u0645",
+  "\uFDBD",
+  "\u0646\u062C\u062D",
+  "\uFDBE",
+  "\u062C\u062D\u064A",
+  "\uFDBF",
+  "\u062D\u062C\u064A",
+  "\uFDC0",
+  "\u0645\u062C\u064A",
+  "\uFDC1",
+  "\u0641\u0645\u064A",
+  "\uFDC2",
+  "\u0628\u062D\u064A",
+  "\uFDC3",
+  "\u0643\u0645\u0645",
+  "\uFDC4",
+  "\u0639\u062C\u0645",
+  "\uFDC5",
+  "\u0635\u0645\u0645",
+  "\uFDC6",
+  "\u0633\u062E\u064A",
+  "\uFDC7",
+  "\u0646\u062C\u064A",
+  "\uFE49",
+  "\u203E",
+  "\uFE4A",
+  "\u203E",
+  "\uFE4B",
+  "\u203E",
+  "\uFE4C",
+  "\u203E",
+  "\uFE4D",
+  "\u005F",
+  "\uFE4E",
+  "\u005F",
+  "\uFE4F",
+  "\u005F",
+  "\uFE80",
+  "\u0621",
+  "\uFE81",
+  "\u0622",
+  "\uFE82",
+  "\u0622",
+  "\uFE83",
+  "\u0623",
+  "\uFE84",
+  "\u0623",
+  "\uFE85",
+  "\u0624",
+  "\uFE86",
+  "\u0624",
+  "\uFE87",
+  "\u0625",
+  "\uFE88",
+  "\u0625",
+  "\uFE89",
+  "\u0626",
+  "\uFE8A",
+  "\u0626",
+  "\uFE8B",
+  "\u0626",
+  "\uFE8C",
+  "\u0626",
+  "\uFE8D",
+  "\u0627",
+  "\uFE8E",
+  "\u0627",
+  "\uFE8F",
+  "\u0628",
+  "\uFE90",
+  "\u0628",
+  "\uFE91",
+  "\u0628",
+  "\uFE92",
+  "\u0628",
+  "\uFE93",
+  "\u0629",
+  "\uFE94",
+  "\u0629",
+  "\uFE95",
+  "\u062A",
+  "\uFE96",
+  "\u062A",
+  "\uFE97",
+  "\u062A",
+  "\uFE98",
+  "\u062A",
+  "\uFE99",
+  "\u062B",
+  "\uFE9A",
+  "\u062B",
+  "\uFE9B",
+  "\u062B",
+  "\uFE9C",
+  "\u062B",
+  "\uFE9D",
+  "\u062C",
+  "\uFE9E",
+  "\u062C",
+  "\uFE9F",
+  "\u062C",
+  "\uFEA0",
+  "\u062C",
+  "\uFEA1",
+  "\u062D",
+  "\uFEA2",
+  "\u062D",
+  "\uFEA3",
+  "\u062D",
+  "\uFEA4",
+  "\u062D",
+  "\uFEA5",
+  "\u062E",
+  "\uFEA6",
+  "\u062E",
+  "\uFEA7",
+  "\u062E",
+  "\uFEA8",
+  "\u062E",
+  "\uFEA9",
+  "\u062F",
+  "\uFEAA",
+  "\u062F",
+  "\uFEAB",
+  "\u0630",
+  "\uFEAC",
+  "\u0630",
+  "\uFEAD",
+  "\u0631",
+  "\uFEAE",
+  "\u0631",
+  "\uFEAF",
+  "\u0632",
+  "\uFEB0",
+  "\u0632",
+  "\uFEB1",
+  "\u0633",
+  "\uFEB2",
+  "\u0633",
+  "\uFEB3",
+  "\u0633",
+  "\uFEB4",
+  "\u0633",
+  "\uFEB5",
+  "\u0634",
+  "\uFEB6",
+  "\u0634",
+  "\uFEB7",
+  "\u0634",
+  "\uFEB8",
+  "\u0634",
+  "\uFEB9",
+  "\u0635",
+  "\uFEBA",
+  "\u0635",
+  "\uFEBB",
+  "\u0635",
+  "\uFEBC",
+  "\u0635",
+  "\uFEBD",
+  "\u0636",
+  "\uFEBE",
+  "\u0636",
+  "\uFEBF",
+  "\u0636",
+  "\uFEC0",
+  "\u0636",
+  "\uFEC1",
+  "\u0637",
+  "\uFEC2",
+  "\u0637",
+  "\uFEC3",
+  "\u0637",
+  "\uFEC4",
+  "\u0637",
+  "\uFEC5",
+  "\u0638",
+  "\uFEC6",
+  "\u0638",
+  "\uFEC7",
+  "\u0638",
+  "\uFEC8",
+  "\u0638",
+  "\uFEC9",
+  "\u0639",
+  "\uFECA",
+  "\u0639",
+  "\uFECB",
+  "\u0639",
+  "\uFECC",
+  "\u0639",
+  "\uFECD",
+  "\u063A",
+  "\uFECE",
+  "\u063A",
+  "\uFECF",
+  "\u063A",
+  "\uFED0",
+  "\u063A",
+  "\uFED1",
+  "\u0641",
+  "\uFED2",
+  "\u0641",
+  "\uFED3",
+  "\u0641",
+  "\uFED4",
+  "\u0641",
+  "\uFED5",
+  "\u0642",
+  "\uFED6",
+  "\u0642",
+  "\uFED7",
+  "\u0642",
+  "\uFED8",
+  "\u0642",
+  "\uFED9",
+  "\u0643",
+  "\uFEDA",
+  "\u0643",
+  "\uFEDB",
+  "\u0643",
+  "\uFEDC",
+  "\u0643",
+  "\uFEDD",
+  "\u0644",
+  "\uFEDE",
+  "\u0644",
+  "\uFEDF",
+  "\u0644",
+  "\uFEE0",
+  "\u0644",
+  "\uFEE1",
+  "\u0645",
+  "\uFEE2",
+  "\u0645",
+  "\uFEE3",
+  "\u0645",
+  "\uFEE4",
+  "\u0645",
+  "\uFEE5",
+  "\u0646",
+  "\uFEE6",
+  "\u0646",
+  "\uFEE7",
+  "\u0646",
+  "\uFEE8",
+  "\u0646",
+  "\uFEE9",
+  "\u0647",
+  "\uFEEA",
+  "\u0647",
+  "\uFEEB",
+  "\u0647",
+  "\uFEEC",
+  "\u0647",
+  "\uFEED",
+  "\u0648",
+  "\uFEEE",
+  "\u0648",
+  "\uFEEF",
+  "\u0649",
+  "\uFEF0",
+  "\u0649",
+  "\uFEF1",
+  "\u064A",
+  "\uFEF2",
+  "\u064A",
+  "\uFEF3",
+  "\u064A",
+  "\uFEF4",
+  "\u064A",
+  "\uFEF5",
+  "\u0644\u0622",
+  "\uFEF6",
+  "\u0644\u0622",
+  "\uFEF7",
+  "\u0644\u0623",
+  "\uFEF8",
+  "\u0644\u0623",
+  "\uFEF9",
+  "\u0644\u0625",
+  "\uFEFA",
+  "\u0644\u0625",
+  "\uFEFB",
+  "\u0644\u0627",
+  "\uFEFC",
+  "\u0644\u0627"
+ ];
 });
 function reverseIfRtl(chars) {
  var charsLength = chars.length;
@@ -38598,31 +44838,26 @@ function reverseIfRtl(chars) {
  }
  return s;
 }
-exports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;
-exports.reverseIfRtl = reverseIfRtl;
-exports.getUnicodeRangeFor = getUnicodeRangeFor;
-exports.getNormalizedUnicodes = getNormalizedUnicodes;
-exports.getUnicodeForGlyph = getUnicodeForGlyph;
+
 
 /***/ }),
-/* 37 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 36 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.FontRendererFactory = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _cff_parser = __w_pdfjs_require__(31);
+var _cff_parser = __w_pdfjs_require__(30);
 
-var _glyphlist = __w_pdfjs_require__(34);
+var _glyphlist = __w_pdfjs_require__(33);
 
-var _encodings = __w_pdfjs_require__(33);
+var _encodings = __w_pdfjs_require__(32);
 
 var _stream = __w_pdfjs_require__(12);
 
@@ -39571,18 +45806,17 @@ var FontRendererFactory = function FontRendererFactoryClosure() {
 exports.FontRendererFactory = FontRendererFactory;
 
 /***/ }),
-/* 38 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 37 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.Type1Parser = void 0;
 
-var _encodings = __w_pdfjs_require__(33);
+var _encodings = __w_pdfjs_require__(32);
 
 var _core_utils = __w_pdfjs_require__(8);
 
@@ -40284,15 +46518,14 @@ var Type1Parser = function Type1ParserClosure() {
 exports.Type1Parser = Type1Parser;
 
 /***/ }),
-/* 39 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 38 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getTilingPatternIR = getTilingPatternIR;
 exports.Pattern = void 0;
 
@@ -40442,7 +46675,7 @@ Shadings.RadialAxial = function RadialAxialClosure() {
       fn(ratio, 0, color, 0);
       rgbColor = cs.getRgb(color, 0);
 
-      var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+      var cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);
 
       colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);
     }
@@ -40451,7 +46684,7 @@ Shadings.RadialAxial = function RadialAxialClosure() {
 
     if (dict.has("Background")) {
       rgbColor = cs.getRgb(dict.get("Background"), 0);
-      background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+      background = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);
     }
 
     if (!extendStart) {
@@ -41218,7 +47451,7 @@ Shadings.Dummy = function DummyClosure() {
   return Dummy;
 }();
 
-function getTilingPatternIR(operatorList, dict, args) {
+function getTilingPatternIR(operatorList, dict, color) {
   const matrix = dict.getArray("Matrix");
 
   const bbox = _util.Util.normalizeRect(dict.getArray("BBox"));
@@ -41232,27 +47465,26 @@ function getTilingPatternIR(operatorList, dict, args) {
     throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);
   }
 
-  return ["TilingPattern", args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
+  return ["TilingPattern", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
 }
 
 /***/ }),
-/* 40 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 39 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.isPDFFunction = isPDFFunction;
-exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = void 0;
+exports.PostScriptEvaluator = exports.PostScriptCompiler = exports.PDFFunctionFactory = void 0;
 
 var _primitives = __w_pdfjs_require__(5);
 
 var _util = __w_pdfjs_require__(2);
 
-var _ps_parser = __w_pdfjs_require__(41);
+var _ps_parser = __w_pdfjs_require__(40);
 
 var _image_utils = __w_pdfjs_require__(24);
 
@@ -41263,7 +47495,6 @@ class PDFFunctionFactory {
   }) {
     this.xref = xref;
     this.isEvalSupported = isEvalSupported !== false;
-    this._localFunctionCache = null;
   }
 
   create(fn) {
@@ -41314,10 +47545,6 @@ class PDFFunctionFactory {
     }
 
     if (fnRef) {
-      if (!this._localFunctionCache) {
-        this._localFunctionCache = new _image_utils.LocalFunctionCache();
-      }
-
       const localFunction = this._localFunctionCache.getByRef(fnRef);
 
       if (localFunction) {
@@ -41344,14 +47571,14 @@ class PDFFunctionFactory {
     }
 
     if (fnRef) {
-      if (!this._localFunctionCache) {
-        this._localFunctionCache = new _image_utils.LocalFunctionCache();
-      }
-
       this._localFunctionCache.set(null, fnRef, parsedFunction);
     }
   }
 
+  get _localFunctionCache() {
+    return (0, _util.shadow)(this, "_localFunctionCache", new _image_utils.LocalFunctionCache());
+  }
+
 }
 
 exports.PDFFunctionFactory = PDFFunctionFactory;
@@ -42659,15 +48886,14 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
 exports.PostScriptCompiler = PostScriptCompiler;
 
 /***/ }),
-/* 41 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 40 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PostScriptParser = exports.PostScriptLexer = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -42913,15 +49139,14 @@ class PostScriptLexer {
 exports.PostScriptLexer = PostScriptLexer;
 
 /***/ }),
-/* 42 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 41 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.bidi = bidi;
 
 var _util = __w_pdfjs_require__(2);
@@ -43225,15 +49450,14 @@ function bidi(str, startLevel, vertical) {
 }
 
 /***/ }),
-/* 43 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 42 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.getMetrics = void 0;
 
 var _core_utils = __w_pdfjs_require__(8);
@@ -46179,15 +52403,14 @@ var getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
 exports.getMetrics = getMetrics;
 
 /***/ }),
-/* 44 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 43 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.MurmurHash3_64 = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -46202,792 +52425,2293 @@ class MurmurHash3_64 {
     this.h2 = seed ? seed & 0xffffffff : SEED;
   }
 
-  update(input) {
-    let data, length;
+  update(input) {
+    let data, length;
+
+    if ((0, _util.isString)(input)) {
+      data = new Uint8Array(input.length * 2);
+      length = 0;
+
+      for (let i = 0, ii = input.length; i < ii; i++) {
+        const code = input.charCodeAt(i);
+
+        if (code <= 0xff) {
+          data[length++] = code;
+        } else {
+          data[length++] = code >>> 8;
+          data[length++] = code & 0xff;
+        }
+      }
+    } else if ((0, _util.isArrayBuffer)(input)) {
+      data = input.slice();
+      length = data.byteLength;
+    } else {
+      throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array.");
+    }
+
+    const blockCounts = length >> 2;
+    const tailLength = length - blockCounts * 4;
+    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
+    let k1 = 0,
+        k2 = 0;
+    let h1 = this.h1,
+        h2 = this.h2;
+    const C1 = 0xcc9e2d51,
+          C2 = 0x1b873593;
+    const C1_LOW = C1 & MASK_LOW,
+          C2_LOW = C2 & MASK_LOW;
+
+    for (let i = 0; i < blockCounts; i++) {
+      if (i & 1) {
+        k1 = dataUint32[i];
+        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+        k1 = k1 << 15 | k1 >>> 17;
+        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+        h1 ^= k1;
+        h1 = h1 << 13 | h1 >>> 19;
+        h1 = h1 * 5 + 0xe6546b64;
+      } else {
+        k2 = dataUint32[i];
+        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
+        k2 = k2 << 15 | k2 >>> 17;
+        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
+        h2 ^= k2;
+        h2 = h2 << 13 | h2 >>> 19;
+        h2 = h2 * 5 + 0xe6546b64;
+      }
+    }
+
+    k1 = 0;
+
+    switch (tailLength) {
+      case 3:
+        k1 ^= data[blockCounts * 4 + 2] << 16;
+
+      case 2:
+        k1 ^= data[blockCounts * 4 + 1] << 8;
+
+      case 1:
+        k1 ^= data[blockCounts * 4];
+        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+        k1 = k1 << 15 | k1 >>> 17;
+        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+
+        if (blockCounts & 1) {
+          h1 ^= k1;
+        } else {
+          h2 ^= k1;
+        }
+
+    }
+
+    this.h1 = h1;
+    this.h2 = h2;
+  }
+
+  hexdigest() {
+    let h1 = this.h1,
+        h2 = this.h2;
+    h1 ^= h2 >>> 1;
+    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
+    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
+    h1 ^= h2 >>> 1;
+    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
+    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
+    h1 ^= h2 >>> 1;
+    const hex1 = (h1 >>> 0).toString(16),
+          hex2 = (h2 >>> 0).toString(16);
+    return hex1.padStart(8, "0") + hex2.padStart(8, "0");
+  }
+
+}
+
+exports.MurmurHash3_64 = MurmurHash3_64;
+
+/***/ }),
+/* 44 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.OperatorList = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var QueueOptimizer = function QueueOptimizerClosure() {
+  function addState(parentState, pattern, checkFn, iterateFn, processFn) {
+    var state = parentState;
+
+    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
+      var item = pattern[i];
+      state = state[item] || (state[item] = []);
+    }
+
+    state[pattern[pattern.length - 1]] = {
+      checkFn,
+      iterateFn,
+      processFn
+    };
+  }
+
+  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
+    var iFirstPIMXO = iFirstSave + 2;
+
+    for (var i = 0; i < count; i++) {
+      var arg = argsArray[iFirstPIMXO + 4 * i];
+      var imageMask = arg.length === 1 && arg[0];
+
+      if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || 
imageMask.data.length === 1 && imageMask.data[0] === 0)) {
+        fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;
+        continue;
+      }
+
+      break;
+    }
+
+    return count - i;
+  }
+
+  var InitialState = [];
+  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, 
_util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
+    var fnArray = context.fnArray;
+    var iFirstSave = context.iCurr - 3;
+    var pos = (i - iFirstSave) % 4;
+
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.save;
+
+      case 1:
+        return fnArray[i] === _util.OPS.transform;
+
+      case 2:
+        return fnArray[i] === _util.OPS.paintInlineImageXObject;
+
+      case 3:
+        return fnArray[i] === _util.OPS.restore;
+    }
+
+    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);
+  }, function foundInlineImageGroup(context, i) {
+    var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
+    var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
+    var MAX_WIDTH = 1000;
+    var IMAGE_PADDING = 1;
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var curr = context.iCurr;
+    var iFirstSave = curr - 3;
+    var iFirstTransform = curr - 2;
+    var iFirstPIIXO = curr - 1;
+    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
+
+    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
+      return i - (i - iFirstSave) % 4;
+    }
+
+    var maxX = 0;
+    var map = [],
+        maxLineHeight = 0;
+    var currentX = IMAGE_PADDING,
+        currentY = IMAGE_PADDING;
+    var q;
+
+    for (q = 0; q < count; q++) {
+      var transform = argsArray[iFirstTransform + (q << 2)];
+      var img = argsArray[iFirstPIIXO + (q << 2)][0];
+
+      if (currentX + img.width > MAX_WIDTH) {
+        maxX = Math.max(maxX, currentX);
+        currentY += maxLineHeight + 2 * IMAGE_PADDING;
+        currentX = 0;
+        maxLineHeight = 0;
+      }
+
+      map.push({
+        transform,
+        x: currentX,
+        y: currentY,
+        w: img.width,
+        h: img.height
+      });
+      currentX += img.width + 2 * IMAGE_PADDING;
+      maxLineHeight = Math.max(maxLineHeight, img.height);
+    }
+
+    var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
+    var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
+    var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
+    var imgRowSize = imgWidth << 2;
+
+    for (q = 0; q < count; q++) {
+      var data = argsArray[iFirstPIIXO + (q << 2)][0].data;
+      var rowSize = map[q].w << 2;
+      var dataOffset = 0;
+      var offset = map[q].x + map[q].y * imgWidth << 2;
+      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
+
+      for (var k = 0, kk = map[q].h; k < kk; k++) {
+        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
+        dataOffset += rowSize;
+        offset += imgRowSize;
+      }
+
+      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
+
+      while (offset >= 0) {
+        data[offset - 4] = data[offset];
+        data[offset - 3] = data[offset + 1];
+        data[offset - 2] = data[offset + 2];
+        data[offset - 1] = data[offset + 3];
+        data[offset + rowSize] = data[offset + rowSize - 4];
+        data[offset + rowSize + 1] = data[offset + rowSize - 3];
+        data[offset + rowSize + 2] = data[offset + rowSize - 2];
+        data[offset + rowSize + 3] = data[offset + rowSize - 1];
+        offset -= imgRowSize;
+      }
+    }
+
+    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);
+    argsArray.splice(iFirstSave, count * 4, [{
+      width: imgWidth,
+      height: imgHeight,
+      kind: _util.ImageKind.RGBA_32BPP,
+      data: imgData
+    }, map]);
+    return iFirstSave + 1;
+  });
+  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, 
_util.OPS.restore], null, function iterateImageMaskGroup(context, i) {
+    var fnArray = context.fnArray;
+    var iFirstSave = context.iCurr - 3;
+    var pos = (i - iFirstSave) % 4;
+
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.save;
+
+      case 1:
+        return fnArray[i] === _util.OPS.transform;
+
+      case 2:
+        return fnArray[i] === _util.OPS.paintImageMaskXObject;
+
+      case 3:
+        return fnArray[i] === _util.OPS.restore;
+    }
+
+    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);
+  }, function foundImageMaskGroup(context, i) {
+    var MIN_IMAGES_IN_MASKS_BLOCK = 10;
+    var MAX_IMAGES_IN_MASKS_BLOCK = 100;
+    var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var curr = context.iCurr;
+    var iFirstSave = curr - 3;
+    var iFirstTransform = curr - 2;
+    var iFirstPIMXO = curr - 1;
+    var count = Math.floor((i - iFirstSave) / 4);
+    count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
+
+    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
+      return i - (i - iFirstSave) % 4;
+    }
+
+    var q;
+    var isSameImage = false;
+    var iTransform, transformArgs;
+    var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
+    const firstTransformArg0 = argsArray[iFirstTransform][0],
+          firstTransformArg1 = argsArray[iFirstTransform][1],
+          firstTransformArg2 = argsArray[iFirstTransform][2],
+          firstTransformArg3 = argsArray[iFirstTransform][3];
+
+    if (firstTransformArg1 === firstTransformArg2) {
+      isSameImage = true;
+      iTransform = iFirstTransform + 4;
+      var iPIMXO = iFirstPIMXO + 4;
+
+      for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
+        transformArgs = argsArray[iTransform];
+
+        if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || 
transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== 
firstTransformArg3) {
+          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
+            isSameImage = false;
+          } else {
+            count = q;
+          }
+
+          break;
+        }
+      }
+    }
+
+    if (isSameImage) {
+      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
+      var positions = new Float32Array(count * 2);
+      iTransform = iFirstTransform;
+
+      for (q = 0; q < count; q++, iTransform += 4) {
+        transformArgs = argsArray[iTransform];
+        positions[q << 1] = transformArgs[4];
+        positions[(q << 1) + 1] = transformArgs[5];
+      }
+
+      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
+      argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, 
firstTransformArg2, firstTransformArg3, positions]);
+    } else {
+      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
+      var images = [];
+
+      for (q = 0; q < count; q++) {
+        transformArgs = argsArray[iFirstTransform + (q << 2)];
+        var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];
+        images.push({
+          data: maskParams.data,
+          width: maskParams.width,
+          height: maskParams.height,
+          transform: transformArgs
+        });
+      }
+
+      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);
+      argsArray.splice(iFirstSave, count * 4, [images]);
+    }
+
+    return iFirstSave + 1;
+  });
+  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, 
_util.OPS.restore], function (context) {
+    var argsArray = context.argsArray;
+    var iFirstTransform = context.iCurr - 2;
+    return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
+  }, function iterateImageGroup(context, i) {
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var iFirstSave = context.iCurr - 3;
+    var pos = (i - iFirstSave) % 4;
+
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.save;
+
+      case 1:
+        if (fnArray[i] !== _util.OPS.transform) {
+          return false;
+        }
+
+        var iFirstTransform = context.iCurr - 2;
+        var firstTransformArg0 = argsArray[iFirstTransform][0];
+        var firstTransformArg3 = argsArray[iFirstTransform][3];
+
+        if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || 
argsArray[i][3] !== firstTransformArg3) {
+          return false;
+        }
+
+        return true;
+
+      case 2:
+        if (fnArray[i] !== _util.OPS.paintImageXObject) {
+          return false;
+        }
+
+        var iFirstPIXO = context.iCurr - 1;
+        var firstPIXOArg0 = argsArray[iFirstPIXO][0];
+
+        if (argsArray[i][0] !== firstPIXOArg0) {
+          return false;
+        }
+
+        return true;
+
+      case 3:
+        return fnArray[i] === _util.OPS.restore;
+    }
+
+    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);
+  }, function (context, i) {
+    var MIN_IMAGES_IN_BLOCK = 3;
+    var MAX_IMAGES_IN_BLOCK = 1000;
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var curr = context.iCurr;
+    var iFirstSave = curr - 3;
+    var iFirstTransform = curr - 2;
+    var iFirstPIXO = curr - 1;
+    var firstPIXOArg0 = argsArray[iFirstPIXO][0];
+    var firstTransformArg0 = argsArray[iFirstTransform][0];
+    var firstTransformArg3 = argsArray[iFirstTransform][3];
+    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
+
+    if (count < MIN_IMAGES_IN_BLOCK) {
+      return i - (i - iFirstSave) % 4;
+    }
+
+    var positions = new Float32Array(count * 2);
+    var iTransform = iFirstTransform;
+
+    for (var q = 0; q < count; q++, iTransform += 4) {
+      var transformArgs = argsArray[iTransform];
+      positions[q << 1] = transformArgs[4];
+      positions[(q << 1) + 1] = transformArgs[5];
+    }
+
+    var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];
+    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);
+    argsArray.splice(iFirstSave, count * 4, args);
+    return iFirstSave + 1;
+  });
+  addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, 
_util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var iFirstSave = context.iCurr - 4;
+    var pos = (i - iFirstSave) % 5;
+
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.beginText;
+
+      case 1:
+        return fnArray[i] === _util.OPS.setFont;
+
+      case 2:
+        return fnArray[i] === _util.OPS.setTextMatrix;
+
+      case 3:
+        if (fnArray[i] !== _util.OPS.showText) {
+          return false;
+        }
+
+        var iFirstSetFont = context.iCurr - 3;
+        var firstSetFontArg0 = argsArray[iFirstSetFont][0];
+        var firstSetFontArg1 = argsArray[iFirstSetFont][1];
+
+        if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
+          return false;
+        }
+
+        return true;
+
+      case 4:
+        return fnArray[i] === _util.OPS.endText;
+    }
+
+    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);
+  }, function (context, i) {
+    var MIN_CHARS_IN_BLOCK = 3;
+    var MAX_CHARS_IN_BLOCK = 1000;
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var curr = context.iCurr;
+    var iFirstBeginText = curr - 4;
+    var iFirstSetFont = curr - 3;
+    var iFirstSetTextMatrix = curr - 2;
+    var iFirstShowText = curr - 1;
+    var iFirstEndText = curr;
+    var firstSetFontArg0 = argsArray[iFirstSetFont][0];
+    var firstSetFontArg1 = argsArray[iFirstSetFont][1];
+    var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
+
+    if (count < MIN_CHARS_IN_BLOCK) {
+      return i - (i - iFirstBeginText) % 5;
+    }
+
+    var iFirst = iFirstBeginText;
+
+    if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && 
fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === 
fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && 
argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === 
firstSetFontArg1) {
+      count++;
+      iFirst -= 5;
+    }
+
+    var iEndText = iFirst + 4;
+
+    for (var q = 1; q < count; q++) {
+      fnArray.splice(iEndText, 3);
+      argsArray.splice(iEndText, 3);
+      iEndText += 2;
+    }
+
+    return iEndText + 1;
+  });
+
+  function QueueOptimizer(queue) {
+    this.queue = queue;
+    this.state = null;
+    this.context = {
+      iCurr: 0,
+      fnArray: queue.fnArray,
+      argsArray: queue.argsArray
+    };
+    this.match = null;
+    this.lastProcessed = 0;
+  }
+
+  QueueOptimizer.prototype = {
+    _optimize() {
+      const fnArray = this.queue.fnArray;
+      let i = this.lastProcessed,
+          ii = fnArray.length;
+      let state = this.state;
+      let match = this.match;
+
+      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
+        this.lastProcessed = ii;
+        return;
+      }
+
+      const context = this.context;
+
+      while (i < ii) {
+        if (match) {
+          const iterate = (0, match.iterateFn)(context, i);
+
+          if (iterate) {
+            i++;
+            continue;
+          }
+
+          i = (0, match.processFn)(context, i + 1);
+          ii = fnArray.length;
+          match = null;
+          state = null;
+
+          if (i >= ii) {
+            break;
+          }
+        }
+
+        state = (state || InitialState)[fnArray[i]];
+
+        if (!state || Array.isArray(state)) {
+          i++;
+          continue;
+        }
+
+        context.iCurr = i;
+        i++;
+
+        if (state.checkFn && !(0, state.checkFn)(context)) {
+          state = null;
+          continue;
+        }
+
+        match = state;
+        state = null;
+      }
+
+      this.state = state;
+      this.match = match;
+      this.lastProcessed = i;
+    },
+
+    push(fn, args) {
+      this.queue.fnArray.push(fn);
+      this.queue.argsArray.push(args);
+
+      this._optimize();
+    },
+
+    flush() {
+      while (this.match) {
+        const length = this.queue.fnArray.length;
+        this.lastProcessed = (0, this.match.processFn)(this.context, length);
+        this.match = null;
+        this.state = null;
+
+        this._optimize();
+      }
+    },
+
+    reset() {
+      this.state = null;
+      this.match = null;
+      this.lastProcessed = 0;
+    }
+
+  };
+  return QueueOptimizer;
+}();
+
+var NullOptimizer = function NullOptimizerClosure() {
+  function NullOptimizer(queue) {
+    this.queue = queue;
+  }
+
+  NullOptimizer.prototype = {
+    push(fn, args) {
+      this.queue.fnArray.push(fn);
+      this.queue.argsArray.push(args);
+    },
+
+    flush() {},
+
+    reset() {}
+
+  };
+  return NullOptimizer;
+}();
+
+var OperatorList = function OperatorListClosure() {
+  var CHUNK_SIZE = 1000;
+  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
+
+  function OperatorList(intent, streamSink) {
+    this._streamSink = streamSink;
+    this.fnArray = [];
+    this.argsArray = [];
+
+    if (streamSink && intent !== "oplist") {
+      this.optimizer = new QueueOptimizer(this);
+    } else {
+      this.optimizer = new NullOptimizer(this);
+    }
+
+    this.dependencies = new Set();
+    this._totalLength = 0;
+    this.weight = 0;
+    this._resolved = streamSink ? null : Promise.resolve();
+  }
+
+  OperatorList.prototype = {
+    get length() {
+      return this.argsArray.length;
+    },
+
+    get ready() {
+      return this._resolved || this._streamSink.ready;
+    },
+
+    get totalLength() {
+      return this._totalLength + this.length;
+    },
+
+    addOp(fn, args) {
+      this.optimizer.push(fn, args);
+      this.weight++;
+
+      if (this._streamSink) {
+        if (this.weight >= CHUNK_SIZE) {
+          this.flush();
+        } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === 
_util.OPS.endText)) {
+          this.flush();
+        }
+      }
+    },
+
+    addDependency(dependency) {
+      if (this.dependencies.has(dependency)) {
+        return;
+      }
+
+      this.dependencies.add(dependency);
+      this.addOp(_util.OPS.dependency, [dependency]);
+    },
+
+    addDependencies(dependencies) {
+      for (const dependency of dependencies) {
+        this.addDependency(dependency);
+      }
+    },
+
+    addOpList(opList) {
+      if (!(opList instanceof OperatorList)) {
+        (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.');
+        return;
+      }
+
+      for (const dependency of opList.dependencies) {
+        this.dependencies.add(dependency);
+      }
+
+      for (var i = 0, ii = opList.length; i < ii; i++) {
+        this.addOp(opList.fnArray[i], opList.argsArray[i]);
+      }
+    },
+
+    getIR() {
+      return {
+        fnArray: this.fnArray,
+        argsArray: this.argsArray,
+        length: this.length
+      };
+    },
+
+    get _transfers() {
+      const transfers = [];
+      const {
+        fnArray,
+        argsArray,
+        length
+      } = this;
+
+      for (let i = 0; i < length; i++) {
+        switch (fnArray[i]) {
+          case _util.OPS.paintInlineImageXObject:
+          case _util.OPS.paintInlineImageXObjectGroup:
+          case _util.OPS.paintImageMaskXObject:
+            const arg = argsArray[i][0];
+            ;
+
+            if (!arg.cached) {
+              transfers.push(arg.data.buffer);
+            }
+
+            break;
+        }
+      }
+
+      return transfers;
+    },
+
+    flush(lastChunk = false) {
+      this.optimizer.flush();
+      const length = this.length;
+      this._totalLength += length;
+
+      this._streamSink.enqueue({
+        fnArray: this.fnArray,
+        argsArray: this.argsArray,
+        lastChunk,
+        length
+      }, 1, this._transfers);
+
+      this.dependencies.clear();
+      this.fnArray.length = 0;
+      this.argsArray.length = 0;
+      this.weight = 0;
+      this.optimizer.reset();
+    }
+
+  };
+  return OperatorList;
+}();
+
+exports.OperatorList = OperatorList;
+
+/***/ }),
+/* 45 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFImage = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _colorspace = __w_pdfjs_require__(23);
+
+var _stream = __w_pdfjs_require__(12);
+
+var _jpeg_stream = __w_pdfjs_require__(18);
+
+var _jpx = __w_pdfjs_require__(21);
+
+function decodeAndClamp(value, addend, coefficient, max) {
+  value = addend + value * coefficient;
+
+  if (value < 0) {
+    value = 0;
+  } else if (value > max) {
+    value = max;
+  }
+
+  return value;
+}
+
+function resizeImageMask(src, bpc, w1, h1, w2, h2) {
+  var length = w2 * h2;
+  let dest;
+
+  if (bpc <= 8) {
+    dest = new Uint8Array(length);
+  } else if (bpc <= 16) {
+    dest = new Uint16Array(length);
+  } else {
+    dest = new Uint32Array(length);
+  }
+
+  var xRatio = w1 / w2;
+  var yRatio = h1 / h2;
+  var i,
+      j,
+      py,
+      newIndex = 0,
+      oldIndex;
+  var xScaled = new Uint16Array(w2);
+  var w1Scanline = w1;
+
+  for (i = 0; i < w2; i++) {
+    xScaled[i] = Math.floor(i * xRatio);
+  }
+
+  for (i = 0; i < h2; i++) {
+    py = Math.floor(i * yRatio) * w1Scanline;
+
+    for (j = 0; j < w2; j++) {
+      oldIndex = py + xScaled[j];
+      dest[newIndex++] = src[oldIndex];
+    }
+  }
+
+  return dest;
+}
+
+class PDFImage {
+  constructor({
+    xref,
+    res,
+    image,
+    isInline = false,
+    smask = null,
+    mask = null,
+    isMask = false,
+    pdfFunctionFactory,
+    localColorSpaceCache
+  }) {
+    this.image = image;
+    var dict = image.dict;
+    const filter = dict.get("Filter");
+
+    if ((0, _primitives.isName)(filter)) {
+      switch (filter.name) {
+        case "JPXDecode":
+          var jpxImage = new _jpx.JpxImage();
+          jpxImage.parseImageProperties(image.stream);
+          image.stream.reset();
+          image.width = jpxImage.width;
+          image.height = jpxImage.height;
+          image.bitsPerComponent = jpxImage.bitsPerComponent;
+          image.numComps = jpxImage.componentsCount;
+          break;
+
+        case "JBIG2Decode":
+          image.bitsPerComponent = 1;
+          image.numComps = 1;
+          break;
+      }
+    }
+
+    let width = dict.get("Width", "W");
+    let height = dict.get("Height", "H");
+
+    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 
0 && (image.width !== width || image.height !== height)) {
+      (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image 
dictionary.");
+      width = image.width;
+      height = image.height;
+    }
+
+    if (width < 1 || height < 1) {
+      throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);
+    }
+
+    this.width = width;
+    this.height = height;
+    this.interpolate = dict.get("Interpolate", "I") || false;
+    this.imageMask = dict.get("ImageMask", "IM") || false;
+    this.matte = dict.get("Matte") || false;
+    var bitsPerComponent = image.bitsPerComponent;
+
+    if (!bitsPerComponent) {
+      bitsPerComponent = dict.get("BitsPerComponent", "BPC");
+
+      if (!bitsPerComponent) {
+        if (this.imageMask) {
+          bitsPerComponent = 1;
+        } else {
+          throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`);
+        }
+      }
+    }
+
+    this.bpc = bitsPerComponent;
+
+    if (!this.imageMask) {
+      let colorSpace = dict.getRaw("ColorSpace") || dict.getRaw("CS");
+
+      if (!colorSpace) {
+        (0, _util.info)("JPX images (which do not require color spaces)");
+
+        switch (image.numComps) {
+          case 1:
+            colorSpace = _primitives.Name.get("DeviceGray");
+            break;
+
+          case 3:
+            colorSpace = _primitives.Name.get("DeviceRGB");
+            break;
+
+          case 4:
+            colorSpace = _primitives.Name.get("DeviceCMYK");
+            break;
+
+          default:
+            throw new Error(`JPX images with ${image.numComps} ` + "color components not supported.");
+        }
+      }
+
+      this.colorSpace = _colorspace.ColorSpace.parse({
+        cs: colorSpace,
+        xref,
+        resources: isInline ? res : null,
+        pdfFunctionFactory,
+        localColorSpaceCache
+      });
+      this.numComps = this.colorSpace.numComps;
+    }
+
+    this.decode = dict.getArray("Decode", "D");
+    this.needsDecode = false;
+
+    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) 
|| isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
+      this.needsDecode = true;
+      var max = (1 << bitsPerComponent) - 1;
+      this.decodeCoefficients = [];
+      this.decodeAddends = [];
+      const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed";
+
+      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
+        var dmin = this.decode[i];
+        var dmax = this.decode[i + 1];
+        this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;
+        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;
+      }
+    }
+
+    if (smask) {
+      this.smask = new PDFImage({
+        xref,
+        res,
+        image: smask,
+        isInline,
+        pdfFunctionFactory,
+        localColorSpaceCache
+      });
+    } else if (mask) {
+      if ((0, _primitives.isStream)(mask)) {
+        var maskDict = mask.dict,
+            imageMask = maskDict.get("ImageMask", "IM");
+
+        if (!imageMask) {
+          (0, _util.warn)("Ignoring /Mask in image without /ImageMask.");
+        } else {
+          this.mask = new PDFImage({
+            xref,
+            res,
+            image: mask,
+            isInline,
+            isMask: true,
+            pdfFunctionFactory,
+            localColorSpaceCache
+          });
+        }
+      } else {
+        this.mask = mask;
+      }
+    }
+  }
+
+  static async buildImage({
+    xref,
+    res,
+    image,
+    isInline = false,
+    pdfFunctionFactory,
+    localColorSpaceCache
+  }) {
+    const imageData = image;
+    let smaskData = null;
+    let maskData = null;
+    const smask = image.dict.get("SMask");
+    const mask = image.dict.get("Mask");
+
+    if (smask) {
+      smaskData = smask;
+    } else if (mask) {
+      if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {
+        maskData = mask;
+      } else {
+        (0, _util.warn)("Unsupported mask format.");
+      }
+    }
+
+    return new PDFImage({
+      xref,
+      res,
+      image: imageData,
+      isInline,
+      smask: smaskData,
+      mask: maskData,
+      pdfFunctionFactory,
+      localColorSpaceCache
+    });
+  }
+
+  static createMask({
+    imgArray,
+    width,
+    height,
+    imageIsFromDecodeStream,
+    inverseDecode
+  }) {
+    var computedLength = (width + 7 >> 3) * height;
+    var actualLength = imgArray.byteLength;
+    var haveFullData = computedLength === actualLength;
+    var data, i;
+
+    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
+      data = imgArray;
+    } else if (!inverseDecode) {
+      data = new Uint8ClampedArray(actualLength);
+      data.set(imgArray);
+    } else {
+      data = new Uint8ClampedArray(computedLength);
+      data.set(imgArray);
+
+      for (i = actualLength; i < computedLength; i++) {
+        data[i] = 0xff;
+      }
+    }
+
+    if (inverseDecode) {
+      for (i = 0; i < actualLength; i++) {
+        data[i] ^= 0xff;
+      }
+    }
+
+    return {
+      data,
+      width,
+      height
+    };
+  }
+
+  get drawWidth() {
+    return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
+  }
+
+  get drawHeight() {
+    return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
+  }
+
+  decodeBuffer(buffer) {
+    var bpc = this.bpc;
+    var numComps = this.numComps;
+    var decodeAddends = this.decodeAddends;
+    var decodeCoefficients = this.decodeCoefficients;
+    var max = (1 << bpc) - 1;
+    var i, ii;
+
+    if (bpc === 1) {
+      for (i = 0, ii = buffer.length; i < ii; i++) {
+        buffer[i] = +!buffer[i];
+      }
+
+      return;
+    }
+
+    var index = 0;
+
+    for (i = 0, ii = this.width * this.height; i < ii; i++) {
+      for (var j = 0; j < numComps; j++) {
+        buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
+        index++;
+      }
+    }
+  }
+
+  getComponents(buffer) {
+    var bpc = this.bpc;
+
+    if (bpc === 8) {
+      return buffer;
+    }
+
+    var width = this.width;
+    var height = this.height;
+    var numComps = this.numComps;
+    var length = width * height * numComps;
+    var bufferPos = 0;
+    let output;
+
+    if (bpc <= 8) {
+      output = new Uint8Array(length);
+    } else if (bpc <= 16) {
+      output = new Uint16Array(length);
+    } else {
+      output = new Uint32Array(length);
+    }
+
+    var rowComps = width * numComps;
+    var max = (1 << bpc) - 1;
+    var i = 0,
+        ii,
+        buf;
+
+    if (bpc === 1) {
+      var mask, loop1End, loop2End;
+
+      for (var j = 0; j < height; j++) {
+        loop1End = i + (rowComps & ~7);
+        loop2End = i + rowComps;
+
+        while (i < loop1End) {
+          buf = buffer[bufferPos++];
+          output[i] = buf >> 7 & 1;
+          output[i + 1] = buf >> 6 & 1;
+          output[i + 2] = buf >> 5 & 1;
+          output[i + 3] = buf >> 4 & 1;
+          output[i + 4] = buf >> 3 & 1;
+          output[i + 5] = buf >> 2 & 1;
+          output[i + 6] = buf >> 1 & 1;
+          output[i + 7] = buf & 1;
+          i += 8;
+        }
+
+        if (i < loop2End) {
+          buf = buffer[bufferPos++];
+          mask = 128;
+
+          while (i < loop2End) {
+            output[i++] = +!!(buf & mask);
+            mask >>= 1;
+          }
+        }
+      }
+    } else {
+      var bits = 0;
+      buf = 0;
+
+      for (i = 0, ii = length; i < ii; ++i) {
+        if (i % rowComps === 0) {
+          buf = 0;
+          bits = 0;
+        }
+
+        while (bits < bpc) {
+          buf = buf << 8 | buffer[bufferPos++];
+          bits += 8;
+        }
+
+        var remainingBits = bits - bpc;
+        let value = buf >> remainingBits;
+
+        if (value < 0) {
+          value = 0;
+        } else if (value > max) {
+          value = max;
+        }
+
+        output[i] = value;
+        buf = buf & (1 << remainingBits) - 1;
+        bits = remainingBits;
+      }
+    }
+
+    return output;
+  }
+
+  fillOpacity(rgbaBuf, width, height, actualHeight, image) {
+    var smask = this.smask;
+    var mask = this.mask;
+    var alphaBuf, sw, sh, i, ii, j;
+
+    if (smask) {
+      sw = smask.width;
+      sh = smask.height;
+      alphaBuf = new Uint8ClampedArray(sw * sh);
+      smask.fillGrayBuffer(alphaBuf);
+
+      if (sw !== width || sh !== height) {
+        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
+      }
+    } else if (mask) {
+      if (mask instanceof PDFImage) {
+        sw = mask.width;
+        sh = mask.height;
+        alphaBuf = new Uint8ClampedArray(sw * sh);
+        mask.numComps = 1;
+        mask.fillGrayBuffer(alphaBuf);
+
+        for (i = 0, ii = sw * sh; i < ii; ++i) {
+          alphaBuf[i] = 255 - alphaBuf[i];
+        }
+
+        if (sw !== width || sh !== height) {
+          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
+        }
+      } else if (Array.isArray(mask)) {
+        alphaBuf = new Uint8ClampedArray(width * height);
+        var numComps = this.numComps;
+
+        for (i = 0, ii = width * height; i < ii; ++i) {
+          var opacity = 0;
+          var imageOffset = i * numComps;
+
+          for (j = 0; j < numComps; ++j) {
+            var color = image[imageOffset + j];
+            var maskOffset = j * 2;
+
+            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
+              opacity = 255;
+              break;
+            }
+          }
+
+          alphaBuf[i] = opacity;
+        }
+      } else {
+        throw new _util.FormatError("Unknown mask format.");
+      }
+    }
+
+    if (alphaBuf) {
+      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
+        rgbaBuf[j] = alphaBuf[i];
+      }
+    } else {
+      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
+        rgbaBuf[j] = 255;
+      }
+    }
+  }
+
+  undoPreblend(buffer, width, height) {
+    var matte = this.smask && this.smask.matte;
+
+    if (!matte) {
+      return;
+    }
+
+    var matteRgb = this.colorSpace.getRgb(matte, 0);
+    var matteR = matteRgb[0];
+    var matteG = matteRgb[1];
+    var matteB = matteRgb[2];
+    var length = width * height * 4;
+
+    for (var i = 0; i < length; i += 4) {
+      var alpha = buffer[i + 3];
+
+      if (alpha === 0) {
+        buffer[i] = 255;
+        buffer[i + 1] = 255;
+        buffer[i + 2] = 255;
+        continue;
+      }
+
+      var k = 255 / alpha;
+      buffer[i] = (buffer[i] - matteR) * k + matteR;
+      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
+      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
+    }
+  }
+
+  createImageData(forceRGBA = false) {
+    var drawWidth = this.drawWidth;
+    var drawHeight = this.drawHeight;
+    var imgData = {
+      width: drawWidth,
+      height: drawHeight,
+      kind: 0,
+      data: null
+    };
+    var numComps = this.numComps;
+    var originalWidth = this.width;
+    var originalHeight = this.height;
+    var bpc = this.bpc;
+    var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
+    var imgArray;
+
+    if (!forceRGBA) {
+      var kind;
+
+      if (this.colorSpace.name === "DeviceGray" && bpc === 1) {
+        kind = _util.ImageKind.GRAYSCALE_1BPP;
+      } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) {
+        kind = _util.ImageKind.RGB_24BPP;
+      }
+
+      if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) 
{
+        imgData.kind = kind;
+        imgArray = this.getImageBytes(originalHeight * rowBytes);
+
+        if (this.image instanceof _stream.DecodeStream) {
+          imgData.data = imgArray;
+        } else {
+          var newArray = new Uint8ClampedArray(imgArray.length);
+          newArray.set(imgArray);
+          imgData.data = newArray;
+        }
+
+        if (this.needsDecode) {
+          (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image 
must be grayscale.");
+          var buffer = imgData.data;
+
+          for (var i = 0, ii = buffer.length; i < ii; i++) {
+            buffer[i] ^= 0xff;
+          }
+        }
 
-    if ((0, _util.isString)(input)) {
-      data = new Uint8Array(input.length * 2);
-      length = 0;
+        return imgData;
+      }
 
-      for (let i = 0, ii = input.length; i < ii; i++) {
-        const code = input.charCodeAt(i);
+      if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
+        let imageLength = originalHeight * rowBytes;
 
-        if (code <= 0xff) {
-          data[length++] = code;
-        } else {
-          data[length++] = code >>> 8;
-          data[length++] = code & 0xff;
+        switch (this.colorSpace.name) {
+          case "DeviceGray":
+            imageLength *= 3;
+
+          case "DeviceRGB":
+          case "DeviceCMYK":
+            imgData.kind = _util.ImageKind.RGB_24BPP;
+            imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
+            return imgData;
         }
       }
-    } else if ((0, _util.isArrayBuffer)(input)) {
-      data = input;
-      length = data.byteLength;
+    }
+
+    imgArray = this.getImageBytes(originalHeight * rowBytes);
+    var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
+    var comps = this.getComponents(imgArray);
+    var alpha01, maybeUndoPreblend;
+
+    if (!forceRGBA && !this.smask && !this.mask) {
+      imgData.kind = _util.ImageKind.RGB_24BPP;
+      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
+      alpha01 = 0;
+      maybeUndoPreblend = false;
     } else {
-      throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array.");
+      imgData.kind = _util.ImageKind.RGBA_32BPP;
+      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
+      alpha01 = 1;
+      maybeUndoPreblend = true;
+      this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
     }
 
-    const blockCounts = length >> 2;
-    const tailLength = length - blockCounts * 4;
-    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
-    let k1 = 0,
-        k2 = 0;
-    let h1 = this.h1,
-        h2 = this.h2;
-    const C1 = 0xcc9e2d51,
-          C2 = 0x1b873593;
-    const C1_LOW = C1 & MASK_LOW,
-          C2_LOW = C2 & MASK_LOW;
+    if (this.needsDecode) {
+      this.decodeBuffer(comps);
+    }
 
-    for (let i = 0; i < blockCounts; i++) {
-      if (i & 1) {
-        k1 = dataUint32[i];
-        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
-        k1 = k1 << 15 | k1 >>> 17;
-        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
-        h1 ^= k1;
-        h1 = h1 << 13 | h1 >>> 19;
-        h1 = h1 * 5 + 0xe6546b64;
-      } else {
-        k2 = dataUint32[i];
-        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
-        k2 = k2 << 15 | k2 >>> 17;
-        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
-        h2 ^= k2;
-        h2 = h2 << 13 | h2 >>> 19;
-        h2 = h2 * 5 + 0xe6546b64;
-      }
+    this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, 
actualHeight, bpc, comps, alpha01);
+
+    if (maybeUndoPreblend) {
+      this.undoPreblend(imgData.data, drawWidth, actualHeight);
     }
 
-    k1 = 0;
+    return imgData;
+  }
 
-    switch (tailLength) {
-      case 3:
-        k1 ^= data[blockCounts * 4 + 2] << 16;
+  fillGrayBuffer(buffer) {
+    var numComps = this.numComps;
 
-      case 2:
-        k1 ^= data[blockCounts * 4 + 1] << 8;
+    if (numComps !== 1) {
+      throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);
+    }
 
-      case 1:
-        k1 ^= data[blockCounts * 4];
-        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
-        k1 = k1 << 15 | k1 >>> 17;
-        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+    var width = this.width;
+    var height = this.height;
+    var bpc = this.bpc;
+    var rowBytes = width * numComps * bpc + 7 >> 3;
+    var imgArray = this.getImageBytes(height * rowBytes);
+    var comps = this.getComponents(imgArray);
+    var i, length;
 
-        if (blockCounts & 1) {
-          h1 ^= k1;
-        } else {
-          h2 ^= k1;
+    if (bpc === 1) {
+      length = width * height;
+
+      if (this.needsDecode) {
+        for (i = 0; i < length; ++i) {
+          buffer[i] = comps[i] - 1 & 255;
         }
+      } else {
+        for (i = 0; i < length; ++i) {
+          buffer[i] = -comps[i] & 255;
+        }
+      }
 
+      return;
     }
 
-    this.h1 = h1;
-    this.h2 = h2;
+    if (this.needsDecode) {
+      this.decodeBuffer(comps);
+    }
+
+    length = width * height;
+    var scale = 255 / ((1 << bpc) - 1);
+
+    for (i = 0; i < length; ++i) {
+      buffer[i] = scale * comps[i];
+    }
   }
 
-  hexdigest() {
-    let h1 = this.h1,
-        h2 = this.h2;
-    h1 ^= h2 >>> 1;
-    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
-    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
-    h1 ^= h2 >>> 1;
-    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
-    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
-    h1 ^= h2 >>> 1;
-    const hex1 = (h1 >>> 0).toString(16),
-          hex2 = (h2 >>> 0).toString(16);
-    return hex1.padStart(8, "0") + hex2.padStart(8, "0");
+  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
+    this.image.reset();
+    this.image.drawWidth = drawWidth || this.width;
+    this.image.drawHeight = drawHeight || this.height;
+    this.image.forceRGB = !!forceRGB;
+    return this.image.getBytes(length, true);
   }
 
 }
 
-exports.MurmurHash3_64 = MurmurHash3_64;
+exports.PDFImage = PDFImage;
 
 /***/ }),
-/* 45 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 46 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFImage = void 0;
+}));
+exports.incrementalUpdate = incrementalUpdate;
+exports.writeDict = writeDict;
 
 var _util = __w_pdfjs_require__(2);
 
 var _primitives = __w_pdfjs_require__(5);
 
-var _colorspace = __w_pdfjs_require__(23);
+var _core_utils = __w_pdfjs_require__(8);
 
-var _stream = __w_pdfjs_require__(12);
+var _xml_parser = __w_pdfjs_require__(47);
 
-var _jpeg_stream = __w_pdfjs_require__(18);
+var _crypto = __w_pdfjs_require__(22);
 
-var _jpx = __w_pdfjs_require__(21);
+function writeDict(dict, buffer, transform) {
+  buffer.push("<<");
 
-function decodeAndClamp(value, addend, coefficient, max) {
-  value = addend + value * coefficient;
+  for (const key of dict.getKeys()) {
+    buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `);
+    writeValue(dict.getRaw(key), buffer, transform);
+  }
 
-  if (value < 0) {
-    value = 0;
-  } else if (value > max) {
-    value = max;
+  buffer.push(">>");
+}
+
+function writeStream(stream, buffer, transform) {
+  writeDict(stream.dict, buffer, transform);
+  buffer.push(" stream\n");
+  let string = (0, _util.bytesToString)(stream.getBytes());
+
+  if (transform !== null) {
+    string = transform.encryptString(string);
   }
 
-  return value;
+  buffer.push(string);
+  buffer.push("\nendstream\n");
 }
 
-function resizeImageMask(src, bpc, w1, h1, w2, h2) {
-  var length = w2 * h2;
-  let dest;
+function writeArray(array, buffer, transform) {
+  buffer.push("[");
+  let first = true;
 
-  if (bpc <= 8) {
-    dest = new Uint8Array(length);
-  } else if (bpc <= 16) {
-    dest = new Uint16Array(length);
-  } else {
-    dest = new Uint32Array(length);
+  for (const val of array) {
+    if (!first) {
+      buffer.push(" ");
+    } else {
+      first = false;
+    }
+
+    writeValue(val, buffer, transform);
   }
 
-  var xRatio = w1 / w2;
-  var yRatio = h1 / h2;
-  var i,
-      j,
-      py,
-      newIndex = 0,
-      oldIndex;
-  var xScaled = new Uint16Array(w2);
-  var w1Scanline = w1;
+  buffer.push("]");
+}
 
-  for (i = 0; i < w2; i++) {
-    xScaled[i] = Math.floor(i * xRatio);
+function numberToString(value) {
+  if (Number.isInteger(value)) {
+    return value.toString();
   }
 
-  for (i = 0; i < h2; i++) {
-    py = Math.floor(i * yRatio) * w1Scanline;
+  const roundedValue = Math.round(value * 100);
 
-    for (j = 0; j < w2; j++) {
-      oldIndex = py + xScaled[j];
-      dest[newIndex++] = src[oldIndex];
+  if (roundedValue % 100 === 0) {
+    return (roundedValue / 100).toString();
+  }
+
+  if (roundedValue % 10 === 0) {
+    return value.toFixed(1);
+  }
+
+  return value.toFixed(2);
+}
+
+function writeValue(value, buffer, transform) {
+  if ((0, _primitives.isName)(value)) {
+    buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`);
+  } else if ((0, _primitives.isRef)(value)) {
+    buffer.push(`${value.num} ${value.gen} R`);
+  } else if (Array.isArray(value)) {
+    writeArray(value, buffer, transform);
+  } else if (typeof value === "string") {
+    if (transform !== null) {
+      value = transform.encryptString(value);
     }
+
+    buffer.push(`(${(0, _util.escapeString)(value)})`);
+  } else if (typeof value === "number") {
+    buffer.push(numberToString(value));
+  } else if ((0, _primitives.isDict)(value)) {
+    writeDict(value, buffer, transform);
+  } else if ((0, _primitives.isStream)(value)) {
+    writeStream(value, buffer, transform);
   }
+}
 
-  return dest;
+function writeInt(number, size, offset, buffer) {
+  for (let i = size + offset - 1; i > offset - 1; i--) {
+    buffer[i] = number & 0xff;
+    number >>= 8;
+  }
+
+  return offset + size;
 }
 
-class PDFImage {
-  constructor({
-    xref,
-    res,
-    image,
-    isInline = false,
-    smask = null,
-    mask = null,
-    isMask = false,
-    pdfFunctionFactory,
-    localColorSpaceCache
-  }) {
-    this.image = image;
-    var dict = image.dict;
-    const filter = dict.get("Filter");
+function writeString(string, offset, buffer) {
+  for (let i = 0, len = string.length; i < len; i++) {
+    buffer[offset + i] = string.charCodeAt(i) & 0xff;
+  }
+}
 
-    if ((0, _primitives.isName)(filter)) {
-      switch (filter.name) {
-        case "JPXDecode":
-          var jpxImage = new _jpx.JpxImage();
-          jpxImage.parseImageProperties(image.stream);
-          image.stream.reset();
-          image.width = jpxImage.width;
-          image.height = jpxImage.height;
-          image.bitsPerComponent = jpxImage.bitsPerComponent;
-          image.numComps = jpxImage.componentsCount;
-          break;
+function computeMD5(filesize, xrefInfo) {
+  const time = Math.floor(Date.now() / 1000);
+  const filename = xrefInfo.filename || "";
+  const md5Buffer = [time.toString(), filename, filesize.toString()];
+  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);
 
-        case "JBIG2Decode":
-          image.bitsPerComponent = 1;
-          image.numComps = 1;
-          break;
-      }
+  for (const value of Object.values(xrefInfo.info)) {
+    md5Buffer.push(value);
+    md5BufferLen += value.length;
+  }
+
+  const array = new Uint8Array(md5BufferLen);
+  let offset = 0;
+
+  for (const str of md5Buffer) {
+    writeString(str, offset, array);
+    offset += str.length;
+  }
+
+  return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));
+}
+
+function updateXFA(datasetsRef, newRefs, xref) {
+  if (datasetsRef === null || xref === null) {
+    return;
+  }
+
+  const datasets = xref.fetchIfRef(datasetsRef);
+  const str = (0, _util.bytesToString)(datasets.getBytes());
+  const xml = new _xml_parser.SimpleXMLParser({
+    hasAttributes: true
+  }).parseFromString(str);
+
+  for (const {
+    xfa
+  } of newRefs) {
+    if (!xfa) {
+      continue;
     }
 
-    let width = dict.get("Width", "W");
-    let height = dict.get("Height", "H");
+    const {
+      path,
+      value
+    } = xfa;
 
-    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 
0 && (image.width !== width || image.height !== height)) {
-      (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image 
dictionary.");
-      width = image.width;
-      height = image.height;
+    if (!path) {
+      continue;
     }
 
-    if (width < 1 || height < 1) {
-      throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);
+    const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0);
+
+    if (node) {
+      node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)];
+    } else {
+      (0, _util.warn)(`Node not found for path: ${path}`);
     }
+  }
 
-    this.width = width;
-    this.height = height;
-    this.interpolate = dict.get("Interpolate", "I") || false;
-    this.imageMask = dict.get("ImageMask", "IM") || false;
-    this.matte = dict.get("Matte") || false;
-    var bitsPerComponent = image.bitsPerComponent;
+  const buffer = [];
+  xml.documentElement.dump(buffer);
+  let updatedXml = buffer.join("");
+  const encrypt = xref.encrypt;
 
-    if (!bitsPerComponent) {
-      bitsPerComponent = dict.get("BitsPerComponent", "BPC");
+  if (encrypt) {
+    const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen);
+    updatedXml = transform.encryptString(updatedXml);
+  }
 
-      if (!bitsPerComponent) {
-        if (this.imageMask) {
-          bitsPerComponent = 1;
-        } else {
-          throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`);
-        }
-      }
-    }
+  const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${updatedXml.length}>>\nstream\n` + updatedXml + "\nendstream\nendobj\n";
+  newRefs.push({
+    ref: datasetsRef,
+    data
+  });
+}
 
-    this.bpc = bitsPerComponent;
+function incrementalUpdate({
+  originalData,
+  xrefInfo,
+  newRefs,
+  xref = null,
+  datasetsRef = null
+}) {
+  updateXFA(datasetsRef, newRefs, xref);
+  const newXref = new _primitives.Dict(null);
+  const refForXrefTable = xrefInfo.newRef;
+  let buffer, baseOffset;
+  const lastByte = originalData[originalData.length - 1];
 
-    if (!this.imageMask) {
-      let colorSpace = dict.getRaw("ColorSpace") || dict.getRaw("CS");
+  if (lastByte === 0x0a || lastByte === 0x0d) {
+    buffer = [];
+    baseOffset = originalData.length;
+  } else {
+    buffer = ["\n"];
+    baseOffset = originalData.length + 1;
+  }
 
-      if (!colorSpace) {
-        (0, _util.info)("JPX images (which do not require color spaces)");
+  newXref.set("Size", refForXrefTable.num + 1);
+  newXref.set("Prev", xrefInfo.startXRef);
+  newXref.set("Type", _primitives.Name.get("XRef"));
 
-        switch (image.numComps) {
-          case 1:
-            colorSpace = _primitives.Name.get("DeviceGray");
-            break;
+  if (xrefInfo.rootRef !== null) {
+    newXref.set("Root", xrefInfo.rootRef);
+  }
 
-          case 3:
-            colorSpace = _primitives.Name.get("DeviceRGB");
-            break;
+  if (xrefInfo.infoRef !== null) {
+    newXref.set("Info", xrefInfo.infoRef);
+  }
 
-          case 4:
-            colorSpace = _primitives.Name.get("DeviceCMYK");
-            break;
+  if (xrefInfo.encrypt !== null) {
+    newXref.set("Encrypt", xrefInfo.encrypt);
+  }
 
-          default:
-            throw new Error(`JPX images with ${image.numComps} ` + "color components not supported.");
-        }
-      }
+  newRefs.push({
+    ref: refForXrefTable,
+    data: ""
+  });
+  newRefs = newRefs.sort((a, b) => {
+    return a.ref.num - b.ref.num;
+  });
+  const xrefTableData = [[0, 1, 0xffff]];
+  const indexes = [0, 1];
+  let maxOffset = 0;
 
-      this.colorSpace = _colorspace.ColorSpace.parse({
-        cs: colorSpace,
-        xref,
-        resources: isInline ? res : null,
-        pdfFunctionFactory,
-        localColorSpaceCache
-      });
-      this.numComps = this.colorSpace.numComps;
-    }
+  for (const {
+    ref,
+    data
+  } of newRefs) {
+    maxOffset = Math.max(maxOffset, baseOffset);
+    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);
+    baseOffset += data.length;
+    indexes.push(ref.num);
+    indexes.push(1);
+    buffer.push(data);
+  }
 
-    this.decode = dict.getArray("Decode", "D");
-    this.needsDecode = false;
+  newXref.set("Index", indexes);
 
-    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) 
|| isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
-      this.needsDecode = true;
-      var max = (1 << bitsPerComponent) - 1;
-      this.decodeCoefficients = [];
-      this.decodeAddends = [];
-      const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed";
+  if (xrefInfo.fileIds.length !== 0) {
+    const md5 = computeMD5(baseOffset, xrefInfo);
+    newXref.set("ID", [xrefInfo.fileIds[0], md5]);
+  }
 
-      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
-        var dmin = this.decode[i];
-        var dmax = this.decode[i + 1];
-        this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;
-        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;
-      }
-    }
+  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);
+  const sizes = [1, offsetSize, 2];
+  const structSize = sizes[0] + sizes[1] + sizes[2];
+  const tableLength = structSize * xrefTableData.length;
+  newXref.set("W", sizes);
+  newXref.set("Length", tableLength);
+  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`);
+  writeDict(newXref, buffer, null);
+  buffer.push(" stream\n");
+  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);
+  const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`;
+  const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);
+  array.set(originalData);
+  let offset = originalData.length;
 
-    if (smask) {
-      this.smask = new PDFImage({
-        xref,
-        res,
-        image: smask,
-        isInline,
-        pdfFunctionFactory,
-        localColorSpaceCache
-      });
-    } else if (mask) {
-      if ((0, _primitives.isStream)(mask)) {
-        var maskDict = mask.dict,
-            imageMask = maskDict.get("ImageMask", "IM");
+  for (const str of buffer) {
+    writeString(str, offset, array);
+    offset += str.length;
+  }
+
+  for (const [type, objOffset, gen] of xrefTableData) {
+    offset = writeInt(type, sizes[0], offset, array);
+    offset = writeInt(objOffset, sizes[1], offset, array);
+    offset = writeInt(gen, sizes[2], offset, array);
+  }
+
+  writeString(footer, offset, array);
+  return array;
+}
+
+/***/ }),
+/* 47 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;
+
+var _util = __w_pdfjs_require__(2);
 
-        if (!imageMask) {
-          (0, _util.warn)("Ignoring /Mask in image without /ImageMask.");
-        } else {
-          this.mask = new PDFImage({
-            xref,
-            res,
-            image: mask,
-            isInline,
-            isMask: true,
-            pdfFunctionFactory,
-            localColorSpaceCache
-          });
-        }
-      } else {
-        this.mask = mask;
-      }
+const XMLParserErrorCode = {
+  NoError: 0,
+  EndOfDocument: -1,
+  UnterminatedCdat: -2,
+  UnterminatedXmlDeclaration: -3,
+  UnterminatedDoctypeDeclaration: -4,
+  UnterminatedComment: -5,
+  MalformedElement: -6,
+  OutOfMemory: -7,
+  UnterminatedAttributeValue: -8,
+  UnterminatedElement: -9,
+  ElementNeverBegun: -10
+};
+
+function isWhitespace(s, index) {
+  const ch = s[index];
+  return ch === " " || ch === "\n" || ch === "\r" || ch === "\t";
+}
+
+function isWhitespaceString(s) {
+  for (let i = 0, ii = s.length; i < ii; i++) {
+    if (!isWhitespace(s, i)) {
+      return false;
     }
   }
 
-  static async buildImage({
-    xref,
-    res,
-    image,
-    isInline = false,
-    pdfFunctionFactory,
-    localColorSpaceCache
-  }) {
-    const imageData = image;
-    let smaskData = null;
-    let maskData = null;
-    const smask = image.dict.get("SMask");
-    const mask = image.dict.get("Mask");
+  return true;
+}
 
-    if (smask) {
-      smaskData = smask;
-    } else if (mask) {
-      if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {
-        maskData = mask;
-      } else {
-        (0, _util.warn)("Unsupported mask format.");
+class XMLParserBase {
+  _resolveEntities(s) {
+    return s.replace(/&([^;]+);/g, (all, entity) => {
+      if (entity.substring(0, 2) === "#x") {
+        return String.fromCodePoint(parseInt(entity.substring(2), 16));
+      } else if (entity.substring(0, 1) === "#") {
+        return String.fromCodePoint(parseInt(entity.substring(1), 10));
       }
-    }
 
-    return new PDFImage({
-      xref,
-      res,
-      image: imageData,
-      isInline,
-      smask: smaskData,
-      mask: maskData,
-      pdfFunctionFactory,
-      localColorSpaceCache
+      switch (entity) {
+        case "lt":
+          return "<";
+
+        case "gt":
+          return ">";
+
+        case "amp":
+          return "&";
+
+        case "quot":
+          return '"';
+      }
+
+      return this.onResolveEntity(entity);
     });
   }
 
-  static createMask({
-    imgArray,
-    width,
-    height,
-    imageIsFromDecodeStream,
-    inverseDecode
-  }) {
-    var computedLength = (width + 7 >> 3) * height;
-    var actualLength = imgArray.byteLength;
-    var haveFullData = computedLength === actualLength;
-    var data, i;
-
-    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
-      data = imgArray;
-    } else if (!inverseDecode) {
-      data = new Uint8ClampedArray(actualLength);
-      data.set(imgArray);
-    } else {
-      data = new Uint8ClampedArray(computedLength);
-      data.set(imgArray);
+  _parseContent(s, start) {
+    const attributes = [];
+    let pos = start;
 
-      for (i = actualLength; i < computedLength; i++) {
-        data[i] = 0xff;
+    function skipWs() {
+      while (pos < s.length && isWhitespace(s, pos)) {
+        ++pos;
       }
     }
 
-    if (inverseDecode) {
-      for (i = 0; i < actualLength; i++) {
-        data[i] ^= 0xff;
-      }
+    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+      ++pos;
     }
 
-    return {
-      data,
-      width,
-      height
-    };
-  }
+    const name = s.substring(start, pos);
+    skipWs();
 
-  get drawWidth() {
-    return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
-  }
+    while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") {
+      skipWs();
+      let attrName = "",
+          attrValue = "";
 
-  get drawHeight() {
-    return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
-  }
+      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") {
+        attrName += s[pos];
+        ++pos;
+      }
 
-  decodeBuffer(buffer) {
-    var bpc = this.bpc;
-    var numComps = this.numComps;
-    var decodeAddends = this.decodeAddends;
-    var decodeCoefficients = this.decodeCoefficients;
-    var max = (1 << bpc) - 1;
-    var i, ii;
+      skipWs();
 
-    if (bpc === 1) {
-      for (i = 0, ii = buffer.length; i < ii; i++) {
-        buffer[i] = +!buffer[i];
+      if (s[pos] !== "=") {
+        return null;
       }
 
-      return;
-    }
+      ++pos;
+      skipWs();
+      const attrEndChar = s[pos];
 
-    var index = 0;
+      if (attrEndChar !== '"' && attrEndChar !== "'") {
+        return null;
+      }
 
-    for (i = 0, ii = this.width * this.height; i < ii; i++) {
-      for (var j = 0; j < numComps; j++) {
-        buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
-        index++;
+      const attrEndIndex = s.indexOf(attrEndChar, ++pos);
+
+      if (attrEndIndex < 0) {
+        return null;
       }
+
+      attrValue = s.substring(pos, attrEndIndex);
+      attributes.push({
+        name: attrName,
+        value: this._resolveEntities(attrValue)
+      });
+      pos = attrEndIndex + 1;
+      skipWs();
     }
+
+    return {
+      name,
+      attributes,
+      parsed: pos - start
+    };
   }
 
-  getComponents(buffer) {
-    var bpc = this.bpc;
+  _parseProcessingInstruction(s, start) {
+    let pos = start;
 
-    if (bpc === 8) {
-      return buffer;
+    function skipWs() {
+      while (pos < s.length && isWhitespace(s, pos)) {
+        ++pos;
+      }
     }
 
-    var width = this.width;
-    var height = this.height;
-    var numComps = this.numComps;
-    var length = width * height * numComps;
-    var bufferPos = 0;
-    let output;
+    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+      ++pos;
+    }
 
-    if (bpc <= 8) {
-      output = new Uint8Array(length);
-    } else if (bpc <= 16) {
-      output = new Uint16Array(length);
-    } else {
-      output = new Uint32Array(length);
+    const name = s.substring(start, pos);
+    skipWs();
+    const attrStart = pos;
+
+    while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) {
+      ++pos;
     }
 
-    var rowComps = width * numComps;
-    var max = (1 << bpc) - 1;
-    var i = 0,
-        ii,
-        buf;
+    const value = s.substring(attrStart, pos);
+    return {
+      name,
+      value,
+      parsed: pos - start
+    };
+  }
 
-    if (bpc === 1) {
-      var mask, loop1End, loop2End;
+  parseXml(s) {
+    let i = 0;
 
-      for (var j = 0; j < height; j++) {
-        loop1End = i + (rowComps & ~7);
-        loop2End = i + rowComps;
+    while (i < s.length) {
+      const ch = s[i];
+      let j = i;
 
-        while (i < loop1End) {
-          buf = buffer[bufferPos++];
-          output[i] = buf >> 7 & 1;
-          output[i + 1] = buf >> 6 & 1;
-          output[i + 2] = buf >> 5 & 1;
-          output[i + 3] = buf >> 4 & 1;
-          output[i + 4] = buf >> 3 & 1;
-          output[i + 5] = buf >> 2 & 1;
-          output[i + 6] = buf >> 1 & 1;
-          output[i + 7] = buf & 1;
-          i += 8;
-        }
+      if (ch === "<") {
+        ++j;
+        const ch2 = s[j];
+        let q;
 
-        if (i < loop2End) {
-          buf = buffer[bufferPos++];
-          mask = 128;
+        switch (ch2) {
+          case "/":
+            ++j;
+            q = s.indexOf(">", j);
 
-          while (i < loop2End) {
-            output[i++] = +!!(buf & mask);
-            mask >>= 1;
-          }
-        }
-      }
-    } else {
-      var bits = 0;
-      buf = 0;
+            if (q < 0) {
+              this.onError(XMLParserErrorCode.UnterminatedElement);
+              return;
+            }
 
-      for (i = 0, ii = length; i < ii; ++i) {
-        if (i % rowComps === 0) {
-          buf = 0;
-          bits = 0;
-        }
+            this.onEndElement(s.substring(j, q));
+            j = q + 1;
+            break;
 
-        while (bits < bpc) {
-          buf = buf << 8 | buffer[bufferPos++];
-          bits += 8;
-        }
+          case "?":
+            ++j;
 
-        var remainingBits = bits - bpc;
-        let value = buf >> remainingBits;
+            const pi = this._parseProcessingInstruction(s, j);
 
-        if (value < 0) {
-          value = 0;
-        } else if (value > max) {
-          value = max;
-        }
+            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") {
+              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
+              return;
+            }
 
-        output[i] = value;
-        buf = buf & (1 << remainingBits) - 1;
-        bits = remainingBits;
-      }
-    }
+            this.onPi(pi.name, pi.value);
+            j += pi.parsed + 2;
+            break;
 
-    return output;
-  }
+          case "!":
+            if (s.substring(j + 1, j + 3) === "--") {
+              q = s.indexOf("-->", j + 3);
 
-  fillOpacity(rgbaBuf, width, height, actualHeight, image) {
-    var smask = this.smask;
-    var mask = this.mask;
-    var alphaBuf, sw, sh, i, ii, j;
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedComment);
+                return;
+              }
 
-    if (smask) {
-      sw = smask.width;
-      sh = smask.height;
-      alphaBuf = new Uint8ClampedArray(sw * sh);
-      smask.fillGrayBuffer(alphaBuf);
+              this.onComment(s.substring(j + 3, q));
+              j = q + 3;
+            } else if (s.substring(j + 1, j + 8) === "[CDATA[") {
+              q = s.indexOf("]]>", j + 8);
 
-      if (sw !== width || sh !== height) {
-        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
-      }
-    } else if (mask) {
-      if (mask instanceof PDFImage) {
-        sw = mask.width;
-        sh = mask.height;
-        alphaBuf = new Uint8ClampedArray(sw * sh);
-        mask.numComps = 1;
-        mask.fillGrayBuffer(alphaBuf);
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedCdat);
+                return;
+              }
 
-        for (i = 0, ii = sw * sh; i < ii; ++i) {
-          alphaBuf[i] = 255 - alphaBuf[i];
-        }
+              this.onCdata(s.substring(j + 8, q));
+              j = q + 3;
+            } else if (s.substring(j + 1, j + 8) === "DOCTYPE") {
+              const q2 = s.indexOf("[", j + 8);
+              let complexDoctype = false;
+              q = s.indexOf(">", j + 8);
 
-        if (sw !== width || sh !== height) {
-          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
-        }
-      } else if (Array.isArray(mask)) {
-        alphaBuf = new Uint8ClampedArray(width * height);
-        var numComps = this.numComps;
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+                return;
+              }
 
-        for (i = 0, ii = width * height; i < ii; ++i) {
-          var opacity = 0;
-          var imageOffset = i * numComps;
+              if (q2 > 0 && q > q2) {
+                q = s.indexOf("]>", j + 8);
 
-          for (j = 0; j < numComps; ++j) {
-            var color = image[imageOffset + j];
-            var maskOffset = j * 2;
+                if (q < 0) {
+                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+                  return;
+                }
 
-            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
-              opacity = 255;
-              break;
+                complexDoctype = true;
+              }
+
+              const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
+              this.onDoctype(doctypeContent);
+              j = q + (complexDoctype ? 2 : 1);
+            } else {
+              this.onError(XMLParserErrorCode.MalformedElement);
+              return;
             }
-          }
 
-          alphaBuf[i] = opacity;
+            break;
+
+          default:
+            const content = this._parseContent(s, j);
+
+            if (content === null) {
+              this.onError(XMLParserErrorCode.MalformedElement);
+              return;
+            }
+
+            let isClosed = false;
+
+            if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") {
+              isClosed = true;
+            } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") {
+              this.onError(XMLParserErrorCode.UnterminatedElement);
+              return;
+            }
+
+            this.onBeginElement(content.name, content.attributes, isClosed);
+            j += content.parsed + (isClosed ? 2 : 1);
+            break;
         }
       } else {
-        throw new _util.FormatError("Unknown mask format.");
-      }
-    }
+        while (j < s.length && s[j] !== "<") {
+          j++;
+        }
 
-    if (alphaBuf) {
-      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
-        rgbaBuf[j] = alphaBuf[i];
-      }
-    } else {
-      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
-        rgbaBuf[j] = 255;
+        const text = s.substring(i, j);
+        this.onText(this._resolveEntities(text));
       }
+
+      i = j;
     }
   }
 
-  undoPreblend(buffer, width, height) {
-    var matte = this.smask && this.smask.matte;
+  onResolveEntity(name) {
+    return `&${name};`;
+  }
 
-    if (!matte) {
-      return;
+  onPi(name, value) {}
+
+  onComment(text) {}
+
+  onCdata(text) {}
+
+  onDoctype(doctypeContent) {}
+
+  onText(text) {}
+
+  onBeginElement(name, attributes, isEmpty) {}
+
+  onEndElement(name) {}
+
+  onError(code) {}
+
+}
+
+class SimpleDOMNode {
+  constructor(nodeName, nodeValue) {
+    this.nodeName = nodeName;
+    this.nodeValue = nodeValue;
+    Object.defineProperty(this, "parentNode", {
+      value: null,
+      writable: true
+    });
+  }
+
+  get firstChild() {
+    return this.childNodes && this.childNodes[0];
+  }
+
+  get nextSibling() {
+    const childNodes = this.parentNode.childNodes;
+
+    if (!childNodes) {
+      return undefined;
     }
 
-    var matteRgb = this.colorSpace.getRgb(matte, 0);
-    var matteR = matteRgb[0];
-    var matteG = matteRgb[1];
-    var matteB = matteRgb[2];
-    var length = width * height * 4;
+    const index = childNodes.indexOf(this);
 
-    for (var i = 0; i < length; i += 4) {
-      var alpha = buffer[i + 3];
+    if (index === -1) {
+      return undefined;
+    }
 
-      if (alpha === 0) {
-        buffer[i] = 255;
-        buffer[i + 1] = 255;
-        buffer[i + 2] = 255;
-        continue;
-      }
+    return childNodes[index + 1];
+  }
 
-      var k = 255 / alpha;
-      buffer[i] = (buffer[i] - matteR) * k + matteR;
-      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
-      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
+  get textContent() {
+    if (!this.childNodes) {
+      return this.nodeValue || "";
     }
+
+    return this.childNodes.map(function (child) {
+      return child.textContent;
+    }).join("");
   }
 
-  createImageData(forceRGBA = false) {
-    var drawWidth = this.drawWidth;
-    var drawHeight = this.drawHeight;
-    var imgData = {
-      width: drawWidth,
-      height: drawHeight,
-      kind: 0,
-      data: null
-    };
-    var numComps = this.numComps;
-    var originalWidth = this.width;
-    var originalHeight = this.height;
-    var bpc = this.bpc;
-    var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
-    var imgArray;
+  hasChildNodes() {
+    return this.childNodes && this.childNodes.length > 0;
+  }
 
-    if (!forceRGBA) {
-      var kind;
+  searchNode(paths, pos) {
+    if (pos >= paths.length) {
+      return this;
+    }
 
-      if (this.colorSpace.name === "DeviceGray" && bpc === 1) {
-        kind = _util.ImageKind.GRAYSCALE_1BPP;
-      } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) {
-        kind = _util.ImageKind.RGB_24BPP;
-      }
+    const component = paths[pos];
+    const stack = [];
+    let node = this;
 
-      if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) 
{
-        imgData.kind = kind;
-        imgArray = this.getImageBytes(originalHeight * rowBytes);
+    while (true) {
+      if (component.name === node.nodeName) {
+        if (component.pos === 0) {
+          const res = node.searchNode(paths, pos + 1);
 
-        if (this.image instanceof _stream.DecodeStream) {
-          imgData.data = imgArray;
+          if (res !== null) {
+            return res;
+          }
+        } else if (stack.length === 0) {
+          return null;
         } else {
-          var newArray = new Uint8ClampedArray(imgArray.length);
-          newArray.set(imgArray);
-          imgData.data = newArray;
+          const [parent] = stack.pop();
+          let siblingPos = 0;
+
+          for (const child of parent.childNodes) {
+            if (component.name === child.nodeName) {
+              if (siblingPos === component.pos) {
+                return child.searchNode(paths, pos + 1);
+              }
+
+              siblingPos++;
+            }
+          }
+
+          return node.searchNode(paths, pos + 1);
         }
+      }
 
-        if (this.needsDecode) {
-          (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image 
must be grayscale.");
-          var buffer = imgData.data;
+      if (node.childNodes && node.childNodes.length !== 0) {
+        stack.push([node, 0]);
+        node = node.childNodes[0];
+      } else if (stack.length === 0) {
+        return null;
+      } else {
+        while (stack.length !== 0) {
+          const [parent, currentPos] = stack.pop();
+          const newPos = currentPos + 1;
 
-          for (var i = 0, ii = buffer.length; i < ii; i++) {
-            buffer[i] ^= 0xff;
+          if (newPos < parent.childNodes.length) {
+            stack.push([parent, newPos]);
+            node = parent.childNodes[newPos];
+            break;
           }
         }
 
-        return imgData;
+        if (stack.length === 0) {
+          return null;
+        }
       }
+    }
+  }
 
-      if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
-        let imageLength = originalHeight * rowBytes;
+  dump(buffer) {
+    if (this.nodeName === "#text") {
+      buffer.push((0, _util.encodeToXmlString)(this.nodeValue));
+      return;
+    }
 
-        switch (this.colorSpace.name) {
-          case "DeviceGray":
-            imageLength *= 3;
+    buffer.push(`<${this.nodeName}`);
 
-          case "DeviceRGB":
-          case "DeviceCMYK":
-            imgData.kind = _util.ImageKind.RGB_24BPP;
-            imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
-            return imgData;
-        }
+    if (this.attributes) {
+      for (const attribute of this.attributes) {
+        buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`);
       }
     }
 
-    imgArray = this.getImageBytes(originalHeight * rowBytes);
-    var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
-    var comps = this.getComponents(imgArray);
-    var alpha01, maybeUndoPreblend;
+    if (this.hasChildNodes()) {
+      buffer.push(">");
 
-    if (!forceRGBA && !this.smask && !this.mask) {
-      imgData.kind = _util.ImageKind.RGB_24BPP;
-      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
-      alpha01 = 0;
-      maybeUndoPreblend = false;
+      for (const child of this.childNodes) {
+        child.dump(buffer);
+      }
+
+      buffer.push(`</${this.nodeName}>`);
+    } else if (this.nodeValue) {
+      buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);
     } else {
-      imgData.kind = _util.ImageKind.RGBA_32BPP;
-      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
-      alpha01 = 1;
-      maybeUndoPreblend = true;
-      this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
+      buffer.push("/>");
     }
+  }
 
-    if (this.needsDecode) {
-      this.decodeBuffer(comps);
+}
+
+exports.SimpleDOMNode = SimpleDOMNode;
+
+class SimpleXMLParser extends XMLParserBase {
+  constructor({
+    hasAttributes = false,
+    lowerCaseName = false
+  }) {
+    super();
+    this._currentFragment = null;
+    this._stack = null;
+    this._errorCode = XMLParserErrorCode.NoError;
+    this._hasAttributes = hasAttributes;
+    this._lowerCaseName = lowerCaseName;
+  }
+
+  parseFromString(data) {
+    this._currentFragment = [];
+    this._stack = [];
+    this._errorCode = XMLParserErrorCode.NoError;
+    this.parseXml(data);
+
+    if (this._errorCode !== XMLParserErrorCode.NoError) {
+      return undefined;
     }
 
-    this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, 
actualHeight, bpc, comps, alpha01);
+    const [documentElement] = this._currentFragment;
 
-    if (maybeUndoPreblend) {
-      this.undoPreblend(imgData.data, drawWidth, actualHeight);
+    if (!documentElement) {
+      return undefined;
     }
 
-    return imgData;
+    return {
+      documentElement
+    };
   }
 
-  fillGrayBuffer(buffer) {
-    var numComps = this.numComps;
+  onResolveEntity(name) {
+    switch (name) {
+      case "apos":
+        return "'";
+    }
 
-    if (numComps !== 1) {
-      throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);
+    return super.onResolveEntity(name);
+  }
+
+  onText(text) {
+    if (isWhitespaceString(text)) {
+      return;
     }
 
-    var width = this.width;
-    var height = this.height;
-    var bpc = this.bpc;
-    var rowBytes = width * numComps * bpc + 7 >> 3;
-    var imgArray = this.getImageBytes(height * rowBytes);
-    var comps = this.getComponents(imgArray);
-    var i, length;
+    const node = new SimpleDOMNode("#text", text);
 
-    if (bpc === 1) {
-      length = width * height;
+    this._currentFragment.push(node);
+  }
 
-      if (this.needsDecode) {
-        for (i = 0; i < length; ++i) {
-          buffer[i] = comps[i] - 1 & 255;
-        }
-      } else {
-        for (i = 0; i < length; ++i) {
-          buffer[i] = -comps[i] & 255;
-        }
-      }
+  onCdata(text) {
+    const node = new SimpleDOMNode("#text", text);
 
-      return;
+    this._currentFragment.push(node);
+  }
+
+  onBeginElement(name, attributes, isEmpty) {
+    if (this._lowerCaseName) {
+      name = name.toLowerCase();
     }
 
-    if (this.needsDecode) {
-      this.decodeBuffer(comps);
+    const node = new SimpleDOMNode(name);
+    node.childNodes = [];
+
+    if (this._hasAttributes) {
+      node.attributes = attributes;
     }
 
-    length = width * height;
-    var scale = 255 / ((1 << bpc) - 1);
+    this._currentFragment.push(node);
 
-    for (i = 0; i < length; ++i) {
-      buffer[i] = scale * comps[i];
+    if (isEmpty) {
+      return;
     }
+
+    this._stack.push(this._currentFragment);
+
+    this._currentFragment = node.childNodes;
   }
 
-  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
-    this.image.reset();
-    this.image.drawWidth = drawWidth || this.width;
-    this.image.drawHeight = drawHeight || this.height;
-    this.image.forceRGB = !!forceRGB;
-    return this.image.getBytes(length, true);
+  onEndElement(name) {
+    this._currentFragment = this._stack.pop() || [];
+    const lastElement = this._currentFragment[this._currentFragment.length - 1];
+
+    if (!lastElement) {
+      return;
+    }
+
+    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
+      lastElement.childNodes[i].parentNode = lastElement;
+    }
+  }
+
+  onError(code) {
+    this._errorCode = code;
   }
 
 }
 
-exports.PDFImage = PDFImage;
+exports.SimpleXMLParser = SimpleXMLParser;
 
 /***/ }),
-/* 46 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 48 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.MessageHandler = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -47480,15 +55204,14 @@ class MessageHandler {
 exports.MessageHandler = MessageHandler;
 
 /***/ }),
-/* 47 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
+/* 49 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFWorkerStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
@@ -47633,6 +55356,66 @@ class PDFWorkerStreamRangeReader {
 }
 
 /***/ })
-/******/ ]);
+/******/       ]);
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/       
+/******/       // The require function
+/******/       function __w_pdfjs_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       // no module.id needed
+/******/                       // no module.loaded needed
+/******/                       exports: {}
+/******/               };
+/******/       
+/******/               // Execute the module function
+/******/               __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
+/******/       
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/       
+/************************************************************************/
+/******/       /* webpack/runtime/define property getters */
+/******/       (() => {
+/******/               // define getter functions for harmony exports
+/******/               __w_pdfjs_require__.d = (exports, definition) => {
+/******/                       for(var key in definition) {
+/******/                               if(__w_pdfjs_require__.o(definition, key) && 
!__w_pdfjs_require__.o(exports, key)) {
+/******/                                       Object.defineProperty(exports, key, { enumerable: true, get: 
definition[key] });
+/******/                               }
+/******/                       }
+/******/               };
+/******/       })();
+/******/       
+/******/       /* webpack/runtime/hasOwnProperty shorthand */
+/******/       (() => {
+/******/               __w_pdfjs_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
+/******/       })();
+/******/       
+/******/       /* webpack/runtime/make namespace object */
+/******/       (() => {
+/******/               // define __esModule on exports
+/******/               __w_pdfjs_require__.r = (exports) => {
+/******/                       if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/                               Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' 
});
+/******/                       }
+/******/                       Object.defineProperty(exports, '__esModule', { value: true });
+/******/               };
+/******/       })();
+/******/       
+/************************************************************************/
+/******/       // module exports must be returned from runtime so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       return __w_pdfjs_require__(0);
+/******/ })()
+;
 });
 //# sourceMappingURL=pdf.worker.js.map
\ No newline at end of file
diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch
index 69f488516..a6e1e2764 100644
--- a/third-party/pdfjs/epiphany-pdfjs-changes.patch
+++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch
@@ -1,13 +1,14 @@
-diff -urN web2/viewer.css web/viewer.css
---- web2/viewer.css    2020-09-03 23:18:08.000000000 +0200
-+++ web/viewer.css     2021-04-05 11:25:24.181448360 +0200
+diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
+index b7277df3d..d7322b41e 100644
+--- a/third-party/pdfjs/web/viewer.css
++++ b/third-party/pdfjs/web/viewer.css
 @@ -1,4 +1,5 @@
  /* Copyright 2014 Mozilla Foundation
 + * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -2361,6 +2362,7 @@
+@@ -2321,6 +2322,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
  }
  
  .dropdownToolbarButton > select {
@@ -15,7 +16,7 @@ diff -urN web2/viewer.css web/viewer.css
    width: 162px;
    height: 28px;
    font-size: 12px;
-@@ -3132,6 +3134,7 @@
+@@ -2942,6 +2944,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
  }
  
  .toolbarField.pageNumber {
@@ -23,9 +24,10 @@ diff -urN web2/viewer.css web/viewer.css
    -moz-appearance: textfield; /* hides the spinner in moz */
    min-width: 16px;
    text-align: right;
-diff -urN web2/viewer.html web/viewer.html
---- web2/viewer.html   2020-09-03 23:18:08.000000000 +0200
-+++ web/viewer.html    2021-04-05 11:25:24.181448360 +0200
+diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html
+index f661cb9f5..7b8dd7663 100644
+--- a/third-party/pdfjs/web/viewer.html
++++ b/third-party/pdfjs/web/viewer.html
 @@ -1,6 +1,7 @@
  <!DOCTYPE html>
  <!--
@@ -34,7 +36,7 @@ diff -urN web2/viewer.html web/viewer.html
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
-@@ -21,14 +22,14 @@
+@@ -21,14 +22,14 @@ Adobe CMap resources are covered by their own copyright but the same license:
  See https://github.com/adobe-type-tools/cmap-resources
  -->
  <html dir="ltr" mozdisallowselectionprint>
@@ -51,7 +53,7 @@ diff -urN web2/viewer.html web/viewer.html
      <link rel="stylesheet" href="viewer.css">
  
  
-@@ -124,7 +125,7 @@
+@@ -136,7 +137,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                <span data-l10n-id="download_label">Download</span>
              </button>
  
@@ -60,7 +62,7 @@ diff -urN web2/viewer.html web/viewer.html
                <span data-l10n-id="bookmark_label">Current View</span>
              </a>
  
-@@ -226,7 +227,7 @@
+@@ -238,7 +239,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                  <button id="download" class="toolbarButton download hiddenMediumView" title="Download" 
tabindex="34" data-l10n-id="download">
                    <span data-l10n-id="download_label">Download</span>
                  </button>
@@ -69,9 +71,10 @@ diff -urN web2/viewer.html web/viewer.html
                    <span data-l10n-id="bookmark_label">Current View</span>
                  </a>
  
-diff -urN web2/viewer.js web/viewer.js
---- web2/viewer.js     2020-09-03 23:18:20.000000000 +0200
-+++ web/viewer.js      2021-04-05 11:25:24.184448405 +0200
+diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
+index d093d773b..ed36e7f02 100644
+--- a/third-party/pdfjs/web/viewer.js
++++ b/third-party/pdfjs/web/viewer.js
 @@ -3,6 +3,7 @@
   * Javascript code in this page
   *
@@ -80,7 +83,7 @@ diff -urN web2/viewer.js web/viewer.js
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -1973,8 +1974,7 @@
+@@ -2663,8 +2664,7 @@ function webViewerInitialized() {
    let file;
    const queryString = document.location.search.substring(1);
    const params = (0, _ui_utils.parseQueryString)(queryString);
@@ -90,7 +93,7 @@ diff -urN web2/viewer.js web/viewer.js
    const fileInput = document.createElement("input");
    fileInput.id = appConfig.openFileInputName;
    fileInput.className = "fileInput";
-@@ -1982,12 +1982,8 @@
+@@ -2672,12 +2672,8 @@ function webViewerInitialized() {
    fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
    document.body.appendChild(fileInput);
  
@@ -105,7 +108,7 @@ diff -urN web2/viewer.js web/viewer.js
  
    fileInput.addEventListener("change", function (evt) {
      const files = evt.target.files;
-@@ -2049,8 +2045,18 @@
+@@ -2739,8 +2735,18 @@ function webViewerInitialized() {
      }
    }, true);
  
@@ -125,19 +128,19 @@ diff -urN web2/viewer.js web/viewer.js
    } catch (reason) {
      PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(msg => {
        PDFViewerApplication.error(msg, reason);
-@@ -6877,6 +6883,8 @@
+@@ -6977,6 +6983,8 @@ class PDFHistory {
        }
      }
  
-+    // FIXME: This currently breaks Epiphany due to rewriting history with baseUrl
-+    return;
++// FIXME: This currently breaks Epiphany due to rewriting history with baseUrl
++return;
      if (shouldReplace) {
        window.history.replaceState(newState, "", newUrl);
      } else {
-@@ -13897,4 +13905,4 @@
- 
- /***/ })
- /******/ ]);
+@@ -14896,4 +14904,4 @@ _app.PDFPrintServiceFactory.instance = {
+ /******/      // This entry module used 'exports' so it can't be inlined
+ /******/ })()
+ ;
 -//# sourceMappingURL=viewer.js.map
-\ Kein Zeilenumbruch am Dateiende.
+\ No newline at end of file
 +//# sourceMappingURL=viewer.js.map
diff --git a/third-party/pdfjs/pdfjs.gresource.xml b/third-party/pdfjs/pdfjs.gresource.xml
index 9845e7483..a8b511b2e 100644
--- a/third-party/pdfjs/pdfjs.gresource.xml
+++ b/third-party/pdfjs/pdfjs.gresource.xml
@@ -2,369 +2,337 @@
 <gresources>
        <gresource prefix="/org/gnome/epiphany/pdfjs">
                <file compressed="true">build/pdf.js</file>
+               <file compressed="true">build/pdf.sandbox.js</file>
                <file compressed="true">build/pdf.worker.js</file>
                <file compressed="true">web/compressed.tracemonkey-pldi-09.pdf</file>
                <file compressed="true">web/debugger.js</file>
                <file compressed="true">web/viewer.css</file>
                <file compressed="true">web/viewer.html</file>
                <file compressed="true">web/viewer.js</file>
-               <file compressed="true">web/images/annotation-paragraph.svg</file>
-               <file compressed="true">web/images/annotation-note.svg</file>
-               <file compressed="true">web/images/annotation-noicon.svg</file>
-               <file compressed="true">web/images/loading-icon.gif</file>
+               <file compressed="true">web/cmaps/78-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/78-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/78-H.bcmap</file>
+               <file compressed="true">web/cmaps/78-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/78-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/78-V.bcmap</file>
+               <file compressed="true">web/cmaps/78ms-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/78ms-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/83pv-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/90ms-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/90ms-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/90msp-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/90msp-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/90pv-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/90pv-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/Add-H.bcmap</file>
+               <file compressed="true">web/cmaps/Add-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/Add-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/Add-V.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-0.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-1.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-3.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-4.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-5.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-6.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-CNS1-UCS2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-0.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-1.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-3.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-4.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-5.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-GB1-UCS2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-0.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-1.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-3.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-4.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-5.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-6.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Japan1-UCS2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Korea1-0.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Korea1-1.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Korea1-2.bcmap</file>
+               <file compressed="true">web/cmaps/Adobe-Korea1-UCS2.bcmap</file>
+               <file compressed="true">web/cmaps/B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/B5pc-H.bcmap</file>
+               <file compressed="true">web/cmaps/B5pc-V.bcmap</file>
+               <file compressed="true">web/cmaps/CNS-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/CNS-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/CNS1-H.bcmap</file>
+               <file compressed="true">web/cmaps/CNS1-V.bcmap</file>
+               <file compressed="true">web/cmaps/CNS2-H.bcmap</file>
+               <file compressed="true">web/cmaps/CNS2-V.bcmap</file>
+               <file compressed="true">web/cmaps/ETHK-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/ETHK-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/ETen-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/ETen-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/ETenms-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/ETenms-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/Ext-H.bcmap</file>
+               <file compressed="true">web/cmaps/Ext-RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/Ext-RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/Ext-V.bcmap</file>
+               <file compressed="true">web/cmaps/GB-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/GB-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/GB-H.bcmap</file>
+               <file compressed="true">web/cmaps/GB-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBK-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBK-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBK2K-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBK2K-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBKp-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBKp-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBT-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBT-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBT-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBT-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBTpc-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBTpc-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/GBpc-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/GBpc-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/H.bcmap</file>
+               <file compressed="true">web/cmaps/HKdla-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/HKdla-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/HKdlb-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/HKdlb-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/HKgccs-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/HKgccs-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/HKm314-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/HKm314-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/HKm471-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/HKm471-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/HKscs-B5-H.bcmap</file>
+               <file compressed="true">web/cmaps/HKscs-B5-V.bcmap</file>
+               <file compressed="true">web/cmaps/Hankaku.bcmap</file>
+               <file compressed="true">web/cmaps/Hiragana.bcmap</file>
+               <file compressed="true">web/cmaps/KSC-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/KSC-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/KSC-H.bcmap</file>
+               <file compressed="true">web/cmaps/KSC-Johab-H.bcmap</file>
+               <file compressed="true">web/cmaps/KSC-Johab-V.bcmap</file>
+               <file compressed="true">web/cmaps/KSC-V.bcmap</file>
+               <file compressed="true">web/cmaps/KSCms-UHC-H.bcmap</file>
+               <file compressed="true">web/cmaps/KSCms-UHC-HW-H.bcmap</file>
+               <file compressed="true">web/cmaps/KSCms-UHC-HW-V.bcmap</file>
+               <file compressed="true">web/cmaps/KSCms-UHC-V.bcmap</file>
+               <file compressed="true">web/cmaps/KSCpc-EUC-H.bcmap</file>
+               <file compressed="true">web/cmaps/KSCpc-EUC-V.bcmap</file>
+               <file compressed="true">web/cmaps/Katakana.bcmap</file>
+               <file compressed="true">web/cmaps/LICENSE</file>
+               <file compressed="true">web/cmaps/NWP-H.bcmap</file>
+               <file compressed="true">web/cmaps/NWP-V.bcmap</file>
+               <file compressed="true">web/cmaps/RKSJ-H.bcmap</file>
+               <file compressed="true">web/cmaps/RKSJ-V.bcmap</file>
+               <file compressed="true">web/cmaps/Roman.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UCS2-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UCS2-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UTF16-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UTF16-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UTF8-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniCNS-UTF8-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UCS2-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UCS2-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UTF16-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UTF16-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UTF8-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniGB-UTF8-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UCS2-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UCS2-HW-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UCS2-HW-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UCS2-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UTF16-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UTF16-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UTF8-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS-UTF8-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS2004-UTF16-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS2004-UTF16-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS2004-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS2004-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS2004-UTF8-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJIS2004-UTF8-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISPro-UCS2-HW-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISPro-UCS2-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISPro-UTF8-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISX0213-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISX0213-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISX02132004-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniJISX02132004-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UCS2-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UCS2-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UTF16-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UTF16-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UTF32-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UTF32-V.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UTF8-H.bcmap</file>
+               <file compressed="true">web/cmaps/UniKS-UTF8-V.bcmap</file>
+               <file compressed="true">web/cmaps/V.bcmap</file>
+               <file compressed="true">web/cmaps/WP-Symbol.bcmap</file>
                <file compressed="true">web/images/annotation-check.svg</file>
-               <file compressed="true">web/images/annotation-key.svg</file>
+               <file compressed="true">web/images/annotation-comment.svg</file>
                <file compressed="true">web/images/annotation-help.svg</file>
-               <file compressed="true">web/images/grabbing.cur</file>
                <file compressed="true">web/images/annotation-insert.svg</file>
-               <file compressed="true">web/images/annotation-comment.svg</file>
-               <file compressed="true">web/images/grab.cur</file>
+               <file compressed="true">web/images/annotation-key.svg</file>
                <file compressed="true">web/images/annotation-newparagraph.svg</file>
-               <file compressed="true">web/images/findbarButton-next-dark.svg</file>
+               <file compressed="true">web/images/annotation-noicon.svg</file>
+               <file compressed="true">web/images/annotation-note.svg</file>
+               <file compressed="true">web/images/annotation-paragraph.svg</file>
                <file compressed="true">web/images/findbarButton-next.svg</file>
-               <file compressed="true">web/images/findbarButton-previous-dark.svg</file>
                <file compressed="true">web/images/findbarButton-previous.svg</file>
+               <file compressed="true">web/images/grab.cur</file>
+               <file compressed="true">web/images/grabbing.cur</file>
                <file compressed="true">web/images/loading-dark.svg</file>
+               <file compressed="true">web/images/loading-icon.gif</file>
                <file compressed="true">web/images/loading.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-documentProperties-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-documentProperties.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-firstPage-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-firstPage.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-handTool-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-handTool.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-lastPage-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-lastPage.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-rotateCcw-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-rotateCcw.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-rotateCw-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-rotateCw.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-scrollHorizontal-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-scrollHorizontal.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-scrollVertical-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-scrollVertical.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-scrollWrapped-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-scrollWrapped.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-selectTool-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-selectTool.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-spreadEven-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-spreadEven.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-spreadNone-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-spreadNone.svg</file>
-               <file compressed="true">web/images/secondaryToolbarButton-spreadOdd-dark.svg</file>
                <file compressed="true">web/images/secondaryToolbarButton-spreadOdd.svg</file>
                <file compressed="true">web/images/shadow.png</file>
-               <file compressed="true">web/images/toolbarButton-bookmark-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-bookmark.svg</file>
-               <file compressed="true">web/images/toolbarButton-download-dark.svg</file>
+               <file compressed="true">web/images/toolbarButton-currentOutlineItem.svg</file>
                <file compressed="true">web/images/toolbarButton-download.svg</file>
-               <file compressed="true">web/images/toolbarButton-menuArrow-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-menuArrow.svg</file>
-               <file compressed="true">web/images/toolbarButton-openFile-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-openFile.svg</file>
-               <file compressed="true">web/images/toolbarButton-pageDown-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-pageDown.svg</file>
-               <file compressed="true">web/images/toolbarButton-pageUp-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-pageUp.svg</file>
-               <file compressed="true">web/images/toolbarButton-presentationMode-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-presentationMode.svg</file>
-               <file compressed="true">web/images/toolbarButton-print-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-print.svg</file>
-               <file compressed="true">web/images/toolbarButton-search-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-search.svg</file>
-               <file compressed="true">web/images/toolbarButton-secondaryToolbarToggle-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-secondaryToolbarToggle.svg</file>
-               <file compressed="true">web/images/toolbarButton-sidebarToggle-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-sidebarToggle.svg</file>
-               <file compressed="true">web/images/toolbarButton-viewAttachments-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-viewAttachments.svg</file>
-               <file compressed="true">web/images/toolbarButton-viewLayers-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-viewLayers.svg</file>
-               <file compressed="true">web/images/toolbarButton-viewOutline-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-viewOutline.svg</file>
-               <file compressed="true">web/images/toolbarButton-viewThumbnail-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-viewThumbnail.svg</file>
-               <file compressed="true">web/images/toolbarButton-zoomIn-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-zoomIn.svg</file>
-               <file compressed="true">web/images/toolbarButton-zoomOut-dark.svg</file>
                <file compressed="true">web/images/toolbarButton-zoomOut.svg</file>
-               <file compressed="true">web/images/treeitem-collapsed-dark.svg</file>
                <file compressed="true">web/images/treeitem-collapsed.svg</file>
-               <file compressed="true">web/images/treeitem-expanded-dark.svg</file>
                <file compressed="true">web/images/treeitem-expanded.svg</file>
                <file compressed="true">web/locale/locale.properties</file>
-               <file compressed="true">web/locale/nn-NO/viewer.properties</file>
-               <file compressed="true">web/locale/uk/viewer.properties</file>
-               <file compressed="true">web/locale/ia/viewer.properties</file>
-               <file compressed="true">web/locale/de/viewer.properties</file>
-               <file compressed="true">web/locale/ko/viewer.properties</file>
-               <file compressed="true">web/locale/be/viewer.properties</file>
-               <file compressed="true">web/locale/ur/viewer.properties</file>
-               <file compressed="true">web/locale/dsb/viewer.properties</file>
-               <file compressed="true">web/locale/es-MX/viewer.properties</file>
-               <file compressed="true">web/locale/nb-NO/viewer.properties</file>
-               <file compressed="true">web/locale/fi/viewer.properties</file>
-               <file compressed="true">web/locale/ast/viewer.properties</file>
-               <file compressed="true">web/locale/fa/viewer.properties</file>
-               <file compressed="true">web/locale/zh-CN/viewer.properties</file>
-               <file compressed="true">web/locale/te/viewer.properties</file>
-               <file compressed="true">web/locale/si/viewer.properties</file>
-               <file compressed="true">web/locale/son/viewer.properties</file>
-               <file compressed="true">web/locale/es-ES/viewer.properties</file>
-               <file compressed="true">web/locale/sv-SE/viewer.properties</file>
-               <file compressed="true">web/locale/ms/viewer.properties</file>
                <file compressed="true">web/locale/ach/viewer.properties</file>
-               <file compressed="true">web/locale/sq/viewer.properties</file>
-               <file compressed="true">web/locale/ka/viewer.properties</file>
-               <file compressed="true">web/locale/gl/viewer.properties</file>
-               <file compressed="true">web/locale/en-CA/viewer.properties</file>
-               <file compressed="true">web/locale/hy-AM/viewer.properties</file>
-               <file compressed="true">web/locale/et/viewer.properties</file>
-               <file compressed="true">web/locale/ta/viewer.properties</file>
-               <file compressed="true">web/locale/eo/viewer.properties</file>
-               <file compressed="true">web/locale/da/viewer.properties</file>
-               <file compressed="true">web/locale/es-CL/viewer.properties</file>
-               <file compressed="true">web/locale/kab/viewer.properties</file>
-               <file compressed="true">web/locale/hr/viewer.properties</file>
-               <file compressed="true">web/locale/lt/viewer.properties</file>
-               <file compressed="true">web/locale/ltg/viewer.properties</file>
-               <file compressed="true">web/locale/gd/viewer.properties</file>
-               <file compressed="true">web/locale/vi/viewer.properties</file>
                <file compressed="true">web/locale/af/viewer.properties</file>
-               <file compressed="true">web/locale/sk/viewer.properties</file>
-               <file compressed="true">web/locale/ro/viewer.properties</file>
-               <file compressed="true">web/locale/hsb/viewer.properties</file>
-               <file compressed="true">web/locale/pt-PT/viewer.properties</file>
-               <file compressed="true">web/locale/kk/viewer.properties</file>
-               <file compressed="true">web/locale/hi-IN/viewer.properties</file>
-               <file compressed="true">web/locale/id/viewer.properties</file>
-               <file compressed="true">web/locale/tl/viewer.properties</file>
-               <file compressed="true">web/locale/gu-IN/viewer.properties</file>
-               <file compressed="true">web/locale/cak/viewer.properties</file>
-               <file compressed="true">web/locale/es-AR/viewer.properties</file>
-               <file compressed="true">web/locale/sr/viewer.properties</file>
-               <file compressed="true">web/locale/meh/viewer.properties</file>
-               <file compressed="true">web/locale/trs/viewer.properties</file>
-               <file compressed="true">web/locale/is/viewer.properties</file>
-               <file compressed="true">web/locale/fy-NL/viewer.properties</file>
-               <file compressed="true">web/locale/km/viewer.properties</file>
+               <file compressed="true">web/locale/an/viewer.properties</file>
                <file compressed="true">web/locale/ar/viewer.properties</file>
-               <file compressed="true">web/locale/fr/viewer.properties</file>
-               <file compressed="true">web/locale/lo/viewer.properties</file>
-               <file compressed="true">web/locale/pt-BR/viewer.properties</file>
-               <file compressed="true">web/locale/nl/viewer.properties</file>
-               <file compressed="true">web/locale/rm/viewer.properties</file>
-               <file compressed="true">web/locale/mr/viewer.properties</file>
-               <file compressed="true">web/locale/mk/viewer.properties</file>
-               <file compressed="true">web/locale/pl/viewer.properties</file>
-               <file compressed="true">web/locale/xh/viewer.properties</file>
+               <file compressed="true">web/locale/ast/viewer.properties</file>
+               <file compressed="true">web/locale/az/viewer.properties</file>
+               <file compressed="true">web/locale/be/viewer.properties</file>
+               <file compressed="true">web/locale/bg/viewer.properties</file>
                <file compressed="true">web/locale/bn/viewer.properties</file>
+               <file compressed="true">web/locale/bo/viewer.properties</file>
                <file compressed="true">web/locale/br/viewer.properties</file>
-               <file compressed="true">web/locale/en-GB/viewer.properties</file>
-               <file compressed="true">web/locale/kn/viewer.properties</file>
-               <file compressed="true">web/locale/cy/viewer.properties</file>
                <file compressed="true">web/locale/brx/viewer.properties</file>
-               <file compressed="true">web/locale/zh-TW/viewer.properties</file>
-               <file compressed="true">web/locale/lij/viewer.properties</file>
-               <file compressed="true">web/locale/ga-IE/viewer.properties</file>
-               <file compressed="true">web/locale/ne-NP/viewer.properties</file>
-               <file compressed="true">web/locale/az/viewer.properties</file>
-               <file compressed="true">web/locale/hu/viewer.properties</file>
-               <file compressed="true">web/locale/el/viewer.properties</file>
-               <file compressed="true">web/locale/gn/viewer.properties</file>
+               <file compressed="true">web/locale/bs/viewer.properties</file>
+               <file compressed="true">web/locale/ca/viewer.properties</file>
+               <file compressed="true">web/locale/cak/viewer.properties</file>
+               <file compressed="true">web/locale/ckb/viewer.properties</file>
                <file compressed="true">web/locale/cs/viewer.properties</file>
+               <file compressed="true">web/locale/cy/viewer.properties</file>
+               <file compressed="true">web/locale/da/viewer.properties</file>
+               <file compressed="true">web/locale/de/viewer.properties</file>
+               <file compressed="true">web/locale/dsb/viewer.properties</file>
+               <file compressed="true">web/locale/el/viewer.properties</file>
+               <file compressed="true">web/locale/en-CA/viewer.properties</file>
+               <file compressed="true">web/locale/en-GB/viewer.properties</file>
+               <file compressed="true">web/locale/en-US/viewer.properties</file>
+               <file compressed="true">web/locale/eo/viewer.properties</file>
+               <file compressed="true">web/locale/es-AR/viewer.properties</file>
+               <file compressed="true">web/locale/es-CL/viewer.properties</file>
+               <file compressed="true">web/locale/es-ES/viewer.properties</file>
+               <file compressed="true">web/locale/es-MX/viewer.properties</file>
+               <file compressed="true">web/locale/et/viewer.properties</file>
+               <file compressed="true">web/locale/eu/viewer.properties</file>
+               <file compressed="true">web/locale/fa/viewer.properties</file>
                <file compressed="true">web/locale/ff/viewer.properties</file>
-               <file compressed="true">web/locale/pa-IN/viewer.properties</file>
-               <file compressed="true">web/locale/sl/viewer.properties</file>
-               <file compressed="true">web/locale/lv/viewer.properties</file>
-               <file compressed="true">web/locale/ja/viewer.properties</file>
-               <file compressed="true">web/locale/ru/viewer.properties</file>
-               <file compressed="true">web/locale/ca/viewer.properties</file>
-               <file compressed="true">web/locale/wo/viewer.properties</file>
+               <file compressed="true">web/locale/fi/viewer.properties</file>
+               <file compressed="true">web/locale/fr/viewer.properties</file>
+               <file compressed="true">web/locale/fy-NL/viewer.properties</file>
+               <file compressed="true">web/locale/ga-IE/viewer.properties</file>
+               <file compressed="true">web/locale/gd/viewer.properties</file>
+               <file compressed="true">web/locale/gl/viewer.properties</file>
+               <file compressed="true">web/locale/gn/viewer.properties</file>
+               <file compressed="true">web/locale/gu-IN/viewer.properties</file>
+               <file compressed="true">web/locale/he/viewer.properties</file>
+               <file compressed="true">web/locale/hi-IN/viewer.properties</file>
+               <file compressed="true">web/locale/hr/viewer.properties</file>
+               <file compressed="true">web/locale/hsb/viewer.properties</file>
+               <file compressed="true">web/locale/hu/viewer.properties</file>
+               <file compressed="true">web/locale/hy-AM/viewer.properties</file>
+               <file compressed="true">web/locale/hye/viewer.properties</file>
+               <file compressed="true">web/locale/ia/viewer.properties</file>
+               <file compressed="true">web/locale/id/viewer.properties</file>
+               <file compressed="true">web/locale/is/viewer.properties</file>
                <file compressed="true">web/locale/it/viewer.properties</file>
-               <file compressed="true">web/locale/tr/viewer.properties</file>
-               <file compressed="true">web/locale/en-US/viewer.properties</file>
-               <file compressed="true">web/locale/an/viewer.properties</file>
+               <file compressed="true">web/locale/ja/viewer.properties</file>
+               <file compressed="true">web/locale/ka/viewer.properties</file>
+               <file compressed="true">web/locale/kab/viewer.properties</file>
+               <file compressed="true">web/locale/kk/viewer.properties</file>
+               <file compressed="true">web/locale/km/viewer.properties</file>
+               <file compressed="true">web/locale/kn/viewer.properties</file>
+               <file compressed="true">web/locale/ko/viewer.properties</file>
+               <file compressed="true">web/locale/lij/viewer.properties</file>
+               <file compressed="true">web/locale/lo/viewer.properties</file>
+               <file compressed="true">web/locale/lt/viewer.properties</file>
+               <file compressed="true">web/locale/ltg/viewer.properties</file>
+               <file compressed="true">web/locale/lv/viewer.properties</file>
+               <file compressed="true">web/locale/meh/viewer.properties</file>
+               <file compressed="true">web/locale/mk/viewer.properties</file>
+               <file compressed="true">web/locale/mr/viewer.properties</file>
+               <file compressed="true">web/locale/ms/viewer.properties</file>
                <file compressed="true">web/locale/my/viewer.properties</file>
-               <file compressed="true">web/locale/he/viewer.properties</file>
-               <file compressed="true">web/locale/eu/viewer.properties</file>
-               <file compressed="true">web/locale/bg/viewer.properties</file>
-               <file compressed="true">web/locale/bo/viewer.properties</file>
-               <file compressed="true">web/locale/uz/viewer.properties</file>
+               <file compressed="true">web/locale/nb-NO/viewer.properties</file>
+               <file compressed="true">web/locale/ne-NP/viewer.properties</file>
+               <file compressed="true">web/locale/nl/viewer.properties</file>
+               <file compressed="true">web/locale/nn-NO/viewer.properties</file>
                <file compressed="true">web/locale/oc/viewer.properties</file>
-               <file compressed="true">web/locale/th/viewer.properties</file>
-               <file compressed="true">web/locale/bs/viewer.properties</file>
-               <file compressed="true">web/locale/hye/viewer.properties</file>
+               <file compressed="true">web/locale/pa-IN/viewer.properties</file>
+               <file compressed="true">web/locale/pl/viewer.properties</file>
+               <file compressed="true">web/locale/pt-BR/viewer.properties</file>
+               <file compressed="true">web/locale/pt-PT/viewer.properties</file>
+               <file compressed="true">web/locale/rm/viewer.properties</file>
+               <file compressed="true">web/locale/ro/viewer.properties</file>
+               <file compressed="true">web/locale/ru/viewer.properties</file>
                <file compressed="true">web/locale/scn/viewer.properties</file>
-               <file compressed="true">web/locale/ckb/viewer.properties</file>
+               <file compressed="true">web/locale/si/viewer.properties</file>
+               <file compressed="true">web/locale/sk/viewer.properties</file>
+               <file compressed="true">web/locale/sl/viewer.properties</file>
+               <file compressed="true">web/locale/son/viewer.properties</file>
+               <file compressed="true">web/locale/sq/viewer.properties</file>
+               <file compressed="true">web/locale/sr/viewer.properties</file>
+               <file compressed="true">web/locale/sv-SE/viewer.properties</file>
                <file compressed="true">web/locale/szl/viewer.properties</file>
-               <file compressed="true">web/cmaps/B5pc-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UTF16-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISPro-UCS2-HW-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-4.bcmap</file>
-               <file compressed="true">web/cmaps/Add-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/ETen-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Korea1-2.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISPro-UTF8-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UTF8-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-0.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-1.bcmap</file>
-               <file compressed="true">web/cmaps/ETenms-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-UCS2.bcmap</file>
-               <file compressed="true">web/cmaps/90pv-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/B5pc-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UTF16-V.bcmap</file>
-               <file compressed="true">web/cmaps/B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/HKgccs-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSC-Johab-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UCS2-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-5.bcmap</file>
-               <file compressed="true">web/cmaps/Add-V.bcmap</file>
-               <file compressed="true">web/cmaps/GBT-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/Hankaku.bcmap</file>
-               <file compressed="true">web/cmaps/78-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UCS2-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UTF8-V.bcmap</file>
-               <file compressed="true">web/cmaps/V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-UCS2.bcmap</file>
-               <file compressed="true">web/cmaps/EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UTF8-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSCms-UHC-HW-H.bcmap</file>
-               <file compressed="true">web/cmaps/78ms-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-2.bcmap</file>
-               <file compressed="true">web/cmaps/KSCpc-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-0.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UTF8-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UTF8-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/HKscs-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-4.bcmap</file>
-               <file compressed="true">web/cmaps/KSC-Johab-V.bcmap</file>
-               <file compressed="true">web/cmaps/Ext-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UCS2-HW-H.bcmap</file>
-               <file compressed="true">web/cmaps/GBTpc-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS2004-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UTF8-H.bcmap</file>
-               <file compressed="true">web/cmaps/78-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS2004-UTF8-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UTF8-H.bcmap</file>
-               <file compressed="true">web/cmaps/GBpc-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/HKdlb-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UTF16-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Korea1-1.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-1.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-3.bcmap</file>
-               <file compressed="true">web/cmaps/GBT-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/GBT-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-3.bcmap</file>
-               <file compressed="true">web/cmaps/Hiragana.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UCS2-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UCS2-HW-V.bcmap</file>
-               <file compressed="true">web/cmaps/Add-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UTF16-V.bcmap</file>
-               <file compressed="true">web/cmaps/78-H.bcmap</file>
-               <file compressed="true">web/cmaps/RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS2004-UTF16-V.bcmap</file>
-               <file compressed="true">web/cmaps/GBT-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSC-H.bcmap</file>
-               <file compressed="true">web/cmaps/CNS2-V.bcmap</file>
-               <file compressed="true">web/cmaps/GBKp-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/HKm314-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-5.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-6.bcmap</file>
-               <file compressed="true">web/cmaps/KSC-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/90ms-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/NWP-V.bcmap</file>
-               <file compressed="true">web/cmaps/GB-H.bcmap</file>
-               <file compressed="true">web/cmaps/GBpc-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSCms-UHC-H.bcmap</file>
-               <file compressed="true">web/cmaps/83pv-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/78-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/HKm471-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UTF16-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UTF8-V.bcmap</file>
-               <file compressed="true">web/cmaps/CNS1-H.bcmap</file>
-               <file compressed="true">web/cmaps/ETHK-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UTF16-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISPro-UCS2-V.bcmap</file>
-               <file compressed="true">web/cmaps/Ext-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/GB-V.bcmap</file>
-               <file compressed="true">web/cmaps/GB-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/GBK-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Korea1-UCS2.bcmap</file>
-               <file compressed="true">web/cmaps/GBKp-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/Add-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniKS-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/78-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/WP-Symbol.bcmap</file>
-               <file compressed="true">web/cmaps/HKdla-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISX0213-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS2004-UTF8-H.bcmap</file>
-               <file compressed="true">web/cmaps/90msp-RKSJ-V.bcmap</file>
-               <file compressed="true">web/cmaps/CNS1-V.bcmap</file>
-               <file compressed="true">web/cmaps/RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/GBTpc-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/Ext-H.bcmap</file>
-               <file compressed="true">web/cmaps/GBK-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/ETHK-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UTF16-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSC-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISX02132004-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/Ext-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS2004-UTF16-H.bcmap</file>
-               <file compressed="true">web/cmaps/90msp-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/Roman.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-1.bcmap</file>
-               <file compressed="true">web/cmaps/KSCms-UHC-HW-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UTF16-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-3.bcmap</file>
-               <file compressed="true">web/cmaps/NWP-H.bcmap</file>
-               <file compressed="true">web/cmaps/LICENSE</file>
-               <file compressed="true">web/cmaps/ETen-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/HKgccs-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/CNS-EUC-H.bcmap</file>
-               <file compressed="true">web/cmaps/CNS-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISX0213-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/HKdlb-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSC-V.bcmap</file>
-               <file compressed="true">web/cmaps/HKdla-B5-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS2004-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/GB-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UCS2-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-2.bcmap</file>
-               <file compressed="true">web/cmaps/78ms-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/HKscs-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/H.bcmap</file>
-               <file compressed="true">web/cmaps/HKm471-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSCpc-EUC-V.bcmap</file>
-               <file compressed="true">web/cmaps/Katakana.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UCS2-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniJISX02132004-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-GB1-UCS2.bcmap</file>
-               <file compressed="true">web/cmaps/ETenms-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/90ms-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniGB-UTF32-H.bcmap</file>
-               <file compressed="true">web/cmaps/HKm314-B5-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-0.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-2.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-5.bcmap</file>
-               <file compressed="true">web/cmaps/90pv-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/KSCms-UHC-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-CNS1-4.bcmap</file>
-               <file compressed="true">web/cmaps/GBK2K-V.bcmap</file>
-               <file compressed="true">web/cmaps/GBK2K-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UTF32-V.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Japan1-6.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UCS2-H.bcmap</file>
-               <file compressed="true">web/cmaps/78-RKSJ-H.bcmap</file>
-               <file compressed="true">web/cmaps/UniCNS-UCS2-V.bcmap</file>
-               <file compressed="true">web/cmaps/CNS2-H.bcmap</file>
-               <file compressed="true">web/cmaps/Adobe-Korea1-0.bcmap</file>
-               <file compressed="true">web/cmaps/UniJIS-UCS2-H.bcmap</file>
+               <file compressed="true">web/locale/ta/viewer.properties</file>
+               <file compressed="true">web/locale/te/viewer.properties</file>
+               <file compressed="true">web/locale/th/viewer.properties</file>
+               <file compressed="true">web/locale/tl/viewer.properties</file>
+               <file compressed="true">web/locale/tr/viewer.properties</file>
+               <file compressed="true">web/locale/trs/viewer.properties</file>
+               <file compressed="true">web/locale/uk/viewer.properties</file>
+               <file compressed="true">web/locale/ur/viewer.properties</file>
+               <file compressed="true">web/locale/uz/viewer.properties</file>
+               <file compressed="true">web/locale/vi/viewer.properties</file>
+               <file compressed="true">web/locale/wo/viewer.properties</file>
+               <file compressed="true">web/locale/xh/viewer.properties</file>
+               <file compressed="true">web/locale/zh-CN/viewer.properties</file>
+               <file compressed="true">web/locale/zh-TW/viewer.properties</file>
        </gresource>
 </gresources>
diff --git a/third-party/pdfjs/web/debugger.js b/third-party/pdfjs/web/debugger.js
index 500522d84..c79aeeecf 100644
--- a/third-party/pdfjs/web/debugger.js
+++ b/third-party/pdfjs/web/debugger.js
@@ -115,7 +115,7 @@ var FontInspector = (function FontInspectorClosure() {
       name.textContent = fontName;
       var download = document.createElement("a");
       if (url) {
-        url = /url\(['"]?([^\)"']+)/.exec(url);
+        url = /url\(['"]?([^)"']+)/.exec(url);
         download.href = url[1];
       } else if (fontObj.data) {
         download.href = URL.createObjectURL(
@@ -381,7 +381,6 @@ var Stepper = (function StepperClosure() {
         line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs))));
       }
       if (operatorsToDisplay < operatorList.fnArray.length) {
-        line = c("tr");
         var lastCell = c("td", "...");
         lastCell.colspan = 4;
         chunk.appendChild(lastCell);
diff --git a/third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg 
b/third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg
new file mode 100644
index 000000000..c1c72b208
--- /dev/null
+++ b/third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; height="16" width="16"><path d="m14 9h-6c-1.3 0-1.3 2 0 2h6c1.3 0 
1.3-2 0-2zm-5.2-8h-3.8c-1.3 0-1.3 2 0 2h1.7zm-6.8 0c-1 0-1.3 1-0.7 1.7 0.7 0.6 1.7 0.3 1.7-0.7 
0-0.5-0.4-1-1-1zm3 8c-1 0-1.3 1-0.7 1.7 0.6 0.6 1.7 0.2 1.7-0.7 0-0.5-0.4-1-1-1zm0.3-4h-0.3c-1.4 0-1.4 2 0 
2h2.3zm-3.3 0c-0.9 0-1.4 1-0.7 1.7 0.7 0.6 1.7 0.2 1.7-0.7 0-0.6-0.5-1-1-1zm12 8h-9c-1.3 0-1.3 2 0 2h9c1.3 0 
1.3-2 0-2zm-12 0c-1 0-1.3 1-0.7 1.7 0.7 0.6 1.7 0.2 1.7-0.712 0-0.5-0.4-1-1-1z"/><path d="m7.37 4.838 
3.93-3.911v2.138h3.629v3.546h-3.629v2.138l-3.93-3.911"/></svg>
\ No newline at end of file
diff --git a/third-party/pdfjs/web/locale/an/viewer.properties 
b/third-party/pdfjs/web/locale/an/viewer.properties
index 7e3504c77..e33936cde 100644
--- a/third-party/pdfjs/web/locale/an/viewer.properties
+++ b/third-party/pdfjs/web/locale/an/viewer.properties
@@ -42,7 +42,7 @@ print_label=Imprentar
 download.title=Descargar
 download_label=Descargar
 bookmark.title=Vista actual (copiar u ubrir en una nueva finestra)
-bookmark_label=Anvista actual
+bookmark_label=Vista actual
 
 # Secondary toolbar and context menu
 tools.title=Ferramientas
@@ -65,6 +65,20 @@ cursor_text_select_tool_label=Ferramienta de selección de texto
 cursor_hand_tool.title=Activar la ferramienta man
 cursor_hand_tool_label=Ferramienta man
 
+scroll_vertical.title=Usar lo desplazamiento vertical
+scroll_vertical_label=Desplazamiento vertical
+scroll_horizontal.title=Usar lo desplazamiento horizontal
+scroll_horizontal_label=Desplazamiento horizontal
+scroll_wrapped.title=Activaar lo desplazamiento contino
+scroll_wrapped_label=Desplazamiento contino
+
+spread_none.title=No unir vistas de pachinas
+spread_none_label=Una pachina nomás
+spread_odd.title=Mostrar vista de pachinas, con as impars a la zurda
+spread_odd_label=Doble pachina, impar a la zurda
+spread_even.title=Amostrar vista de pachinas, con as pars a la zurda
+spread_even_label=Doble pachina, para a la zurda
+
 # Document properties dialog box
 document_properties.title=Propiedatz d'o documento...
 document_properties_label=Propiedatz d'o documento...
@@ -89,6 +103,28 @@ document_properties_creator=Creyador:
 document_properties_producer=Creyador de PDF:
 document_properties_version=Versión de PDF:
 document_properties_page_count=Numero de pachinas:
+document_properties_page_size=Mida de pachina:
+document_properties_page_size_unit_inches=pulgadas
+document_properties_page_size_unit_millimeters=mm
+document_properties_page_size_orientation_portrait=vertical
+document_properties_page_size_orientation_landscape=horizontal
+document_properties_page_size_name_a3=A3
+document_properties_page_size_name_a4=A4
+document_properties_page_size_name_letter=Carta
+document_properties_page_size_name_legal=Legal
+# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
+# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
+# the size, respectively their unit of measurement and orientation, of the (current) page.
+document_properties_page_size_dimension_string={{width}} x {{height}} {{unit}} {{orientation}}
+# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
+# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
+# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
+document_properties_page_size_dimension_name_string={{width}} x {{height}} {{unit}} {{name}}, {{orientation}}
+# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
+# the document; usually called "Fast Web View" in English locales of Adobe software.
+document_properties_linearized=Vista web rapida:
+document_properties_linearized_yes=Sí
+document_properties_linearized_no=No
 document_properties_close=Zarrar
 
 print_progress_message=Se ye preparando la documentación pa imprentar…
@@ -102,16 +138,22 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Amostrar u amagar a barra lateral
 toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos)
+toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas)
 toggle_sidebar_label=Amostrar a barra lateral
 document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items)
 document_outline_label=Esquema d'o documento
 attachments.title=Amostrar os adchuntos
 attachments_label=Adchuntos
+layers.title=Amostrar capas (doble clic para reiniciar totas las capas a lo estau per defecto)
+layers_label=Capas
 thumbs.title=Amostrar as miniaturas
 thumbs_label=Miniaturas
 findbar.title=Trobar en o documento
 findbar_label=Trobar
 
+additional_layers=Capas adicionals
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=Pachina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -129,8 +171,30 @@ find_next.title=Trobar a siguient coincidencia d'a frase
 find_next_label=Siguient
 find_highlight=Resaltar-lo tot
 find_match_case_label=Coincidencia de mayusclas/minusclas
+find_entire_word_label=Parolas completas
 find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo
 find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto
+# LOCALIZATION NOTE (find_match_count): The supported plural forms are
+# [one|two|few|many|other], with [other] as the default value.
+# "{{current}}" and "{{total}}" will be replaced by a number representing the
+# index of the currently active find result, respectively a number representing
+# the total number of matches in the document.
+find_match_count={[ plural(total) ]}
+find_match_count[one]={{current}} de {{total}} coincidencia
+find_match_count[two]={{current}} de {{total}} coincidencias
+find_match_count[few]={{current}} de {{total}} coincidencias
+find_match_count[many]={{current}} de {{total}} coincidencias
+find_match_count[other]={{current}} de {{total}} coincidencias
+# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
+# [zero|one|two|few|many|other], with [other] as the default value.
+# "{{limit}}" will be replaced by a numerical value.
+find_match_count_limit={[ plural(limit) ]}
+find_match_count_limit[zero]=Mas de {{limit}} coincidencias
+find_match_count_limit[one]=Mas de {{limit}} coincidencias
+find_match_count_limit[two]=Mas que {{limit}} coincidencias
+find_match_count_limit[few]=Mas que {{limit}} coincidencias
+find_match_count_limit[many]=Mas que {{limit}} coincidencias
+find_match_count_limit[other]=Mas que {{limit}} coincidencias
 find_not_found=No s'ha trobau a frase
 
 # Error panel labels
@@ -168,6 +232,10 @@ invalid_file_error=O PDF no ye valido u ye estorbau.
 missing_file_error=No i ha fichero PDF.
 unexpected_response_error=Respuesta a lo servicio inasperada.
 
+# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
+# replaced by the modification date, and time, of the annotation.
+annotation_date_string={{date}}, {{time}}
+
 # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
diff --git a/third-party/pdfjs/web/locale/ar/viewer.properties 
b/third-party/pdfjs/web/locale/ar/viewer.properties
index cffa8bec5..c1ae0bfff 100644
--- a/third-party/pdfjs/web/locale/ar/viewer.properties
+++ b/third-party/pdfjs/web/locale/ar/viewer.properties
@@ -47,12 +47,12 @@ bookmark_label=المنظور الحالي
 # Secondary toolbar and context menu
 tools.title=الأدوات
 tools_label=الأدوات
-first_page.title=اذهب إلى الصفحة الأولى
-first_page.label=اذهب إلى الصفحة الأولى
-first_page_label=اذهب إلى الصفحة الأولى
-last_page.title=اذهب إلى الصفحة الأخيرة
-last_page.label=اذهب إلى الصفحة الأخيرة
-last_page_label=اذهب إلى الصفحة الأخيرة
+first_page.title=انتقل إلى الصفحة الأولى
+first_page.label=انتقل إلى الصفحة الأولى
+first_page_label=انتقل إلى الصفحة الأولى
+last_page.title=انتقل إلى الصفحة الأخيرة
+last_page.label=انتقل إلى الصفحة الأخيرة
+last_page_label=انتقل إلى الصفحة الأخيرة
 page_rotate_cw.title=أدر باتجاه عقارب الساعة
 page_rotate_cw.label=أدر باتجاه عقارب الساعة
 page_rotate_cw_label=أدر باتجاه عقارب الساعة
@@ -138,16 +138,22 @@ print_progress_close=ألغِ
 # tooltips)
 toggle_sidebar.title=بدّل ظهور الشريط الجانبي
 toggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات)
+toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات أو طبقات)
 toggle_sidebar_label=بدّل ظهور الشريط الجانبي
 document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر)
 document_outline_label=مخطط المستند
 attachments.title=اعرض المرفقات
 attachments_label=المُرفقات
+layers.title=اعرض الطبقات (انقر مرتين لتصفير كل الطبقات إلى الحالة المبدئية)
+layers_label=‏‏الطبقات
 thumbs.title=اعرض مُصغرات
 thumbs_label=مُصغّرات
 findbar.title=ابحث في المستند
 findbar_label=ابحث
 
+additional_layers=الطبقات الإضافية
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=صفحة {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
diff --git a/third-party/pdfjs/web/locale/az/viewer.properties 
b/third-party/pdfjs/web/locale/az/viewer.properties
index 8f61d9641..99b94a31c 100644
--- a/third-party/pdfjs/web/locale/az/viewer.properties
+++ b/third-party/pdfjs/web/locale/az/viewer.properties
@@ -39,8 +39,8 @@ open_file.title=Fayl Aç
 open_file_label=Aç
 print.title=Yazdır
 print_label=Yazdır
-download.title=Yüklə
-download_label=Yüklə
+download.title=Endir
+download_label=Endir
 bookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç)
 bookmark_label=Hazırkı görünüş
 
@@ -138,16 +138,20 @@ print_progress_close=Ləğv et
 # tooltips)
 toggle_sidebar.title=Yan Paneli Aç/Bağla
 toggle_sidebar_notification.title=Yan paneli çevir (sənəddə icmal/bağlama var)
+toggle_sidebar_notification2.title=Yan paneli çevir (sənəddə icmal/bağlamalar/laylar mövcuddur)
 toggle_sidebar_label=Yan Paneli Aç/Bağla
 document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin)
 document_outline_label=Sənəd strukturu
 attachments.title=Bağlamaları göstər
 attachments_label=Bağlamalar
+layers.title=Layları göstər (bütün layları ilkin halına sıfırlamaq üçün iki dəfə klikləyin)
+layers_label=Laylar
 thumbs.title=Kiçik şəkilləri göstər
 thumbs_label=Kiçik şəkillər
 findbar.title=Sənəddə Tap
 findbar_label=Tap
 
+additional_layers=Əlavə laylar
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Səhifə {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/be/viewer.properties 
b/third-party/pdfjs/web/locale/be/viewer.properties
index 6ac719288..d4204c179 100644
--- a/third-party/pdfjs/web/locale/be/viewer.properties
+++ b/third-party/pdfjs/web/locale/be/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Скасаваць
 # tooltips)
 toggle_sidebar.title=Паказаць/схаваць бакавую панэль
 toggle_sidebar_notification.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні)
+toggle_sidebar_notification2.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні/пласты)
 toggle_sidebar_label=Паказаць/схаваць бакавую панэль
 document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы)
 document_outline_label=Структура дакумента
 attachments.title=Паказаць далучэнні
 attachments_label=Далучэнні
+layers.title=Паказаць пласты (двойчы пстрыкніце, каб скінуць усе пласты да прадвызначанага стану)
+layers_label=Пласты
 thumbs.title=Паказ мініяцюр
 thumbs_label=Мініяцюры
 findbar.title=Пошук у дакуменце
 findbar_label=Знайсці
 
+additional_layers=Дадатковыя пласты
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Старонка {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/br/viewer.properties 
b/third-party/pdfjs/web/locale/br/viewer.properties
index 9add9a432..d46d82f4b 100644
--- a/third-party/pdfjs/web/locale/br/viewer.properties
+++ b/third-party/pdfjs/web/locale/br/viewer.properties
@@ -82,27 +82,27 @@ spread_even_label=Pajennoù par
 # Document properties dialog box
 document_properties.title=Perzhioù an teul…
 document_properties_label=Perzhioù an teul…
-document_properties_file_name=Anv restr :
-document_properties_file_size=Ment ar restr :
+document_properties_file_name=Anv restr:
+document_properties_file_size=Ment ar restr:
 # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in kilobytes, respectively in bytes.
 document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit)
 # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in megabytes, respectively in bytes.
 document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit)
-document_properties_title=Titl :
-document_properties_author=Aozer :
-document_properties_subject=Danvez :
-document_properties_keywords=Gerioù-alc'hwez :
-document_properties_creation_date=Deiziad krouiñ :
-document_properties_modification_date=Deiziad kemmañ :
+document_properties_title=Titl:
+document_properties_author=Aozer:
+document_properties_subject=Danvez:
+document_properties_keywords=Gerioù-alc'hwez:
+document_properties_creation_date=Deiziad krouiñ:
+document_properties_modification_date=Deiziad kemmañ:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
 # will be replaced by the creation/modification date, and time, of the PDF file.
 document_properties_date_string={{date}}, {{time}}
-document_properties_creator=Krouer :
-document_properties_producer=Kenderc'her PDF :
-document_properties_version=Handelv PDF :
-document_properties_page_count=Niver a bajennoù :
+document_properties_creator=Krouer:
+document_properties_producer=Kenderc'her PDF:
+document_properties_version=Handelv PDF:
+document_properties_page_count=Niver a bajennoù:
 document_properties_page_size=Ment ar bajenn:
 document_properties_page_size_unit_inches=in
 document_properties_page_size_unit_millimeters=mm
@@ -138,11 +138,13 @@ print_progress_close=Nullañ
 # tooltips)
 toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez
 toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul)
+toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul)
 toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez
 document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù)
 document_outline_label=Sinedoù an teuliad
 attachments.title=Diskouez ar c'henstagadurioù
 attachments_label=Kenstagadurioù
+layers_label=Gwiskadoù
 thumbs.title=Diskouez ar melvennoù
 thumbs_label=Melvennoù
 findbar.title=Klask e-barzh an teuliad
@@ -199,17 +201,17 @@ error_less_info=Nebeutoc'h a ditouroù
 error_close=Serriñ
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
 # replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js handelv {{version}} (kempunadur : {{build}})
+error_version_info=PDF.js handelv {{version}} (kempunadur: {{build}})
 # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
 # english string describing the error.
-error_message=Kemennadenn : {{message}}
+error_message=Kemennadenn: {{message}}
 # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
 # trace.
-error_stack=Torn : {{stack}}
+error_stack=Torn: {{stack}}
 # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=Restr : {{file}}
+error_file=Restr: {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Linenn : {{line}}
+error_line=Linenn: {{line}}
 rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad.
 
 # Predefined zoom values
@@ -242,6 +244,6 @@ password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij.
 password_ok=Mat eo
 password_cancel=Nullañ
 
-printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ.
-printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn.
-web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet.
+printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ.
+printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn.
+web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet.
diff --git a/third-party/pdfjs/web/locale/ca/viewer.properties 
b/third-party/pdfjs/web/locale/ca/viewer.properties
index ac6fb779f..22ae91c1a 100644
--- a/third-party/pdfjs/web/locale/ca/viewer.properties
+++ b/third-party/pdfjs/web/locale/ca/viewer.properties
@@ -213,7 +213,7 @@ error_line=Línia: {{line}}
 rendering_error=S'ha produït un error mentre es renderitzava la pàgina.
 
 # Predefined zoom values
-page_scale_width=Amplària de la pàgina
+page_scale_width=Amplada de la pàgina
 page_scale_fit=Ajusta la pàgina
 page_scale_auto=Zoom automàtic
 page_scale_actual=Mida real
diff --git a/third-party/pdfjs/web/locale/cak/viewer.properties 
b/third-party/pdfjs/web/locale/cak/viewer.properties
index d4eae51a8..5d9be9a07 100644
--- a/third-party/pdfjs/web/locale/cak/viewer.properties
+++ b/third-party/pdfjs/web/locale/cak/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Tiq'at
 # tooltips)
 toggle_sidebar.title=Tijal ri ajxikin kajtz'ik
 toggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq 
yakb'äl)
+toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj)
 toggle_sidebar_label=Tijal ri ajxikin kajtz'ik
 document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel 
ruch'akulal)
 document_outline_label=Ruch'akulal wuj
 attachments.title=Kek'ut pe ri taq taqoj
 attachments_label=Taq taqoj
+layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuchuj e k'o wi)
+layers_label=Taq kuchuj
 thumbs.title=Kek'ut pe taq ch'utiq
 thumbs_label=Koköj
 findbar.title=Tikanöx chupam ri wuj
 findbar_label=Tikanöx
 
+additional_layers=Tz'aqat ta Kuchuj
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Ruxaq {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/ckb/viewer.properties 
b/third-party/pdfjs/web/locale/ckb/viewer.properties
index d1bed431b..4cef6ccbc 100644
--- a/third-party/pdfjs/web/locale/ckb/viewer.properties
+++ b/third-party/pdfjs/web/locale/ckb/viewer.properties
@@ -13,6 +13,8 @@
 # limitations under the License.
 
 # Main toolbar buttons (tooltips and alt text for images)
+previous.title=پەڕەی پێشوو
+previous_label=پێشوو
 next.title=پەڕەی دوواتر
 next_label=دوواتر
 
@@ -20,20 +22,51 @@ next_label=دوواتر
 page.title=پەرە
 # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
 # representing the total number of pages in the document.
+of_pages=لە {{pagesCount}}
 # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
 # will be replaced by a number representing the currently visible page,
 # respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} لە {{pagesCount}})
 
+zoom_out.title=ڕۆچوونی
+zoom_out_label=ڕۆچوونی
+zoom_in.title=هێنانەپێش
+zoom_in_label=هێنانەپێش
+zoom.title=زووم
 open_file.title=پەڕگە بکەرەوە
 open_file_label=کردنەوە
 print.title=چاپکردن
+print_label=چاپکردن
 download.title=داگرتن
+download_label=داگرتن
 
 # Secondary toolbar and context menu
 tools.title=ئامرازەکان
+tools_label=ئامرازەکان
 first_page.title=برۆ بۆ یەکەم پەڕە
-
-
+first_page.label=بڕۆ بۆ یەکەم پەڕە
+first_page_label=بڕۆ بۆ یەکەم پەڕە
+last_page.title=بڕۆ بۆ کۆتا پەڕە
+last_page.label=بڕۆ بۆ کۆتا پەڕە
+last_page_label=بڕۆ بۆ کۆتا پەڕە
+page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر
+page_rotate_cw.label=ئاڕاستەی میلی کاتژمێر
+page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر
+page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر
+page_rotate_ccw.label=پێچەوانەی میلی کاتژمێر
+page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر
+
+cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە
+cursor_text_select_tool_label=توڵامرازی نیشانکەری دەق
+cursor_hand_tool.title=توڵامرازی دەستی چالاک بکە
+cursor_hand_tool_label=توڵامرازی دەستی
+
+scroll_vertical.title=ناردنی ئەستوونی بەکاربێنە
+scroll_vertical_label=ناردنی ئەستوونی
+scroll_horizontal.title=ناردنی ئاسۆیی بەکاربێنە
+scroll_horizontal_label=ناردنی ئاسۆیی 
+scroll_wrapped.title=ناردنی لوولکراو بەکاربێنە
+scroll_wrapped_label=ناردنی لوولکراو 
 
 
 # Document properties dialog box
@@ -41,71 +74,162 @@ document_properties_file_name=ناوی پەڕگە:
 document_properties_file_size=قەبارەی پەڕگە:
 # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} کب ({{size_b}} بایت)
 # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} مب ({{size_b}} بایت)
 document_properties_title=سەردێڕ:
 document_properties_author=نووسەر
+document_properties_subject=بابەت:
 document_properties_keywords=کلیلەوشە:
+document_properties_creation_date=بەرواری درووستکردن:
+document_properties_modification_date=بەرواری دەستکاریکردن:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
 # will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=درووستکەر:
+document_properties_producer=بەرهەمهێنەری PDF:
+document_properties_version=وەشانی PDF:
+document_properties_page_count=ژمارەی پەرەکان:
+document_properties_page_size=قەبارەی پەڕە:
+document_properties_page_size_unit_inches=ئینچ
+document_properties_page_size_unit_millimeters=ملم
+document_properties_page_size_orientation_portrait=پۆرترەیت(درێژ)
+document_properties_page_size_orientation_landscape=پانیی
+document_properties_page_size_name_a3=A3
+document_properties_page_size_name_a4=A4
+document_properties_page_size_name_letter=نامە
+document_properties_page_size_name_legal=یاسایی
 # LOCALIZATION NOTE (document_properties_page_size_dimension_string):
 # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
 # the size, respectively their unit of measurement and orientation, of the (current) page.
+document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})
 # LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
 # "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
 # the size, respectively their unit of measurement, name, and orientation, of the (current) page.
+document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, 
{{orientation}})
 # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
 # the document; usually called "Fast Web View" in English locales of Adobe software.
+document_properties_linearized=پیشاندانی وێبی خێرا:
+document_properties_linearized_yes=بەڵێ
+document_properties_linearized_no=نەخێر
 document_properties_close=داخستن
 
+print_progress_message=بەڵگەنامە ئامادەدەکرێت بۆ چاپکردن...
 # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
 # a numerical per cent value.
+print_progress_percent={{progress}}%
 print_progress_close=پاشگەزبوونەوە
 
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
+toggle_sidebar.title=لاتەنیشت پیشاندان/شاردنەوە
+toggle_sidebar_label=لاتەنیشت پیشاندان/شاردنەوە
+document_outline_label=سنووری چوارچێوە
+attachments.title=پاشکۆکان پیشان بدە
+attachments_label=پاشکۆکان
+layers_label=چینەکان
+thumbs.title=وێنۆچکە پیشان بدە
+thumbs_label=وێنۆچکە
+findbar.title=لە بەڵگەنامە بگەرێ
 findbar_label=دۆزینەوە
 
+additional_layers=چینی زیاتر
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=پەڕەی {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
+thumb_page_title=پەڕەی {{page}}
 # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
 # number.
+thumb_page_canvas=وێنۆچکەی پەڕەی {{page}}
 
 # Find panel button title and messages
 find_input.title=دۆزینەوە
+find_input.placeholder=لە بەڵگەنامە بگەرێ...
+find_previous.title=هەبوونی پێشوو بدۆزرەوە لە ڕستەکەدا
+find_previous_label=پێشوو
+find_next.title=هەبوونی داهاتوو بدۆزەرەوە لە ڕستەکەدا
+find_next_label=دوواتر
+find_highlight=هەمووی نیشانە بکە
+find_match_case_label=دۆخی لەیەکچوون
+find_entire_word_label=هەموو وشەکان
+find_reached_top=گەشتیتە سەرەوەی بەڵگەنامە، لە خوارەوە دەستت پێکرد
+find_reached_bottom=گەشتیتە کۆتایی بەڵگەنامە. لەسەرەوە دەستت پێکرد
 # LOCALIZATION NOTE (find_match_count): The supported plural forms are
 # [one|two|few|many|other], with [other] as the default value.
 # "{{current}}" and "{{total}}" will be replaced by a number representing the
 # index of the currently active find result, respectively a number representing
 # the total number of matches in the document.
+find_match_count={[ plural(total) ]}
+find_match_count[one]={{current}} لە کۆی {{total}} لەیەکچوو
+find_match_count[two]={{current}} لە کۆی {{total}} لەیەکچوو
+find_match_count[few]={{current}} لە کۆی {{total}} لەیەکچوو
+find_match_count[many]={{current}} لە کۆی {{total}} لەیەکچوو
+find_match_count[other]={{current}} لە کۆی {{total}} لەیەکچوو
 # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
 # [zero|one|two|few|many|other], with [other] as the default value.
 # "{{limit}}" will be replaced by a numerical value.
+find_match_count_limit={[ plural(limit) ]}
+find_match_count_limit[zero]=زیاتر لە {{limit}} لەیەکچوو
+find_match_count_limit[one]=زیاتر لە {{limit}} لەیەکچوو
+find_match_count_limit[two]=زیاتر لە {{limit}} لەیەکچوو
+find_match_count_limit[few]=زیاتر لە {{limit}} لەیەکچوو
+find_match_count_limit[many]=زیاتر لە {{limit}} لەیەکچوو
+find_match_count_limit[other]=زیاتر لە {{limit}} لەیەکچوو
+find_not_found=نووسین نەدۆزرایەوە
 
 # Error panel labels
+error_more_info=زانیاری زیاتر
+error_less_info=زانیاری کەمتر
+error_close=داخستن
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
 # replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
 # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
 # english string describing the error.
+error_message=پەیام: {{message}}
 # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
 # trace.
+error_stack=لەسەریەک: {{stack}}
 # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=پەڕگە: {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=هێڵ: {{line}}
+rendering_error=هەڵەیەک ڕوویدا لە کاتی پوختەکردنی (ڕێندەر) پەڕە.
 
 # Predefined zoom values
+page_scale_width=پانی پەڕە
+page_scale_fit=پڕبوونی پەڕە
+page_scale_auto=زوومی خۆکار
+page_scale_actual=قەبارەی ڕاستی
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
+page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=هەڵە
+loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی  PDF.
+invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە.
+missing_file_error=پەڕگەی pdf بوونی نیە.
+unexpected_response_error=وەڵامی ڕاژەخوازی نەخوازراو.
 
 # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
 # replaced by the modification date, and time, of the annotation.
+annotation_date_string={{date}}, {{time}}
 
 # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
 # Some common types are e.g.: "Check", "Text", "Comment", "Note"
-
+text_annotation_type.alt=[{{type}} سەرنج]
+password_label=وشەی تێپەڕ بنووسە بۆ کردنەوەی پەڕگەی pdf.
+password_invalid=وشەی تێپەڕ هەڵەیە. تکایە دووبارە هەوڵ بدەرەوە.
+password_ok=باشە
+password_cancel=پاشگەزبوونەوە
+
+printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت لەم وێبگەڕە.
+printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن.
+web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت.
diff --git a/third-party/pdfjs/web/locale/cs/viewer.properties 
b/third-party/pdfjs/web/locale/cs/viewer.properties
index 646f410bb..a5a36c512 100644
--- a/third-party/pdfjs/web/locale/cs/viewer.properties
+++ b/third-party/pdfjs/web/locale/cs/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Zrušit
 # tooltips)
 toggle_sidebar.title=Postranní lišta
 toggle_sidebar_notification.title=Přepne postranní lištu (dokument obsahuje osnovu/přílohy)
+toggle_sidebar_notification2.title=Přepnout postranní lištu (dokument obsahuje osnovu/přílohy/vrstvy)
 toggle_sidebar_label=Postranní lišta
 document_outline.title=Zobrazí osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky)
 document_outline_label=Osnova dokumentu
 attachments.title=Zobrazí přílohy
 attachments_label=Přílohy
+layers.title=Zobrazit vrstvy (poklepáním obnovíte všechny vrstvy do výchozího stavu)
+layers_label=Vrstvy
 thumbs.title=Zobrazí náhledy
 thumbs_label=Náhledy
 findbar.title=Najde v dokumentu
 findbar_label=Najít
 
+additional_layers=Další vrstvy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strana {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/cy/viewer.properties 
b/third-party/pdfjs/web/locale/cy/viewer.properties
index 16cda5fd7..3f819c2be 100644
--- a/third-party/pdfjs/web/locale/cy/viewer.properties
+++ b/third-party/pdfjs/web/locale/cy/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Diddymu
 # tooltips)
 toggle_sidebar.title=Toglo'r Bar Ochr
 toggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments)
+toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau)
 toggle_sidebar_label=Toglo'r Bar Ochr
 document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem)
 document_outline_label=Amlinelliad Dogfen
 attachments.title=Dangos Atodiadau
 attachments_label=Atodiadau
+layers.title=Dangos Haenau (cliciwch ddwywaith i ailosod yr holl haenau i'r cyflwr rhagosodedig)
+layers_label=Haenau
 thumbs.title=Dangos Lluniau Bach
 thumbs_label=Lluniau Bach
+current_outline_item.title=Canfod yr Eitem Amlinellol Gyfredol
+current_outline_item_label=Yr Eitem Amlinellol Gyfredol
 findbar.title=Canfod yn y Ddogfen
 findbar_label=Canfod
 
+additional_layers=Haenau Ychwanegol
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Tudalen {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/da/viewer.properties 
b/third-party/pdfjs/web/locale/da/viewer.properties
index 38ed99d0b..8a33f3c45 100644
--- a/third-party/pdfjs/web/locale/da/viewer.properties
+++ b/third-party/pdfjs/web/locale/da/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Annuller
 # tooltips)
 toggle_sidebar.title=Slå sidepanel til eller fra
 toggle_sidebar_notification.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede 
filer)
+toggle_sidebar_notification2.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede 
filer/lag)
 toggle_sidebar_label=Slå sidepanel til eller fra
 document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer)
 document_outline_label=Dokument-disposition
 attachments.title=Vis vedhæftede filer
 attachments_label=Vedhæftede filer
+layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstanden)
+layers_label=Lag
 thumbs.title=Vis miniaturer
 thumbs_label=Miniaturer
 findbar.title=Find i dokument
 findbar_label=Find
 
+additional_layers=Yderligere lag
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/de/viewer.properties 
b/third-party/pdfjs/web/locale/de/viewer.properties
index 26b682ebe..ed2431616 100644
--- a/third-party/pdfjs/web/locale/de/viewer.properties
+++ b/third-party/pdfjs/web/locale/de/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Abbrechen
 # tooltips)
 toggle_sidebar.title=Sidebar umschalten
 toggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge)
+toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen)
 toggle_sidebar_label=Sidebar umschalten
 document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen)
 document_outline_label=Dokumentstruktur
 attachments.title=Anhänge anzeigen
 attachments_label=Anhänge
+layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzustand zurückzusetzen)
+layers_label=Ebenen
 thumbs.title=Miniaturansichten anzeigen
 thumbs_label=Miniaturansichten
+current_outline_item.title=Aktuelles Struktur-Element suchen
+current_outline_item_label=Aktuelles Struktur-Element
 findbar.title=Dokument durchsuchen
 findbar_label=Suchen
 
+additional_layers=Zusätzliche Ebenen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Seite {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/dsb/viewer.properties 
b/third-party/pdfjs/web/locale/dsb/viewer.properties
index 468ccd745..4902a97e6 100644
--- a/third-party/pdfjs/web/locale/dsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/dsb/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Pśetergnuś
 # tooltips)
 toggle_sidebar.title=Bócnicu pokazaś/schowaś
 toggle_sidebar_notification.title=Bocnicu pśešaltowaś (dokument wopśimujo pśeglěd/pśipiski)
+toggle_sidebar_notification2.title=Bocnicu pśešaltowaś (dokument rozrědowanje/pśipiski/warstwy wopśimujo)
 toggle_sidebar_label=Bócnicu pokazaś/schowaś
 document_outline.title=Dokumentowe naraźenje pokazaś (dwójne kliknjenje, aby se wšykne zapiski 
pokazali/schowali)
 document_outline_label=Dokumentowa struktura
 attachments.title=Pśidanki pokazaś
 attachments_label=Pśidanki
+layers.title=Warstwy pokazaś (klikniśo dwójcy, aby wšykne warstwy na standardny staw slědk stajił)
+layers_label=Warstwy
 thumbs.title=Miniatury pokazaś
 thumbs_label=Miniatury
+current_outline_item.title=Aktualny rozrědowański zapisk pytaś
+current_outline_item_label=Aktualny rozrědowański zapisk
 findbar.title=W dokumenśe pytaś
 findbar_label=Pytaś
 
+additional_layers=Dalšne warstwy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Bok {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/el/viewer.properties 
b/third-party/pdfjs/web/locale/el/viewer.properties
index 896bbeefc..2de70330e 100644
--- a/third-party/pdfjs/web/locale/el/viewer.properties
+++ b/third-party/pdfjs/web/locale/el/viewer.properties
@@ -105,7 +105,7 @@ document_properties_version=Έκδοση PDF:
 document_properties_page_count=Αριθμός σελίδων:
 document_properties_page_size=Μέγεθος σελίδας:
 document_properties_page_size_unit_inches=ίντσες
-document_properties_page_size_unit_millimeters=χιλιοστά
+document_properties_page_size_unit_millimeters=mm
 document_properties_page_size_orientation_portrait=κατακόρυφα
 document_properties_page_size_orientation_landscape=οριζόντια
 document_properties_page_size_name_a3=A3
@@ -131,23 +131,29 @@ print_progress_message=Προετοιμασία του εγγράφου για 
 # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
 # a numerical per cent value.
 print_progress_percent={{progress}}%
-print_progress_close=Άκυρο
+print_progress_close=Ακύρωση
 
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=(Απ)ενεργοποίηση πλευρικής στήλης
 toggle_sidebar_notification.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει 
περίγραμμα/συνημμένα)
+toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει 
περίγραμμα/συνημμένα/επίπεδα)
 toggle_sidebar_label=(Απ)ενεργοποίηση πλευρικής στήλης
 document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων)
 document_outline_label=Διάρθρωση εγγράφου
 attachments.title=Προβολή συνημμένων
 attachments_label=Συνημμένα
+layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση)
+layers_label=Επίπεδα
 thumbs.title=Προβολή μικρογραφιών
 thumbs_label=Μικρογραφίες
+current_outline_item.title=Εύρεση τρέχοντος στοιχείου διάρθρωσης
+current_outline_item_label=Τρέχον στοιχείο διάρθρωσης
 findbar.title=Εύρεση στο έγγραφο
 findbar_label=Εύρεση
 
+additional_layers=Επιπρόσθετα επίπεδα
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Σελίδα {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -239,7 +245,7 @@ annotation_date_string={{date}}, {{time}}
 text_annotation_type.alt=[{{type}} Σχόλιο]
 password_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου.
 password_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά.
-password_ok=ΟΚ
+password_ok=OK
 password_cancel=Ακύρωση
 
 printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή.
diff --git a/third-party/pdfjs/web/locale/en-CA/viewer.properties 
b/third-party/pdfjs/web/locale/en-CA/viewer.properties
index 554a0e176..3e0906def 100644
--- a/third-party/pdfjs/web/locale/en-CA/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-CA/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Cancel
 # tooltips)
 toggle_sidebar.title=Toggle Sidebar
 toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
+toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers)
 toggle_sidebar_label=Toggle Sidebar
 document_outline.title=Show Document Outline (double-click to expand/collapse all items)
 document_outline_label=Document Outline
 attachments.title=Show Attachments
 attachments_label=Attachments
+layers.title=Show Layers (double-click to reset all layers to the default state)
+layers_label=Layers
 thumbs.title=Show Thumbnails
 thumbs_label=Thumbnails
 findbar.title=Find in Document
 findbar_label=Find
 
+additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/en-GB/viewer.properties 
b/third-party/pdfjs/web/locale/en-GB/viewer.properties
index 554a0e176..7b2c7cd9c 100644
--- a/third-party/pdfjs/web/locale/en-GB/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-GB/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Cancel
 # tooltips)
 toggle_sidebar.title=Toggle Sidebar
 toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
+toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers)
 toggle_sidebar_label=Toggle Sidebar
 document_outline.title=Show Document Outline (double-click to expand/collapse all items)
 document_outline_label=Document Outline
 attachments.title=Show Attachments
 attachments_label=Attachments
+layers.title=Show Layers (double-click to reset all layers to the default state)
+layers_label=Layers
 thumbs.title=Show Thumbnails
 thumbs_label=Thumbnails
+current_outline_item.title=Find Current Outline Item
+current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
+additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/en-US/viewer.properties 
b/third-party/pdfjs/web/locale/en-US/viewer.properties
index d31103c00..5d1429f75 100644
--- a/third-party/pdfjs/web/locale/en-US/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-US/viewer.properties
@@ -147,6 +147,8 @@ layers.title=Show Layers (double-click to reset all layers to the default state)
 layers_label=Layers
 thumbs.title=Show Thumbnails
 thumbs_label=Thumbnails
+current_outline_item.title=Find Current Outline Item
+current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
diff --git a/third-party/pdfjs/web/locale/eo/viewer.properties 
b/third-party/pdfjs/web/locale/eo/viewer.properties
index 804bd9842..6300f0844 100644
--- a/third-party/pdfjs/web/locale/eo/viewer.properties
+++ b/third-party/pdfjs/web/locale/eo/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Nuligi
 # tooltips)
 toggle_sidebar.title=Montri/kaŝi flankan strion
 toggle_sidebar_notification.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/aneksaĵojn)
+toggle_sidebar_notification2.title=Montri/kaŝi flankan strion (la dokumento enhavas 
konturon/kunsendaĵojn/tavolojn)
 toggle_sidebar_label=Montri/kaŝi flankan strion
 document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn)
 document_outline_label=Konturo de dokumento
 attachments.title=Montri kunsendaĵojn
 attachments_label=Kunsendaĵojn
+layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la norman staton)
+layers_label=Tavoloj
 thumbs.title=Montri miniaturojn
 thumbs_label=Miniaturoj
 findbar.title=Serĉi en dokumento
 findbar_label=Serĉi
 
+additional_layers=Aldonaj tavoloj
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Paĝo {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/es-AR/viewer.properties 
b/third-party/pdfjs/web/locale/es-AR/viewer.properties
index ca2c87ba6..14f588367 100644
--- a/third-party/pdfjs/web/locale/es-AR/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-AR/viewer.properties
@@ -138,16 +138,21 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Alternar barra lateral
 toggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos)
+toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas)
 toggle_sidebar_label=Alternar barra lateral
 document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems)
 document_outline_label=Esquema del documento
 attachments.title=Mostrar adjuntos
 attachments_label=Adjuntos
+layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado)
+layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
+current_outline_item.title=Buscar elemento de esquema actual
 findbar.title=Buscar en documento
 findbar_label=Buscar
 
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/es-CL/viewer.properties 
b/third-party/pdfjs/web/locale/es-CL/viewer.properties
index b6ac40939..eaba35e5d 100644
--- a/third-party/pdfjs/web/locale/es-CL/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-CL/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Barra lateral
 toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos)
+toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas)
 toggle_sidebar_label=Mostrar u ocultar la barra lateral
 document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)
 document_outline_label=Esquema del documento
 attachments.title=Mostrar adjuntos
 attachments_label=Adjuntos
+layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado)
+layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/es-ES/viewer.properties 
b/third-party/pdfjs/web/locale/es-ES/viewer.properties
index 75e5f0ad4..806f4f5d5 100644
--- a/third-party/pdfjs/web/locale/es-ES/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-ES/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Cambiar barra lateral
 toggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos)
+toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas)
 toggle_sidebar_label=Cambiar barra lateral
 document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos)
 document_outline_label=Resumen de documento
 attachments.title=Mostrar adjuntos
 attachments_label=Adjuntos
+layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado)
+layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/es-MX/viewer.properties 
b/third-party/pdfjs/web/locale/es-MX/viewer.properties
index 5098ad195..c39823d36 100644
--- a/third-party/pdfjs/web/locale/es-MX/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-MX/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Cambiar barra lateral
 toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos)
+toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas)
 toggle_sidebar_label=Cambiar barra lateral
 document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)
 document_outline_label=Esquema del documento
 attachments.title=Mostrar adjuntos
 attachments_label=Adjuntos
+layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado)
+layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/eu/viewer.properties 
b/third-party/pdfjs/web/locale/eu/viewer.properties
index 5700d6019..40956b54b 100644
--- a/third-party/pdfjs/web/locale/eu/viewer.properties
+++ b/third-party/pdfjs/web/locale/eu/viewer.properties
@@ -143,11 +143,13 @@ document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guz
 document_outline_label=Dokumentuaren eskema
 attachments.title=Erakutsi eranskinak
 attachments_label=Eranskinak
+layers_label=Geruzak
 thumbs.title=Erakutsi koadro txikiak
 thumbs_label=Koadro txikiak
 findbar.title=Bilatu dokumentuan
 findbar_label=Bilatu
 
+additional_layers=Geruza gehigarriak
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}}. orria
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/fi/viewer.properties 
b/third-party/pdfjs/web/locale/fi/viewer.properties
index 38c40a395..f444bc6ee 100644
--- a/third-party/pdfjs/web/locale/fi/viewer.properties
+++ b/third-party/pdfjs/web/locale/fi/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Peruuta
 # tooltips)
 toggle_sidebar.title=Näytä/piilota sivupaneeli
 toggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä)
+toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja)
 toggle_sidebar_label=Näytä/piilota sivupaneeli
 document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla)
 document_outline_label=Dokumentin sisällys
 attachments.title=Näytä liitteet
 attachments_label=Liitteet
+layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletustilaan)
+layers_label=Tasot
 thumbs.title=Näytä pienoiskuvat
 thumbs_label=Pienoiskuvat
 findbar.title=Etsi dokumentista
 findbar_label=Etsi
 
+additional_layers=Lisätasot
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Sivu {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/fr/viewer.properties 
b/third-party/pdfjs/web/locale/fr/viewer.properties
index 589a4185c..af54b0966 100644
--- a/third-party/pdfjs/web/locale/fr/viewer.properties
+++ b/third-party/pdfjs/web/locale/fr/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Annuler
 # tooltips)
 toggle_sidebar.title=Afficher/Masquer le panneau latéral
 toggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des 
signets/pièces jointes)
+toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des 
signets/pièces jointes/calques)
 toggle_sidebar_label=Afficher/Masquer le panneau latéral
 document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les 
éléments)
 document_outline_label=Signets du document
 attachments.title=Afficher les pièces jointes
 attachments_label=Pièces jointes
+layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les calques à l’état par défaut)
+layers_label=Calques
 thumbs.title=Afficher les vignettes
 thumbs_label=Vignettes
 findbar.title=Rechercher dans le document
 findbar_label=Rechercher
 
+additional_layers=Calques additionnels
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/fy-NL/viewer.properties 
b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
index 5a506540b..3d69d0db1 100644
--- a/third-party/pdfjs/web/locale/fy-NL/viewer.properties
+++ b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
@@ -22,7 +22,7 @@ next_label=Folgjende
 page.title=Side
 # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
 # representing the total number of pages in the document.
-of_pages=fa {{pagesCount}}
+of_pages=fan {{pagesCount}}
 # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
 # will be replaced by a number representing the currently visible page,
 # respectively a number representing the total number of pages in the document.
@@ -138,16 +138,20 @@ print_progress_close=Annulearje
 # tooltips)
 toggle_sidebar.title=Sidebalke yn-/útskeakelje
 toggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen)
+toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen)
 toggle_sidebar_label=Sidebalke yn-/útskeakelje
 document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen)
 document_outline_label=Dokumintoersjoch
 attachments.title=Bylagen toane
 attachments_label=Bylagen
+layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te setten)
+layers_label=Lagen
 thumbs.title=Foarbylden toane
 thumbs_label=Foarbylden
 findbar.title=Sykje yn dokumint
 findbar_label=Sykje
 
+additional_layers=Oanfoljende lagen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/gd/viewer.properties 
b/third-party/pdfjs/web/locale/gd/viewer.properties
index af4433e3f..bce4dee36 100644
--- a/third-party/pdfjs/web/locale/gd/viewer.properties
+++ b/third-party/pdfjs/web/locale/gd/viewer.properties
@@ -148,6 +148,7 @@ thumbs_label=Dealbhagan
 findbar.title=Lorg san sgrìobhainn
 findbar_label=Lorg
 
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -226,6 +227,9 @@ invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte.
 missing_file_error=Faidhle PDF a tha a dhìth.
 unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil.
 
+# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
+# replaced by the modification date, and time, of the annotation.
+
 # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
@@ -233,7 +237,7 @@ unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil.
 text_annotation_type.alt=[Nòtachadh {{type}}]
 password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh.
 password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist?
-password_ok=Ceart ma-tha
+password_ok=Ceart ma-thà
 password_cancel=Sguir dheth
 
 printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh.
diff --git a/third-party/pdfjs/web/locale/gl/viewer.properties 
b/third-party/pdfjs/web/locale/gl/viewer.properties
index c3a30fecd..fedfb8e74 100644
--- a/third-party/pdfjs/web/locale/gl/viewer.properties
+++ b/third-party/pdfjs/web/locale/gl/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Amosar/agochar a barra lateral
 toggle_sidebar_notification.title=Amosar/agochar a barra lateral (o documento contén un esquema ou anexos)
+toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas)
 toggle_sidebar_label=Amosar/agochar a barra lateral
 document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os 
elementos)
 document_outline_label=Esquema do documento
 attachments.title=Amosar anexos
 attachments_label=Anexos
+layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado)
+layers_label=Capas
 thumbs.title=Amosar miniaturas
 thumbs_label=Miniaturas
+current_outline_item.title=Atopar o elemento delimitado actualmente
+current_outline_item_label=Elemento delimitado actualmente
 findbar.title=Atopar no documento
 findbar_label=Atopar
 
+additional_layers=Capas adicionais
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Páxina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/gn/viewer.properties 
b/third-party/pdfjs/web/locale/gn/viewer.properties
index 4b893971d..7f79a223c 100644
--- a/third-party/pdfjs/web/locale/gn/viewer.properties
+++ b/third-party/pdfjs/web/locale/gn/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Heja
 # tooltips)
 toggle_sidebar.title=Tenda yke moambue
 toggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirũha)
+toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirũha/ñuãha)
 toggle_sidebar_label=Tenda yke moambue
 document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete 
mba’epuru)
 document_outline_label=Kuatia apopyre
 attachments.title=Moirũha jehechauka
 attachments_label=Moirũha
+layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãha tekoypýpe)
+layers_label=Ñuãha
 thumbs.title=Mba’emirĩ jehechauka
 thumbs_label=Mba’emirĩ
 findbar.title=Kuatiápe jeheka
 findbar_label=Juhu
 
+additional_layers=Ñuãha moirũguáva
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Kuatiarogue {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/he/viewer.properties 
b/third-party/pdfjs/web/locale/he/viewer.properties
index 066478921..02069df09 100644
--- a/third-party/pdfjs/web/locale/he/viewer.properties
+++ b/third-party/pdfjs/web/locale/he/viewer.properties
@@ -137,17 +137,23 @@ print_progress_close=ביטול
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=הצגה/הסתרה של סרגל הצד
-toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל מתאר/צרופות)
+toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים)
+toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים/שכבות)
 toggle_sidebar_label=הצגה/הסתרה של סרגל הצד
-document_outline.title=הצגת מתאר מסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים)
-document_outline_label=מתאר מסמך
+document_outline.title=הצגת תוכן העניינים של המסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים)
+document_outline_label=תוכן העניינים של המסמך
 attachments.title=הצגת צרופות
 attachments_label=צרופות
+layers.title=הצגת שכבות (יש ללחוץ לחיצה כפולה כדי לאפס את כל השכבות למצב ברירת המחדל)
+layers_label=שכבות
 thumbs.title=הצגת תצוגה מקדימה
 thumbs_label=תצוגה מקדימה
+current_outline_item.title=מציאת פריט תוכן העניינים הנוכחי
+current_outline_item_label=פריט תוכן העניינים הנוכחי
 findbar.title=חיפוש במסמך
 findbar_label=חיפוש
 
+additional_layers=שכבות נוספות
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=עמוד {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/hr/viewer.properties 
b/third-party/pdfjs/web/locale/hr/viewer.properties
index bfe10f808..5cbca458b 100644
--- a/third-party/pdfjs/web/locale/hr/viewer.properties
+++ b/third-party/pdfjs/web/locale/hr/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Odustani
 # tooltips)
 toggle_sidebar.title=Prikaži/sakrij bočnu traku
 toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži konturu/privitke)
+toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži 
konturu/privitke/slojeve)
 toggle_sidebar_label=Prikaži/sakrij bočnu traku
 document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki)
 document_outline_label=Struktura dokumenta
 attachments.title=Prikaži privitke
 attachments_label=Privitci
+layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje)
+layers_label=Slojevi
 thumbs.title=Prikaži minijature
 thumbs_label=Minijature
 findbar.title=Traži u dokumentu
 findbar_label=Traži
 
+additional_layers=Dodatni slojevi
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Stranica br. {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/hsb/viewer.properties 
b/third-party/pdfjs/web/locale/hsb/viewer.properties
index 9ba3c15a2..11dea4a90 100644
--- a/third-party/pdfjs/web/locale/hsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/hsb/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Přetorhnyć
 # tooltips)
 toggle_sidebar.title=Bóčnicu pokazać/schować
 toggle_sidebar_notification.title=Bóčnicu přepinać (dokument wobsahuje wobrys/přiwěški)
+toggle_sidebar_notification2.title=Bóčnicu přepinać (dokument rozrjad/přiwěški/woršty wobsahuje)
 toggle_sidebar_label=Bóčnicu pokazać/schować
 document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski 
pokazali/schowali)
 document_outline_label=Dokumentowa struktura
 attachments.title=Přiwěški pokazać
 attachments_label=Přiwěški
+layers.title=Woršty pokazać (klikńće dwójce, zo byšće wšě woršty na standardny staw wróćo stajił)
+layers_label=Woršty
 thumbs.title=Miniatury pokazać
 thumbs_label=Miniatury
+current_outline_item.title=Aktualny rozrjadowy zapisk pytać
+current_outline_item_label=Aktualny rozrjadowy zapisk
 findbar.title=W dokumenće pytać
 findbar_label=Pytać
 
+additional_layers=Dalše woršty
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strona {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/hu/viewer.properties 
b/third-party/pdfjs/web/locale/hu/viewer.properties
index 88c1d0796..e2d4b4955 100644
--- a/third-party/pdfjs/web/locale/hu/viewer.properties
+++ b/third-party/pdfjs/web/locale/hu/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Mégse
 # tooltips)
 toggle_sidebar.title=Oldalsáv be/ki
 toggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz)
+toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz)
 toggle_sidebar_label=Oldalsáv be/ki
 document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem 
kinyitásához/összecsukásához)
 document_outline_label=Dokumentumvázlat
 attachments.title=Mellékletek megjelenítése
 attachments_label=Van melléklet
+layers.title=Rétegek megjelenítése (dupla kattintás az összes réteg alapértelmezett állapotra 
visszaállításához)
+layers_label=Rétegek
 thumbs.title=Bélyegképek megjelenítése
 thumbs_label=Bélyegképek
+current_outline_item.title=Jelenlegi vázlatelem megkeresése
+current_outline_item_label=Jelenlegi vázlatelem
 findbar.title=Keresés a dokumentumban
 findbar_label=Keresés
 
+additional_layers=További rétegek
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}}. oldal
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/hye/viewer.properties 
b/third-party/pdfjs/web/locale/hye/viewer.properties
index 80d43019e..c87dd0767 100644
--- a/third-party/pdfjs/web/locale/hye/viewer.properties
+++ b/third-party/pdfjs/web/locale/hye/viewer.properties
@@ -32,7 +32,7 @@ zoom_out.title=Փոքրացնել
 zoom_out_label=Փոքրացնել
 zoom_in.title=Խոշորացնել
 zoom_in_label=Խոշորացնել
-zoom.title=Խոշորացում
+zoom.title=Չափափոխում
 presentation_mode.title=Անցնել ներկայացման եղանակին
 presentation_mode_label=Ներկայացման եղանակ
 open_file.title=Բացել նիշքը
@@ -77,6 +77,7 @@ spread_none_label=Չկայ կոնտեքստ
 spread_odd.title=Միացէք էջի կոնտեքստին սկսելով՝ կենտ համարակալուած էջերով
 spread_odd_label=Տարաւրինակ կոնտեքստ
 spread_even.title=Միացէք էջի կոնտեքստին սկսելով՝ զոյգ համարակալուած էջերով
+spread_even_label=Հաւասար վերածածկեր
 
 # Document properties dialog box
 document_properties.title=Փաստաթղթի հատկութիւնները…
@@ -137,16 +138,20 @@ print_progress_close=Չեղարկել
 # tooltips)
 toggle_sidebar.title=Փոխարկել կողային վահանակը
 toggle_sidebar_notification.title=Փոխարկել կողային վահանակը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդ)
+toggle_sidebar_notification2.title=Փոխանջատել կողմնասիւնը (փաստաթուղթը պարունակում է 
ուրուագիծ/կցորդներ/շերտեր)
 toggle_sidebar_label=Փոխարկել կողային վահանակը
 document_outline.title=Ցուցադրել փաստաթղթի ուրուագիծը (կրկնակի սեղմէք՝ միաւորները ընդարձակելու/կոծկելու 
համար)
 document_outline_label=Փաստաթղթի ուրուագիծ
 attachments.title=Ցուցադրել կցորդները
 attachments_label=Կցորդներ
+layers.title=Ցուցադրել շերտերը (կրկնահպել վերակայելու բոլոր շերտերը սկզբնադիր վիճակի)
+layers_label=Շերտեր
 thumbs.title=Ցուցադրել մանրապատկերը
 thumbs_label=Մանրապատկեր
 findbar.title=Գտնել փաստաթղթում
 findbar_label=Որոնում
 
+additional_layers=Լրացուցիչ շերտեր
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Էջ {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -212,9 +217,9 @@ error_line=Տողը. {{line}}
 rendering_error=Սխալ է տեղի ունեցել էջի մեկնաբանման ժամանակ
 
 # Predefined zoom values
-page_scale_width=Էջի լայնքը
+page_scale_width=Էջի լայնութիւն
 page_scale_fit=Հարմարեցնել էջը
-page_scale_auto=Ինքնաշխատ խոշորացում
+page_scale_auto=Ինքնաշխատ չափափոխում
 page_scale_actual=Իրական չափը
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
diff --git a/third-party/pdfjs/web/locale/ia/viewer.properties 
b/third-party/pdfjs/web/locale/ia/viewer.properties
index 167547adc..a1d7f4281 100644
--- a/third-party/pdfjs/web/locale/ia/viewer.properties
+++ b/third-party/pdfjs/web/locale/ia/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Cancellar
 # tooltips)
 toggle_sidebar.title=Monstrar/celar le barra lateral
 toggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine 
structura/attachamentos)
+toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine 
structura/attachamentos/stratos)
 toggle_sidebar_label=Monstrar/celar le barra lateral
 document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos)
 document_outline_label=Schema del documento
 attachments.title=Monstrar le annexos
 attachments_label=Annexos
+layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stato predefinite)
+layers_label=Stratos
 thumbs.title=Monstrar le vignettes
 thumbs_label=Vignettes
 findbar.title=Cercar in le documento
 findbar_label=Cercar
 
+additional_layers=Altere stratos
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -213,7 +217,7 @@ error_line=Linea: {{line}}
 rendering_error=Un error occurreva durante que on processava le pagina.
 
 # Predefined zoom values
-page_scale_width=Largessa pagina plen
+page_scale_width=Plen largor del pagina
 page_scale_fit=Pagina integre
 page_scale_auto=Zoom automatic
 page_scale_actual=Dimension actual
diff --git a/third-party/pdfjs/web/locale/id/viewer.properties 
b/third-party/pdfjs/web/locale/id/viewer.properties
index b9b9a730b..3583317f6 100644
--- a/third-party/pdfjs/web/locale/id/viewer.properties
+++ b/third-party/pdfjs/web/locale/id/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Batalkan
 # tooltips)
 toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping
 toggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran)
+toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan)
 toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping
 document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item)
 document_outline_label=Kerangka Dokumen
 attachments.title=Tampilkan Lampiran
 attachments_label=Lampiran
+layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke keadaan baku)
+layers_label=Lapisan
 thumbs.title=Tampilkan Miniatur
 thumbs_label=Miniatur
 findbar.title=Temukan di Dokumen
 findbar_label=Temukan
 
+additional_layers=Lapisan Tambahan
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Laman {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/it/viewer.properties 
b/third-party/pdfjs/web/locale/it/viewer.properties
index 87c4050d8..95c40036a 100644
--- a/third-party/pdfjs/web/locale/it/viewer.properties
+++ b/third-party/pdfjs/web/locale/it/viewer.properties
@@ -114,16 +114,22 @@ print_progress_close = Annulla
 
 toggle_sidebar.title = Attiva/disattiva barra laterale
 toggle_sidebar_notification.title = Attiva/disattiva barra laterale (il documento contiene 
struttura/allegati)
+toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene 
struttura/allegati/livelli)
 toggle_sidebar_label = Attiva/disattiva barra laterale
 document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere 
tutti gli elementi)
 document_outline_label = Struttura documento
 attachments.title = Visualizza allegati
 attachments_label = Allegati
+layers.title = Visualizza livelli (doppio clic per ripristinare tutti i livelli allo stato predefinito)
+layers_label = Livelli
 thumbs.title = Mostra le miniature
 thumbs_label = Miniature
+current_outline_item.title = Trova elemento struttura corrente
+current_outline_item_label = Elemento struttura corrente
 findbar.title = Trova nel documento
 findbar_label = Trova
 
+additional_layers = Livelli aggiuntivi
 page_canvas = Pagina {{page}}
 thumb_page_title = Pagina {{page}}
 thumb_page_canvas = Miniatura della pagina {{page}}
diff --git a/third-party/pdfjs/web/locale/ja/viewer.properties 
b/third-party/pdfjs/web/locale/ja/viewer.properties
index 95732a07f..0ea2acda6 100644
--- a/third-party/pdfjs/web/locale/ja/viewer.properties
+++ b/third-party/pdfjs/web/locale/ja/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=キャンセル
 # tooltips)
 toggle_sidebar.title=サイドバー表示を切り替えます
 toggle_sidebar_notification.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付)
+toggle_sidebar_notification2.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付 / レイヤー)
 toggle_sidebar_label=サイドバーの切り替え
 document_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します)
 document_outline_label=文書の目次
 attachments.title=添付ファイルを表示します
 attachments_label=添付ファイル
+layers.title=レイヤーを表示します (ダブルクリックですべてのレイヤーが初期状態に戻ります)
+layers_label=レイヤー
 thumbs.title=縮小版を表示します
 thumbs_label=縮小版
 findbar.title=文書内を検索します
 findbar_label=検索
 
+additional_layers=追加レイヤー
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}} ページ
 # Thumbnails panel item (tooltip and alt text for images)
@@ -245,4 +249,3 @@ password_cancel=キャンセル
 printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。
 printing_not_ready=警告: PDF を印刷するための読み込みが終了していません。
 web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。
-document_colors_not_allowed=PDF 文書は、ウェブページが指定した配色を使用することができません: 'ウェブページが指定した配色' はブラウザーで無効になっています。
diff --git a/third-party/pdfjs/web/locale/ka/viewer.properties 
b/third-party/pdfjs/web/locale/ka/viewer.properties
index 86e91bbd1..0e9e592ad 100644
--- a/third-party/pdfjs/web/locale/ka/viewer.properties
+++ b/third-party/pdfjs/web/locale/ka/viewer.properties
@@ -91,18 +91,18 @@ document_properties_kb={{size_kb}} კბ ({{size_b}} ბაიტი)
 # will be replaced by the PDF file size in megabytes, respectively in bytes.
 document_properties_mb={{size_mb}} მბ ({{size_b}} ბაიტი)
 document_properties_title=სათაური:
-document_properties_author=შემდგენი:
+document_properties_author=შემქმნელი:
 document_properties_subject=თემა:
 document_properties_keywords=საკვანძო სიტყვები:
-document_properties_creation_date=შექმნის თარიღი:
-document_properties_modification_date=ჩასწორების თარიღი:
+document_properties_creation_date=შექმნის დრო:
+document_properties_modification_date=ჩასწორების დრო:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
 # will be replaced by the creation/modification date, and time, of the PDF file.
 document_properties_date_string={{date}}, {{time}}
-document_properties_creator=შემქმნელი:
-document_properties_producer=PDF-შემქმნელი:
+document_properties_creator=გამომშვები:
+document_properties_producer=PDF-გამომშვები:
 document_properties_version=PDF-ვერსია:
-document_properties_page_count=გვერდების რაოდენობა:
+document_properties_page_count=გვერდები:
 document_properties_page_size=გვერდის ზომა:
 document_properties_page_size_unit_inches=დუიმი
 document_properties_page_size_unit_millimeters=მმ
@@ -138,16 +138,20 @@ print_progress_close=გაუქმება
 # tooltips)
 toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა
 toggle_sidebar_notification.title=გვერდითა ზოლის ჩართვა/გამორთვა (დოკუმენტი შეიცავს სარჩევს/დანართს)
+toggle_sidebar_notification2.title=გვერდითი ზოლის გადართვა (ახლავს მოხაზულობა/დანართი/ფენები)
 toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა
-document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორჯერ დაწკაპებით ყველა ელემენტის ჩამოშლა/აკეცვა)
+document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა)
 document_outline_label=დოკუმენტის სარჩევი
 attachments.title=დანართების ჩვენება
 attachments_label=დანართები
+layers.title=ფენების გამოჩენა (ორმაგი წკაპით ყველა ფენის ნაგულისხმევზე დაბრუნება)
+layers_label=ფენები
 thumbs.title=შეთვალიერება
 thumbs_label=ესკიზები
 findbar.title=პოვნა დოკუმენტში
 findbar_label=ძიება
 
+additional_layers=დამატებითი ფენები
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=გვერდი {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/kab/viewer.properties 
b/third-party/pdfjs/web/locale/kab/viewer.properties
index a6f07f169..f397bc9f4 100644
--- a/third-party/pdfjs/web/locale/kab/viewer.properties
+++ b/third-party/pdfjs/web/locale/kab/viewer.properties
@@ -39,7 +39,7 @@ open_file.title=Ldi Afaylu
 open_file_label=Ldi
 print.title=Siggez
 print_label=Siggez
-download.title=Sider
+download.title=Sader
 download_label=Azdam
 bookmark.title=Timeẓri tamirant (nɣel neɣ ldi ɣef usfaylu amaynut)
 bookmark_label=Askan amiran
@@ -102,7 +102,7 @@ document_properties_date_string={{date}}, {{time}}
 document_properties_creator=Yerna-t:
 document_properties_producer=Afecku n uselket PDF:
 document_properties_version=Lqem PDF:
-document_properties_page_count=Amḍan n isebtar:
+document_properties_page_count=Amḍan n yisebtar:
 document_properties_page_size=Tuγzi n usebter:
 document_properties_page_size_unit_inches=deg
 document_properties_page_size_unit_millimeters=mm
@@ -138,16 +138,20 @@ print_progress_close=Sefsex
 # tooltips)
 toggle_sidebar.title=Sken/Fer agalis adisan
 toggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aɣawas/imeddayen)
+toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aɣawas/ticeqqufin yeddan/tissiwin)
 toggle_sidebar_label=Sken/Fer agalis adisan
 document_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa)
 document_outline_label=Isɣalen n isebtar
 attachments.title=Sken ticeqqufin yeddan
 attachments_label=Ticeqqufin yeddan
+layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin ɣer waddad amezwer)
+layers_label=Tissiwin
 thumbs.title=Sken tanfult.
 thumbs_label=Tinfulin
 findbar.title=Nadi deg isemli
 findbar_label=Nadi
 
+additional_layers=Tissiwin-nniḍen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Asebter {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/kk/viewer.properties 
b/third-party/pdfjs/web/locale/kk/viewer.properties
index afd679ac7..a2db99f5f 100644
--- a/third-party/pdfjs/web/locale/kk/viewer.properties
+++ b/third-party/pdfjs/web/locale/kk/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Бас тарту
 # tooltips)
 toggle_sidebar.title=Бүйір панелін көрсету/жасыру
 toggle_sidebar_notification.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар бар)
+toggle_sidebar_notification2.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар/қабаттар бар)
 toggle_sidebar_label=Бүйір панелін көрсету/жасыру
 document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек)
 document_outline_label=Құжат құрамасы
 attachments.title=Салынымдарды көрсету
 attachments_label=Салынымдар
+layers.title=Қабаттарды көрсету (барлық қабаттарды бастапқы күйге келтіру үшін екі рет шертіңіз)
+layers_label=Қабаттар
 thumbs.title=Кіші көріністерді көрсету
 thumbs_label=Кіші көріністер
 findbar.title=Құжаттан табу
 findbar_label=Табу
 
+additional_layers=Қосымша қабаттар
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Бет {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/km/viewer.properties 
b/third-party/pdfjs/web/locale/km/viewer.properties
index 8615e8389..109de4b16 100644
--- a/third-party/pdfjs/web/locale/km/viewer.properties
+++ b/third-party/pdfjs/web/locale/km/viewer.properties
@@ -65,6 +65,8 @@ cursor_text_select_tool_label=ឧបករណ៍​ជ្រើស​អត្
 cursor_hand_tool.title=បើក​ឧបករណ៍​ដៃ
 cursor_hand_tool_label=ឧបករណ៍​ដៃ
 
+
+
 # Document properties dialog box
 document_properties.title=លក្ខណ​សម្បត្តិ​ឯកសារ…
 document_properties_label=លក្ខណ​សម្បត្តិ​ឯកសារ…
@@ -89,6 +91,25 @@ document_properties_creator=អ្នក​បង្កើត៖
 document_properties_producer=កម្មវិធី​បង្កើត PDF ៖
 document_properties_version=កំណែ PDF ៖
 document_properties_page_count=ចំនួន​ទំព័រ៖
+document_properties_page_size_unit_inches=អ៊ីញ
+document_properties_page_size_unit_millimeters=មម
+document_properties_page_size_orientation_portrait=បញ្ឈរ
+document_properties_page_size_orientation_landscape=ផ្តេក
+document_properties_page_size_name_a3=A3
+document_properties_page_size_name_a4=A4
+document_properties_page_size_name_letter=សំបុត្រ
+# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
+# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
+# the size, respectively their unit of measurement and orientation, of the (current) page.
+document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})
+# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
+# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
+# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
+document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, 
{{orientation}})
+# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
+# the document; usually called "Fast Web View" in English locales of Adobe software.
+document_properties_linearized_yes=បាទ/ចាស
+document_properties_linearized_no=ទេ
 document_properties_close=បិទ
 
 print_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព…
@@ -112,6 +133,7 @@ thumbs_label=រួបភាព​តូចៗ
 findbar.title=រក​នៅ​ក្នុង​ឯកសារ
 findbar_label=រក
 
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -131,6 +153,14 @@ find_highlight=បន្លិច​ទាំងអស់
 find_match_case_label=ករណី​ដំណូច
 find_reached_top=បាន​បន្ត​ពី​ខាង​ក្រោម ទៅ​ដល់​ខាង​​លើ​នៃ​ឯកសារ
 find_reached_bottom=បាន​បន្ត​ពី​ខាងលើ ទៅដល់​ចុង​​នៃ​ឯកសារ
+# LOCALIZATION NOTE (find_match_count): The supported plural forms are
+# [one|two|few|many|other], with [other] as the default value.
+# "{{current}}" and "{{total}}" will be replaced by a number representing the
+# index of the currently active find result, respectively a number representing
+# the total number of matches in the document.
+# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
+# [zero|one|two|few|many|other], with [other] as the default value.
+# "{{limit}}" will be replaced by a numerical value.
 find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា
 
 # Error panel labels
@@ -168,6 +198,9 @@ invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹ
 missing_file_error=បាត់​ឯកសារ PDF
 unexpected_response_error=ការ​ឆ្លើយ​តម​ម៉ាស៊ីន​មេ​ដែល​មិន​បាន​រំពឹង។
 
+# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
+# replaced by the modification date, and time, of the annotation.
+
 # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
diff --git a/third-party/pdfjs/web/locale/ko/viewer.properties 
b/third-party/pdfjs/web/locale/ko/viewer.properties
index 727f8d5c9..c578f9109 100644
--- a/third-party/pdfjs/web/locale/ko/viewer.properties
+++ b/third-party/pdfjs/web/locale/ko/viewer.properties
@@ -69,14 +69,14 @@ scroll_vertical.title=세로 스크롤 사용
 scroll_vertical_label=세로 스크롤
 scroll_horizontal.title=가로 스크롤 사용
 scroll_horizontal_label=가로 스크롤
-scroll_wrapped.title=감싼 스크롤 사용
-scroll_wrapped_label=감싼 스크롤
+scroll_wrapped.title=래핑(자동 줄 바꿈) 스크롤 사용
+scroll_wrapped_label=래핑 스크롤
 
-spread_none.title=펼쳐진 페이지를 합치지 않음
+spread_none.title=한 페이지 보기
 spread_none_label=펼쳐짐 없음
-spread_odd.title=홀수 페이지로 시작하게 펼쳐진 페이지 합침
+spread_odd.title=홀수 페이지로 시작하는 두 페이지 보기
 spread_odd_label=홀수 펼쳐짐
-spread_even.title=짝수 페이지로 시작하게 펼쳐진 페이지 합침
+spread_even.title=짝수 페이지로 시작하는 두 페이지 보기
 spread_even_label=짝수 펼쳐짐
 
 # Document properties dialog box
@@ -138,16 +138,22 @@ print_progress_close=취소
 # tooltips)
 toggle_sidebar.title=탐색창 표시/숨기기
 toggle_sidebar_notification.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일 포함됨)
+toggle_sidebar_notification2.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨)
 toggle_sidebar_label=탐색창 표시/숨기기
-document_outline.title=문서 아웃라인 보기(더블 클릭해서 모든 항목 펼치기/접기)
+document_outline.title=문서 아웃라인 보기 (더블 클릭해서 모든 항목 펼치기/접기)
 document_outline_label=문서 아웃라인
 attachments.title=첨부파일 보기
 attachments_label=첨부파일
+layers.title=레이어 보기 (더블 클릭해서 모든 레이어를 기본 상태로 재설정)
+layers_label=레이어
 thumbs.title=미리보기
 thumbs_label=미리보기
+current_outline_item.title=현재 아웃라인 항목 찾기
+current_outline_item_label=현재 아웃라인 항목
 findbar.title=검색
 findbar_label=검색
 
+additional_layers=추가 레이어
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}} 페이지
 # Thumbnails panel item (tooltip and alt text for images)
@@ -213,10 +219,10 @@ error_line=줄 번호: {{line}}
 rendering_error=페이지를 렌더링하는 동안 오류가 발생했습니다.
 
 # Predefined zoom values
-page_scale_width=페이지 너비에 맞춤
-page_scale_fit=페이지에 맞춤
-page_scale_auto=자동 맞춤
-page_scale_actual=실제 크기에 맞춤
+page_scale_width=페이지 너비에 맞추기
+page_scale_fit=페이지에 맞추기
+page_scale_auto=자동
+page_scale_actual=실제 크기
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
 page_scale_percent={{scale}}%
diff --git a/third-party/pdfjs/web/locale/lt/viewer.properties 
b/third-party/pdfjs/web/locale/lt/viewer.properties
index daa76787c..017a36ba2 100644
--- a/third-party/pdfjs/web/locale/lt/viewer.properties
+++ b/third-party/pdfjs/web/locale/lt/viewer.properties
@@ -72,12 +72,12 @@ scroll_horizontal_label=Horizontalus slinkimas
 scroll_wrapped.title=Naudoti išklotą slinkimą
 scroll_wrapped_label=Išklotas slinkimas
 
-spread_none.title=Nesujungti puslapių sklaidų
-spread_none_label=Be sklaidų
-spread_odd.title=Sujungti puslapių sklaidas pradedant nelyginiais puslapiais
-spread_odd_label=Nelyginės sklaidos
-spread_even.title=Sujungti puslapių sklaidas pradedant lyginiais puslapiais
-spread_even_label=Lyginės sklaidos
+spread_none.title=Nejungti puslapių į dvilapius
+spread_none_label=Be dvilapių
+spread_odd.title=Sujungti į dvilapius pradedant nelyginiais puslapiais
+spread_odd_label=Nelyginiai dvilapiai
+spread_even.title=Sujungti į dvilapius pradedant lyginiais puslapiais
+spread_even_label=Lyginiai dvilapiai
 
 # Document properties dialog box
 document_properties.title=Dokumento savybės…
@@ -138,16 +138,20 @@ print_progress_close=Atsisakyti
 # tooltips)
 toggle_sidebar.title=Rodyti / slėpti šoninį polangį
 toggle_sidebar_notification.title=Parankinė (dokumentas turi struktūrą / priedų)
+toggle_sidebar_notification2.title=Parankinė (dokumentas turi struktūrą / priedų / sluoksnių)
 toggle_sidebar_label=Šoninis polangis
 document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus 
elementus)
 document_outline_label=Dokumento struktūra
 attachments.title=Rodyti priedus
 attachments_label=Priedai
+layers.title=Rodyti sluoksnius (spustelėkite dukart, norėdami atstatyti visus sluoksnius į numatytąją būseną)
+layers_label=Sluoksniai
 thumbs.title=Rodyti puslapių miniatiūras
 thumbs_label=Miniatiūros
 findbar.title=Ieškoti dokumente
 findbar_label=Rasti
 
+additional_layers=Papildomi sluoksniai
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}} puslapis
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/nb-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
index 47b209048..1d39aaa86 100644
--- a/third-party/pdfjs/web/locale/nb-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Avbryt
 # tooltips)
 toggle_sidebar.title=Slå av/på sidestolpe
 toggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg)
+toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag)
 toggle_sidebar_label=Slå av/på sidestolpe
 document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer)
 document_outline_label=Dokumentdisposisjon
 attachments.title=Vis vedlegg
 attachments_label=Vedlegg
+layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand)
+layers_label=Lag
 thumbs.title=Vis miniatyrbilde
 thumbs_label=Miniatyrbilde
+current_outline_item.title=Finn gjeldende disposisjonselement
+current_outline_item_label=Gjeldende disposisjonselement
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
+additional_layers=Ytterligere lag
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/nl/viewer.properties 
b/third-party/pdfjs/web/locale/nl/viewer.properties
index b37f1abf5..0491255d8 100644
--- a/third-party/pdfjs/web/locale/nl/viewer.properties
+++ b/third-party/pdfjs/web/locale/nl/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Annuleren
 # tooltips)
 toggle_sidebar.title=Zijbalk in-/uitschakelen
 toggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen)
+toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen)
 toggle_sidebar_label=Zijbalk in-/uitschakelen
 document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen)
 document_outline_label=Documentoverzicht
 attachments.title=Bijlagen tonen
 attachments_label=Bijlagen
+layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug te zetten)
+layers_label=Lagen
 thumbs.title=Miniaturen tonen
 thumbs_label=Miniaturen
+current_outline_item.title=Huidige positie in documentoverzicht selecteren
+current_outline_item_label=Huidige positie in documentoverzicht
 findbar.title=Zoeken in document
 findbar_label=Zoeken
 
+additional_layers=Aanvullende lagen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/nn-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
index c9bac1010..43dff5a31 100644
--- a/third-party/pdfjs/web/locale/nn-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Avbryt
 # tooltips)
 toggle_sidebar.title=Slå av/på sidestolpe
 toggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg)
+toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag)
 toggle_sidebar_label=Slå av/på sidestolpe
 document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa)
 document_outline_label=Dokumentdisposisjon
 attachments.title=Vis vedlegg
 attachments_label=Vedlegg
+layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand)
+layers_label=Lag
 thumbs.title=Vis miniatyrbilde
 thumbs_label=Miniatyrbilde
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
+additional_layers=Ytterlegare lag
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/oc/viewer.properties 
b/third-party/pdfjs/web/locale/oc/viewer.properties
index b1c6a3a0c..c7d4884be 100644
--- a/third-party/pdfjs/web/locale/oc/viewer.properties
+++ b/third-party/pdfjs/web/locale/oc/viewer.properties
@@ -106,7 +106,7 @@ document_properties_page_count=Nombre de paginas :
 document_properties_page_size=Talha de la pagina :
 document_properties_page_size_unit_inches=in
 document_properties_page_size_unit_millimeters=mm
-document_properties_page_size_orientation_portrait=retrait
+document_properties_page_size_orientation_portrait=retrach
 document_properties_page_size_orientation_landscape=païsatge
 document_properties_page_size_name_a3=A3
 document_properties_page_size_name_a4=A4
@@ -138,16 +138,20 @@ print_progress_close=Anullar
 # tooltips)
 toggle_sidebar.title=Afichar/amagar lo panèl lateral
 toggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas)
+toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças 
juntas/calques)
 toggle_sidebar_label=Afichar/amagar lo panèl lateral
 document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los 
elements)
 document_outline_label=Marcapaginas del document
 attachments.title=Visualizar las pèças juntas
 attachments_label=Pèças juntas
+layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calques a l’estat per defaut)
+layers_label=Calques
 thumbs.title=Afichar las vinhetas
 thumbs_label=Vinhetas
 findbar.title=Cercar dins lo document
 findbar_label=Recercar
 
+additional_layers=Calques suplementaris
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -210,7 +214,7 @@ error_stack=Pila : {{stack}}
 error_file=Fichièr : {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
 error_line=Linha : {{line}}
-rendering_error=Una error s'es produita pendent l'afichatge de la pagina.
+rendering_error=Una error s'es producha pendent l'afichatge de la pagina.
 
 # Predefined zoom values
 page_scale_width=Largor plena
@@ -223,7 +227,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
-loading_error=Una error s'es produita pendent lo cargament del fichièr PDF.
+loading_error=Una error s'es producha pendent lo cargament del fichièr PDF.
 invalid_file_error=Fichièr PDF invalid o corromput.
 missing_file_error=Fichièr PDF mancant.
 unexpected_response_error=Responsa de servidor imprevista.
diff --git a/third-party/pdfjs/web/locale/pa-IN/viewer.properties 
b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
index 0ab56319e..0bfd2a778 100644
--- a/third-party/pdfjs/web/locale/pa-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
@@ -74,8 +74,8 @@ scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ
 
 spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ
 spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ
-spread_odd.title=ਅਜੀਬ-ਨੰਬਰ ਵਾਲੇ ਪੰਨਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਪੰਨੇ ਸਪਰਸ਼ਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ
-spread_even.title=ਜਿਸਤ ਨੰਬਰ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ
+spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ
+spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ
 
 # Document properties dialog box
 document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ
@@ -136,16 +136,20 @@ print_progress_close=ਰੱਦ ਕਰੋ
 # tooltips)
 toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ
 toggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ)
+toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ)
 toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ
 document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ)
 document_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ
 attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ
 attachments_label=ਅਟੈਚਮੈਂਟਾਂ
+layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ ਨੂੰ ਮੂਲ ਹਾਲਤ ਉੱਤੇ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ)
+layers_label=ਪਰਤਾਂ
 thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ
 thumbs_label=ਥੰਮਨੇਲ
 findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ
 findbar_label=ਲੱਭੋ
 
+additional_layers=ਵਾਧੂ ਪਰਤਾਂ
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=ਸਫ਼ਾ {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/pl/viewer.properties 
b/third-party/pdfjs/web/locale/pl/viewer.properties
index cf170c8d2..e436f1f3f 100644
--- a/third-party/pdfjs/web/locale/pl/viewer.properties
+++ b/third-party/pdfjs/web/locale/pl/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Anuluj
 # tooltips)
 toggle_sidebar.title=Przełącz panel boczny
 toggle_sidebar_notification.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki)
+toggle_sidebar_notification2.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki/warstwy)
 toggle_sidebar_label=Przełącz panel boczny
 document_outline.title=Konspekt dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje)
 document_outline_label=Konspekt dokumentu
 attachments.title=Załączniki
 attachments_label=Załączniki
+layers.title=Warstwy (podwójne kliknięcie przywraca wszystkie warstwy do stanu domyślnego)
+layers_label=Warstwy
 thumbs.title=Miniatury
 thumbs_label=Miniatury
 findbar.title=Znajdź w dokumencie
 findbar_label=Znajdź
 
+additional_layers=Dodatkowe warstwy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}}. strona
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/pt-BR/viewer.properties 
b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
index ca592b8f1..a1a5e357b 100644
--- a/third-party/pdfjs/web/locale/pt-BR/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
@@ -39,8 +39,8 @@ open_file.title=Abrir arquivo
 open_file_label=Abrir
 print.title=Imprimir
 print_label=Imprimir
-download.title=Download
-download_label=Download
+download.title=Baixar
+download_label=Baixar
 bookmark.title=Visão atual (copiar ou abrir em nova janela)
 bookmark_label=Visualização atual
 
@@ -122,7 +122,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
 document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, 
{{orientation}})
 # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
 # the document; usually called "Fast Web View" in English locales of Adobe software.
-document_properties_linearized=Visualização rápida da Web:
+document_properties_linearized=Exibição rápida da web:
 document_properties_linearized_yes=Sim
 document_properties_linearized_no=Não
 document_properties_close=Fechar
@@ -136,18 +136,24 @@ print_progress_close=Cancelar
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
-toggle_sidebar.title=Alternar painel
-toggle_sidebar_notification.title=Alternar o painel (documento contém marcadores e anexos)
-toggle_sidebar_label=Alternar painel
-document_outline.title=Mostrar a estrutura do documento (duplo-clique para expandir/recolher todos os ítens)
+toggle_sidebar.title=Exibir/ocultar painel
+toggle_sidebar_notification.title=Exibir/ocultar o painel (documento contém estrutura/anexos)
+toggle_sidebar_notification2.title=Exibir/ocultar o painel (documento contém estrutura/anexos/camadas)
+toggle_sidebar_label=Exibir/ocultar painel
+document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os 
itens)
 document_outline_label=Estrutura do documento
 attachments.title=Mostrar anexos
 attachments_label=Anexos
+layers.title=Exibir camadas (duplo-clique para redefinir todas as camadas ao estado predefinido)
+layers_label=Camadas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
+current_outline_item.title=Encontrar item atual da estrutura
+current_outline_item_label=Item atual da estrutura
 findbar.title=Procurar no documento
 findbar_label=Procurar
 
+additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/pt-PT/viewer.properties 
b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
index 57f481416..de11bb5a2 100644
--- a/third-party/pdfjs/web/locale/pt-PT/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Cancelar
 # tooltips)
 toggle_sidebar.title=Alternar barra lateral
 toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos)
+toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas)
 toggle_sidebar_label=Alternar barra lateral
 document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens)
 document_outline_label=Esquema do documento
 attachments.title=Mostrar anexos
 attachments_label=Anexos
+layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para o estado predefinido)
+layers_label=Camadas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
 findbar.title=Localizar em documento
 findbar_label=Localizar
 
+additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/rm/viewer.properties 
b/third-party/pdfjs/web/locale/rm/viewer.properties
index 8c8cab892..f63af0f07 100644
--- a/third-party/pdfjs/web/locale/rm/viewer.properties
+++ b/third-party/pdfjs/web/locale/rm/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Interrumper
 # tooltips)
 toggle_sidebar.title=Activar/deactivar la trav laterala
 toggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas)
+toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal 
document/agiuntas/nivels)
 toggle_sidebar_label=Activar/deactivar la trav laterala
 document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils 
elements)
 document_outline_label=Structura dal document
 attachments.title=Mussar agiuntas
 attachments_label=Agiuntas
+layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard da tut ils nivels)
+layers_label=Nivels
 thumbs.title=Mussar las miniaturas
 thumbs_label=Miniaturas
 findbar.title=Tschertgar en il document
 findbar_label=Tschertgar
 
+additional_layers=Nivels supplementars
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/ru/viewer.properties 
b/third-party/pdfjs/web/locale/ru/viewer.properties
index dd4ee4810..25e439013 100644
--- a/third-party/pdfjs/web/locale/ru/viewer.properties
+++ b/third-party/pdfjs/web/locale/ru/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Отмена
 # tooltips)
 toggle_sidebar.title=Показать/скрыть боковую панель
 toggle_sidebar_notification.title=Показать/скрыть боковую панель (документ имеет содержание/вложения)
+toggle_sidebar_notification2.title=Показать/скрыть боковую панель (документ имеет содержание/вложения/слои)
 toggle_sidebar_label=Показать/скрыть боковую панель
 document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы)
 document_outline_label=Содержание документа
 attachments.title=Показать вложения
 attachments_label=Вложения
+layers.title=Показать слои (дважды щёлкните, чтобы сбросить все слои к состоянию по умолчанию)
+layers_label=Слои
 thumbs.title=Показать миниатюры
 thumbs_label=Миниатюры
 findbar.title=Найти в документе
 findbar_label=Найти
 
+additional_layers=Дополнительные слои
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Страница {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -244,4 +248,4 @@ password_cancel=Отмена
 
 printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать.
 printing_not_ready=Предупреждение: PDF не полностью загружен для печати.
-web_fonts_disabled=Веб-шрифты отключены: невозможно использовать встроенные PDF-шрифты.
+web_fonts_disabled=Веб-шрифты отключены: не удалось задействовать встроенные PDF-шрифты.
diff --git a/third-party/pdfjs/web/locale/sk/viewer.properties 
b/third-party/pdfjs/web/locale/sk/viewer.properties
index d86d77cfa..888303ec4 100644
--- a/third-party/pdfjs/web/locale/sk/viewer.properties
+++ b/third-party/pdfjs/web/locale/sk/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Zrušiť
 # tooltips)
 toggle_sidebar.title=Prepnúť bočný panel
 toggle_sidebar_notification.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy)
+toggle_sidebar_notification2.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy/vrstvy)
 toggle_sidebar_label=Prepnúť bočný panel
 document_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky)
 document_outline_label=Osnova dokumentu
 attachments.title=Zobraziť prílohy
 attachments_label=Prílohy
+layers.title=Zobraziť vrstvy (dvojitým kliknutím uvediete všetky vrstvy do pôvodného stavu)
+layers_label=Vrstvy
 thumbs.title=Zobraziť miniatúry
 thumbs_label=Miniatúry
 findbar.title=Hľadať v dokumente
 findbar_label=Hľadať
 
+additional_layers=Ďalšie vrstvy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strana {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/sl/viewer.properties 
b/third-party/pdfjs/web/locale/sl/viewer.properties
index 25a5e9c50..274d96235 100644
--- a/third-party/pdfjs/web/locale/sl/viewer.properties
+++ b/third-party/pdfjs/web/locale/sl/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Prekliči
 # tooltips)
 toggle_sidebar.title=Preklopi stransko vrstico
 toggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke)
+toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti)
 toggle_sidebar_label=Preklopi stransko vrstico
 document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov)
 document_outline_label=Oris dokumenta
 attachments.title=Prikaži priponke
 attachments_label=Priponke
+layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje)
+layers_label=Plasti
 thumbs.title=Prikaži sličice
 thumbs_label=Sličice
 findbar.title=Iskanje po dokumentu
 findbar_label=Najdi
 
+additional_layers=Dodatne plasti
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Stran {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/sq/viewer.properties 
b/third-party/pdfjs/web/locale/sq/viewer.properties
index f0710af5f..516cb96c5 100644
--- a/third-party/pdfjs/web/locale/sq/viewer.properties
+++ b/third-party/pdfjs/web/locale/sq/viewer.properties
@@ -131,16 +131,20 @@ print_progress_close=Anuloje
 # tooltips)
 toggle_sidebar.title=Shfaqni/Fshihni Anështyllën
 toggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje)
+toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa)
 toggle_sidebar_label=Shfaq/Fshih Anështyllën
 document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët)
 document_outline_label=Përvijim Dokumenti
 attachments.title=Shfaqni Bashkëngjitje
 attachments_label=Bashkëngjitje
+layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjendjen e tyre parazgjedhje)
+layers_label=Shtresa
 thumbs.title=Shfaqni Miniatura
 thumbs_label=Miniatura
 findbar.title=Gjeni në Dokument
 findbar_label=Gjej
 
+additional_layers=Shtresa Shtesë
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Faqja {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/sr/viewer.properties 
b/third-party/pdfjs/web/locale/sr/viewer.properties
index 8c4e92411..edcf7ba15 100644
--- a/third-party/pdfjs/web/locale/sr/viewer.properties
+++ b/third-party/pdfjs/web/locale/sr/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Откажи
 # tooltips)
 toggle_sidebar.title=Прикажи додатну палету
 toggle_sidebar_notification.title=Прикажи додатну траку (докуменат садржи оквире/прилоге)
+toggle_sidebar_notification2.title=Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве)
 toggle_sidebar_label=Прикажи додатну палету
 document_outline.title=Прикажи контуру документа (дупли клик за проширење/скупљање елемената)
 document_outline_label=Контура документа
 attachments.title=Прикажи прилоге
 attachments_label=Прилози
+layers.title=Прикажи слојеве (дупли клик за враћање свих слојева у подразумевано стање)
+layers_label=Слојеви
 thumbs.title=Прикажи сличице
 thumbs_label=Сличице
 findbar.title=Пронађи у документу
 findbar_label=Пронађи
 
+additional_layers=Додатни слојеви
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Страница {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/sv-SE/viewer.properties 
b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
index 7c75281c3..57f2cc2ad 100644
--- a/third-party/pdfjs/web/locale/sv-SE/viewer.properties
+++ b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
@@ -137,16 +137,19 @@ print_progress_close=Avbryt
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Visa/dölj sidofält
-toggle_sidebar_notification2.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor/lager)
+toggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor)
+toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehåller dokumentstruktur/bilagor/lager)
 toggle_sidebar_label=Visa/dölj sidofält
 document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt)
 document_outline_label=Dokumentöversikt
 attachments.title=Visa Bilagor
 attachments_label=Bilagor
-layers.title=Visa lager (dubbelklicka för att återställa alla lager till ursrungligt läge)
+layers.title=Visa lager (dubbelklicka för att återställa alla lager till standardläge)
 layers_label=Lager
 thumbs.title=Visa miniatyrer
 thumbs_label=Miniatyrer
+current_outline_item.title=Hitta aktuellt dispositionsobjekt
+current_outline_item_label=Aktuellt dispositionsobjekt
 findbar.title=Sök i dokument
 findbar_label=Sök
 
diff --git a/third-party/pdfjs/web/locale/szl/viewer.properties 
b/third-party/pdfjs/web/locale/szl/viewer.properties
index 282c59509..80a5e6bda 100644
--- a/third-party/pdfjs/web/locale/szl/viewer.properties
+++ b/third-party/pdfjs/web/locale/szl/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Pociep
 # tooltips)
 toggle_sidebar.title=Przełōncz posek na rancie
 toggle_sidebar_notification.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki)
+toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy)
 toggle_sidebar_label=Przełōncz posek na rancie
 document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynty)
 document_outline_label=Struktura dokumyntu
 attachments.title=Pokoż przidowki
 attachments_label=Przidowki
+layers.title=Pokoż warstwy (tuplowane klikniyncie resetuje wszyskie warstwy do bazowego stanu)
+layers_label=Warstwy
 thumbs.title=Pokoż miniatury
 thumbs_label=Miniatury
 findbar.title=Znojdź w dokumyncie
 findbar_label=Znojdź
 
+additional_layers=Nadbytnie warstwy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strōna {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/te/viewer.properties 
b/third-party/pdfjs/web/locale/te/viewer.properties
index 498b64c8d..6839138b1 100644
--- a/third-party/pdfjs/web/locale/te/viewer.properties
+++ b/third-party/pdfjs/web/locale/te/viewer.properties
@@ -130,11 +130,15 @@ document_outline.title=పత్రము రూపము చూపించు
 document_outline_label=పత్రము అవుట్‌లైన్
 attachments.title=అనుబంధాలు చూపు
 attachments_label=అనుబంధాలు
+layers_label=పొరలు
 thumbs.title=థంబ్‌నైల్స్ చూపు
 thumbs_label=థంబ్‌నైల్స్
 findbar.title=పత్రములో కనుగొనుము
 findbar_label=కనుగొను
 
+additional_layers=అదనపు పొరలు
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=పేజి {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
diff --git a/third-party/pdfjs/web/locale/th/viewer.properties 
b/third-party/pdfjs/web/locale/th/viewer.properties
index a4ef7db14..49642836c 100644
--- a/third-party/pdfjs/web/locale/th/viewer.properties
+++ b/third-party/pdfjs/web/locale/th/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=ยกเลิก
 # tooltips)
 toggle_sidebar.title=เปิด/ปิดแถบข้าง
 toggle_sidebar_notification.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ)
+toggle_sidebar_notification2.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ/เลเยอร์)
 toggle_sidebar_label=เปิด/ปิดแถบข้าง
 document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด)
 document_outline_label=เค้าร่างเอกสาร
 attachments.title=แสดงไฟล์แนบ
 attachments_label=ไฟล์แนบ
+layers.title=แสดงเลเยอร์ (คลิกสองครั้งเพื่อรีเซ็ตเลเยอร์ทั้งหมดเป็นสถานะเริ่มต้น)
+layers_label=เลเยอร์
 thumbs.title=แสดงภาพขนาดย่อ
 thumbs_label=ภาพขนาดย่อ
 findbar.title=ค้นหาในเอกสาร
 findbar_label=ค้นหา
 
+additional_layers=เลเยอร์เพิ่มเติม
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=หน้า {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/tl/viewer.properties 
b/third-party/pdfjs/web/locale/tl/viewer.properties
index 0209da154..d3cce44e9 100644
--- a/third-party/pdfjs/web/locale/tl/viewer.properties
+++ b/third-party/pdfjs/web/locale/tl/viewer.properties
@@ -33,14 +33,14 @@ zoom_out_label=Paliitin
 zoom_in.title=Palakihin
 zoom_in_label=Palakihin
 zoom.title=Mag-zoom
-presentation_mode.title=Switch to Presentation Mode
+presentation_mode.title=Lumipat sa Presentation Mode
 presentation_mode_label=Presentation Mode
 open_file.title=Magbukas ng file
 open_file_label=Buksan
 print.title=i-Print
 print_label=i-Print
-download.title=Download
-download_label=Download
+download.title=i-Download
+download_label=i-Download
 bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window)
 bookmark_label=Kasalukuyang tingin
 
@@ -53,35 +53,35 @@ first_page_label=Pumunta sa Unang Pahina
 last_page.title=Pumunta sa Huling Pahina
 last_page.label=Pumunta sa Huling Pahina
 last_page_label=Pumunta sa Huling Pahina
-page_rotate_cw.title=Paikutin ang Clockwise
-page_rotate_cw.label=Paikutin ang Clockwise
-page_rotate_cw_label=Paikutin ang Clockwise
-page_rotate_ccw.title=Paikutin ang Counterclockwise
-page_rotate_ccw.label=Paikutin ang Counterclockwise
-page_rotate_ccw_label=Paikutin ang Counterclockwise
-
-cursor_text_select_tool.title=Enable Text Selection Tool
+page_rotate_cw.title=Paikutin Pakanan
+page_rotate_cw.label=Paikutin Pakanan
+page_rotate_cw_label=Paikutin Pakanan
+page_rotate_ccw.title=Paikutin Pakaliwa
+page_rotate_ccw.label=Paikutin Pakaliwa
+page_rotate_ccw_label=Paikutin Pakaliwa
+
+cursor_text_select_tool.title=I-enable ang Text Selection Tool
 cursor_text_select_tool_label=Text Selection Tool
-cursor_hand_tool.title=Enable Hand Tool
+cursor_hand_tool.title=I-enable ang Hand Tool
 cursor_hand_tool_label=Hand Tool
 
-scroll_vertical.title=Use Vertical Scrolling
+scroll_vertical.title=Gumamit ng Vertical Scrolling
 scroll_vertical_label=Vertical Scrolling
-scroll_horizontal.title=Use Horizontal Scrolling
+scroll_horizontal.title=Gumamit ng Horizontal Scrolling
 scroll_horizontal_label=Horizontal Scrolling
-scroll_wrapped.title=Use Wrapped Scrolling
+scroll_wrapped.title=Gumamit ng Wrapped Scrolling
 scroll_wrapped_label=Wrapped Scrolling
 
-spread_none.title=Do not join page spreads
+spread_none.title=Huwag pagsamahin ang mga page spread
 spread_none_label=No Spreads
 spread_odd.title=Join page spreads starting with odd-numbered pages
-spread_odd_label=Odd Spreads
-spread_even.title=Join page spreads starting with even-numbered pages
-spread_even_label=Even Spreads
+spread_odd_label=Mga Odd Spread
+spread_even.title=Pagsamahin ang mga page spread na nagsisimula sa mga even-numbered na pahina
+spread_even_label=Mga Even Spread
 
 # Document properties dialog box
-document_properties.title=Document Properties…
-document_properties_label=Document Properties…
+document_properties.title=Mga Katangian ng Dokumento…
+document_properties_label=Mga Katangian ng Dokumento…
 document_properties_file_name=File name:
 document_properties_file_size=File size:
 # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
@@ -91,23 +91,23 @@ document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
 # will be replaced by the PDF file size in megabytes, respectively in bytes.
 document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
 document_properties_title=Pamagat:
-document_properties_author=May Akda:
-document_properties_subject=Subject:
+document_properties_author=May-akda:
+document_properties_subject=Paksa:
 document_properties_keywords=Mga keyword:
-document_properties_creation_date=Creation Date:
-document_properties_modification_date=Modification Date:
+document_properties_creation_date=Petsa ng Pagkakagawa:
+document_properties_modification_date=Petsa ng Pagkakabago:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
 # will be replaced by the creation/modification date, and time, of the PDF file.
 document_properties_date_string={{date}}, {{time}}
-document_properties_creator=Creator:
+document_properties_creator=Tagalikha:
 document_properties_producer=PDF Producer:
 document_properties_version=PDF Version:
-document_properties_page_count=Page Count:
-document_properties_page_size=Page Size:
-document_properties_page_size_unit_inches=in
+document_properties_page_count=Bilang ng Pahina:
+document_properties_page_size=Laki ng Pahina:
+document_properties_page_size_unit_inches=pulgada
 document_properties_page_size_unit_millimeters=mm
-document_properties_page_size_orientation_portrait=portrait
-document_properties_page_size_orientation_landscape=landscape
+document_properties_page_size_orientation_portrait=patayo
+document_properties_page_size_orientation_landscape=pahiga
 document_properties_page_size_name_a3=A3
 document_properties_page_size_name_a4=A4
 document_properties_page_size_name_letter=Letter
@@ -127,7 +127,7 @@ document_properties_linearized_yes=Oo
 document_properties_linearized_no=Hindi
 document_properties_close=Isara
 
-print_progress_message=Preparing document for printing…
+print_progress_message=Inihahanda ang dokumento para sa pag-print…
 # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
 # a numerical per cent value.
 print_progress_percent={{progress}}%
@@ -136,18 +136,22 @@ print_progress_close=Kanselahin
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
-toggle_sidebar.title=Toggle Sidebar
-toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
-toggle_sidebar_label=Toggle Sidebar
-document_outline.title=Show Document Outline (double-click to expand/collapse all items)
-document_outline_label=Document Outline
-attachments.title=Show Attachments
-attachments_label=Attachments
-thumbs.title=Ipakita ang mga Thumbnails
-thumbs_label=Thumbnails
-findbar.title=Find in Document
+toggle_sidebar.title=Ipakita/Itago ang Sidebar
+toggle_sidebar_notification.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga 
attachment)
+toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga 
attachment/mga layer)
+toggle_sidebar_label=Ipakita/Itago ang Sidebar
+document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman)
+document_outline_label=Balangkas ng Dokumento
+attachments.title=Ipakita ang mga Attachment
+attachments_label=Mga attachment
+layers.title=Ipakita ang mga Layer (mag-double click para mareset ang lahat ng layer sa orihinal na estado)
+layers_label=Mga layer
+thumbs.title=Ipakita ang mga Thumbnail
+thumbs_label=Mga thumbnail
+findbar.title=Hanapin sa Dokumento
 findbar_label=Hanapin
 
+additional_layers=Mga Karagdagang Layer
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pahina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -160,43 +164,43 @@ thumb_page_canvas=Thumbnail ng Pahina {{page}}
 
 # Find panel button title and messages
 find_input.title=Hanapin
-find_input.placeholder=Find in document…
+find_input.placeholder=Hanapin sa dokumento…
 find_previous.title=Hanapin ang nakaraang pangyayari ng parirala
-find_previous_label=Nakaraang
+find_previous_label=Nakaraan
 find_next.title=Hanapin ang susunod na pangyayari ng parirala
 find_next_label=Susunod
 find_highlight=I-highlight lahat
-find_match_case_label=Match case
-find_entire_word_label=Whole words
-find_reached_top=Reached top of document, continued from bottom
-find_reached_bottom=Reached end of document, continued from top
+find_match_case_label=Itugma ang case
+find_entire_word_label=Buong salita
+find_reached_top=Naabot na ang tuktok ng dokumento, ipinagpatuloy mula sa ilalim
+find_reached_bottom=Naabot na ang dulo ng dokumento, ipinagpatuloy mula sa tuktok
 # LOCALIZATION NOTE (find_match_count): The supported plural forms are
 # [one|two|few|many|other], with [other] as the default value.
 # "{{current}}" and "{{total}}" will be replaced by a number representing the
 # index of the currently active find result, respectively a number representing
 # the total number of matches in the document.
 find_match_count={[ plural(total) ]}
-find_match_count[one]={{current}} of {{total}} match
-find_match_count[two]={{current}} of {{total}} matches
-find_match_count[few]={{current}} of {{total}} matches
-find_match_count[many]={{current}} of {{total}} matches
-find_match_count[other]={{current}} of {{total}} matches
+find_match_count[one]={{current}} ng {{total}} tugma
+find_match_count[two]={{current}} ng {{total}} tugma
+find_match_count[few]={{current}} ng {{total}} tugma
+find_match_count[many]={{current}} ng {{total}} tugma
+find_match_count[other]={{current}} ng {{total}} tugma
 # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
 # [zero|one|two|few|many|other], with [other] as the default value.
 # "{{limit}}" will be replaced by a numerical value.
 find_match_count_limit={[ plural(limit) ]}
-find_match_count_limit[zero]=More than {{limit}} matches
-find_match_count_limit[one]=More than {{limit}} match
-find_match_count_limit[two]=More than {{limit}} matches
-find_match_count_limit[few]=More than {{limit}} matches
-find_match_count_limit[many]=More than {{limit}} matches
-find_match_count_limit[other]=More than {{limit}} matches
-find_not_found=Hindi nakita ang prasko
+find_match_count_limit[zero]=Higit sa {{limit}} tugma
+find_match_count_limit[one]=Higit sa {{limit}} tugma
+find_match_count_limit[two]=Higit sa {{limit}} tugma
+find_match_count_limit[few]=Higit sa {{limit}} tugma
+find_match_count_limit[many]=Higit sa {{limit}} tugma
+find_match_count_limit[other]=Higit sa {{limit}} tugma
+find_not_found=Hindi natagpuan ang parirala
 
 # Error panel labels
 error_more_info=Karagdagang Impormasyon
 error_less_info=Mas Kaunting Impormasyon
-error_close=Sarado
+error_close=Isara
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
 # replaced by the PDF.JS version and build ID.
 error_version_info=PDF.js v{{version}} (build: {{build}})
@@ -210,11 +214,11 @@ error_stack=Stack: {{stack}}
 error_file=File: {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
 error_line=Linya: {{line}}
-rendering_error=May naganap na pagkakamali habang pagsasalin sa pahina.
+rendering_error=Nagkaproblema habang nirerender ang pahina.
 
 # Predefined zoom values
 page_scale_width=Lapad ng Pahina
-page_scale_fit=ang pahina ay angkop
+page_scale_fit=Pagkasyahin ang Pahina
 page_scale_auto=Automatic Zoom
 page_scale_actual=Totoong sukat
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
@@ -223,8 +227,8 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
-loading_error=May maling nangyari habang kinakarga ang PDF.
-invalid_file_error=Di-wasto o masira ang PDF file.
+loading_error=Nagkaproblema habang niloload ang PDF.
+invalid_file_error=Di-wasto o sira ang PDF file.
 missing_file_error=Nawawalang PDF file.
 unexpected_response_error=Hindi inaasahang tugon ng server.
 
@@ -238,10 +242,10 @@ annotation_date_string={{date}}, {{time}}
 # Some common types are e.g.: "Check", "Text", "Comment", "Note"
 text_annotation_type.alt=[{{type}} Annotation]
 password_label=Ipasok ang password upang buksan ang PDF file na ito.
-password_invalid=Invalid password. Please try again.
+password_invalid=Maling password. Subukan uli.
 password_ok=OK
 password_cancel=Kanselahin
 
-printing_not_supported=Warning: Printing is not fully supported by this browser.
-printing_not_ready=Warning: The PDF is not fully loaded for printing.
-web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
+printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito.
+printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print.
+web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font.
diff --git a/third-party/pdfjs/web/locale/tr/viewer.properties 
b/third-party/pdfjs/web/locale/tr/viewer.properties
index b189186c2..e898dd51f 100644
--- a/third-party/pdfjs/web/locale/tr/viewer.properties
+++ b/third-party/pdfjs/web/locale/tr/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=İptal
 # tooltips)
 toggle_sidebar.title=Kenar çubuğunu aç/kapat
 toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor)
+toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge anahat/ekler/katmanlar içeriyor)
 toggle_sidebar_label=Kenar çubuğunu aç/kapat
 document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın)
 document_outline_label=Belge ana hatları
 attachments.title=Ekleri göster
 attachments_label=Ekler
+layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlamak için çift tıklayın)
+layers_label=Katmanlar
 thumbs.title=Küçük resimleri göster
 thumbs_label=Küçük resimler
 findbar.title=Belgede bul
 findbar_label=Bul
 
+additional_layers=Ek katmanlar
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Sayfa {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/uk/viewer.properties 
b/third-party/pdfjs/web/locale/uk/viewer.properties
index 7b3a69c55..eaeb551eb 100644
--- a/third-party/pdfjs/web/locale/uk/viewer.properties
+++ b/third-party/pdfjs/web/locale/uk/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=Скасувати
 # tooltips)
 toggle_sidebar.title=Бічна панель
 toggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміст/вкладення)
+toggle_sidebar_notification2.title=Перемкнути бічну панель (документ містить ескіз/вкладення/шари)
 toggle_sidebar_label=Перемкнути бічну панель
 document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів)
 document_outline_label=Схема документа
 attachments.title=Показати прикріплення
 attachments_label=Прикріплення
+layers.title=Показати шари (двічі клацніть, щоб скинути всі шари до типового стану)
+layers_label=Шари
 thumbs.title=Показувати ескізи
 thumbs_label=Ескізи
+current_outline_item.title=Знайти поточний елемент змісту
+current_outline_item_label=Поточний елемент змісту
 findbar.title=Знайти в документі
-findbar_label=Пошук
+findbar_label=Знайти
 
+additional_layers=Додаткові шари
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Сторінка {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/vi/viewer.properties 
b/third-party/pdfjs/web/locale/vi/viewer.properties
index 64ae6e3a2..00ff02195 100644
--- a/third-party/pdfjs/web/locale/vi/viewer.properties
+++ b/third-party/pdfjs/web/locale/vi/viewer.properties
@@ -138,16 +138,20 @@ print_progress_close=Hủy bỏ
 # tooltips)
 toggle_sidebar.title=Bật/Tắt thanh lề
 toggle_sidebar_notification.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm)
+toggle_sidebar_notification2.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lớp)
 toggle_sidebar_label=Bật/Tắt thanh lề
 document_outline.title=Hiện tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục)
 document_outline_label=Bản phác tài liệu
 attachments.title=Hiện nội dung đính kèm
 attachments_label=Nội dung đính kèm
+layers.title=Hiển thị các lớp (nhấp đúp để đặt lại tất cả các lớp về trạng thái mặc định)
+layers_label=Lớp
 thumbs.title=Hiển thị ảnh thu nhỏ
 thumbs_label=Ảnh thu nhỏ
 findbar.title=Tìm trong tài liệu
 findbar_label=Tìm
 
+additional_layers=Các lớp bổ sung
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Trang {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/zh-CN/viewer.properties 
b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
index 214c746f1..becd80284 100644
--- a/third-party/pdfjs/web/locale/zh-CN/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
@@ -138,16 +138,22 @@ print_progress_close=取消
 # tooltips)
 toggle_sidebar.title=切换侧栏
 toggle_sidebar_notification.title=切换侧栏(文档所含的大纲/附件)
+toggle_sidebar_notification2.title=切换侧栏(文档所含的大纲/附件/图层)
 toggle_sidebar_label=切换侧栏
 document_outline.title=显示文档大纲(双击展开/折叠所有项)
 document_outline_label=文档大纲
 attachments.title=显示附件
 attachments_label=附件
+layers.title=显示图层(双击即可将所有图层重置为默认状态)
+layers_label=图层
 thumbs.title=显示缩略图
 thumbs_label=缩略图
+current_outline_item.title=查找当前大纲项目
+current_outline_item_label=当前大纲项目
 findbar.title=在文档中查找
 findbar_label=查找
 
+additional_layers=其他图层
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=页码 {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/zh-TW/viewer.properties 
b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
index 55626cabd..0f095de03 100644
--- a/third-party/pdfjs/web/locale/zh-TW/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
@@ -41,7 +41,7 @@ print.title=列印
 print_label=列印
 download.title=下載
 download_label=下載
-bookmark.title=目前檢視的內容(複製或開啟於新視窗)
+bookmark.title=目前畫面(複製或開啟於新視窗)
 bookmark_label=目前檢視
 
 # Secondary toolbar and context menu
@@ -138,16 +138,22 @@ print_progress_close=取消
 # tooltips)
 toggle_sidebar.title=切換側邊欄
 toggle_sidebar_notification.title=切換側邊攔(文件包含大綱或附件)
+toggle_sidebar_notification2.title=切換側邊欄(包含大綱、附件、圖層的文件)
 toggle_sidebar_label=切換側邊欄
 document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目)
 document_outline_label=文件大綱
 attachments.title=顯示附件
 attachments_label=附件
+layers.title=顯示圖層(滑鼠雙擊即可將所有圖層重設為預設狀態)
+layers_label=圖層
 thumbs.title=顯示縮圖
 thumbs_label=縮圖
+current_outline_item.title=尋找目前的大綱項目
+current_outline_item_label=目前的大綱項目
 findbar.title=在文件中尋找
 findbar_label=尋找
 
+additional_layers=其他圖層
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=第 {{page}} 頁
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
index 21af9931d..d7322b41e 100644
--- a/third-party/pdfjs/web/viewer.css
+++ b/third-party/pdfjs/web/viewer.css
@@ -41,15 +41,15 @@
 }
 
 .textLayer .highlight.begin {
-  border-radius: 4px 0px 0px 4px;
+  border-radius: 4px 0 0 4px;
 }
 
 .textLayer .highlight.end {
-  border-radius: 0px 4px 4px 0px;
+  border-radius: 0 4px 4px 0;
 }
 
 .textLayer .highlight.middle {
-  border-radius: 0px;
+  border-radius: 0;
 }
 
 .textLayer .highlight.selected {
@@ -67,10 +67,10 @@
 .textLayer .endOfContent {
   display: block;
   position: absolute;
-  left: 0px;
+  left: 0;
   top: 100%;
-  right: 0px;
-  bottom: 0px;
+  right: 0;
+  bottom: 0;
   z-index: -1;
   cursor: default;
   -webkit-user-select: none;
@@ -80,12 +80,13 @@
 }
 
 .textLayer .endOfContent.active {
-  top: 0px;
+  top: 0;
 }
 
 
 .annotationLayer section {
   position: absolute;
+  text-align: initial;
 }
 
 .annotationLayer .linkAnnotation > a,
@@ -102,7 +103,7 @@
 .annotationLayer .buttonWidgetAnnotation.pushButton > a:hover {
   opacity: 0.2;
   background: rgba(255, 255, 0, 1);
-  box-shadow: 0px 2px 10px rgba(255, 255, 0, 1);
+  box-shadow: 0 2px 10px rgba(255, 255, 0, 1);
 }
 
 .annotationLayer .textAnnotation img {
@@ -231,13 +232,14 @@
   z-index: 200;
   max-width: 20em;
   background-color: rgba(255, 255, 153, 1);
-  box-shadow: 0px 2px 5px rgba(136, 136, 136, 1);
+  box-shadow: 0 2px 5px rgba(136, 136, 136, 1);
   border-radius: 2px;
   padding: 6px;
   margin-left: 5px;
   cursor: pointer;
   font: message-box;
   font-size: 9px;
+  white-space: normal;
   word-wrap: break-word;
 }
 
@@ -285,7 +287,7 @@
   direction: ltr;
   width: 816px;
   height: 1056px;
-  margin: 1px auto -8px auto;
+  margin: 1px auto -8px;
   position: relative;
   overflow: visible;
   border: 9px solid transparent;
@@ -296,7 +298,7 @@
 }
 
 .pdfViewer.removePageBorders .page {
-  margin: 0px auto 10px auto;
+  margin: 0 auto 10px;
   border: none;
 }
 
@@ -387,10 +389,6 @@
   margin-right: auto;
 }
 
-.pdfPresentationMode:-ms-fullscreen .pdfViewer .page {
-  margin-bottom: 100% !important;
-}
-
 .pdfPresentationMode:-webkit-full-screen .pdfViewer .page {
   margin-bottom: 100%;
   border: 0;
@@ -401,6 +399,11 @@
   border: 0;
 }
 
+.pdfPresentationMode:-ms-fullscreen .pdfViewer .page {
+  margin-bottom: 100%;
+  border: 0;
+}
+
 .pdfPresentationMode:fullscreen .pdfViewer .page {
   margin-bottom: 100%;
   border: 0;
@@ -410,6 +413,7 @@
   --sidebar-width: 200px;
   --sidebar-transition-duration: 200ms;
   --sidebar-transition-timing-function: ease;
+  --loadingBar-end-offset: 0;
 
   --toolbar-icon-opacity: 0.7;
   --doorhanger-icon-opacity: 0.9;
@@ -422,22 +426,24 @@
   --progressBar-indeterminate-blend-color: rgba(116, 177, 239, 1);
   --scrollbar-color: auto;
   --scrollbar-bg-color: auto;
+  --toolbar-icon-bg-color: rgba(0, 0, 0, 1);
 
   --sidebar-bg-color: rgba(245, 246, 247, 1);
   --toolbar-bg-color: rgba(249, 249, 250, 1);
   --toolbar-border-color: rgba(204, 204, 204, 1);
   --button-hover-color: rgba(221, 222, 223, 1);
   --toggled-btn-bg-color: rgba(0, 0, 0, 0.3);
+  --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4);
   --dropdown-btn-bg-color: rgba(215, 215, 219, 1);
   --separator-color: rgba(0, 0, 0, 0.3);
   --field-color: rgba(6, 6, 6, 1);
   --field-bg-color: rgba(255, 255, 255, 1);
   --field-border-color: rgba(187, 187, 188, 1);
   --findbar-nextprevious-btn-bg-color: rgba(227, 228, 230, 1);
-  --outline-color: rgba(0, 0, 0, 0.8);
-  --outline-hover-color: rgba(0, 0, 0, 0.9);
-  --outline-active-color: rgba(0, 0, 0, 0.08);
-  --outline-active-bg-color: rgba(0, 0, 0, 1);
+  --treeitem-color: rgba(0, 0, 0, 0.8);
+  --treeitem-hover-color: rgba(0, 0, 0, 0.9);
+  --treeitem-selected-color: rgba(0, 0, 0, 0.9);
+  --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25);
   --sidebaritem-bg-color: rgba(0, 0, 0, 0.15);
   --doorhanger-bg-color: rgba(255, 255, 255, 1);
   --doorhanger-border-color: rgba(12, 12, 13, 0.2);
@@ -465,6 +471,7 @@
   --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline.svg);
   --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments.svg);
   --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers.svg);
+  --toolbarButton-currentOutlineItem-icon: url(images/toolbarButton-currentOutlineItem.svg);
   --toolbarButton-search-icon: url(images/toolbarButton-search.svg);
   --findbarButton-previous-icon: url(images/findbarButton-previous.svg);
   --findbarButton-next-icon: url(images/findbarButton-next.svg);
@@ -493,22 +500,24 @@
     --progressBar-indeterminate-blend-color: rgba(20, 68, 133, 1);
     --scrollbar-color: rgba(121, 121, 123, 1);
     --scrollbar-bg-color: rgba(35, 35, 39, 1);
+    --toolbar-icon-bg-color: rgba(255, 255, 255, 1);
 
     --sidebar-bg-color: rgba(50, 50, 52, 1);
     --toolbar-bg-color: rgba(56, 56, 61, 1);
     --toolbar-border-color: rgba(12, 12, 13, 1);
     --button-hover-color: rgba(102, 102, 103, 1);
     --toggled-btn-bg-color: rgba(0, 0, 0, 0.3);
+    --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4);
     --dropdown-btn-bg-color: rgba(74, 74, 79, 1);
     --separator-color: rgba(0, 0, 0, 0.3);
     --field-color: rgba(250, 250, 250, 1);
     --field-bg-color: rgba(64, 64, 68, 1);
     --field-border-color: rgba(115, 115, 115, 1);
     --findbar-nextprevious-btn-bg-color: rgba(89, 89, 89, 1);
-    --outline-color: rgba(255, 255, 255, 0.8);
-    --outline-hover-color: rgba(255, 255, 255, 0.9);
-    --outline-active-color: rgba(255, 255, 255, 0.08);
-    --outline-active-bg-color: rgba(255, 255, 255, 1);
+    --treeitem-color: rgba(255, 255, 255, 0.8);
+    --treeitem-hover-color: rgba(255, 255, 255, 0.9);
+    --treeitem-selected-color: rgba(255, 255, 255, 0.9);
+    --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25);
     --sidebaritem-bg-color: rgba(255, 255, 255, 0.15);
     --doorhanger-bg-color: rgba(74, 74, 79, 1);
     --doorhanger-border-color: rgba(39, 39, 43, 1);
@@ -517,41 +526,10 @@
     --overlay-button-bg-color: rgba(92, 92, 97, 1);
     --overlay-button-hover-color: rgba(115, 115, 115, 1);
 
+    /* This image is used in <input> elements, which unfortunately means that
+     * the `mask-image` approach used with all of the other images doesn't work
+     * here; hence why we still have two versions of this particular image. */
     --loading-icon: url(images/loading-dark.svg);
-    --treeitem-expanded-icon: url(images/treeitem-expanded-dark.svg);
-    --treeitem-collapsed-icon: url(images/treeitem-collapsed-dark.svg);
-    --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow-dark.svg);
-    --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle-dark.svg);
-    --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle-dark.svg);
-    --toolbarButton-pageUp-icon: url(images/toolbarButton-pageUp-dark.svg);
-    --toolbarButton-pageDown-icon: url(images/toolbarButton-pageDown-dark.svg);
-    --toolbarButton-zoomOut-icon: url(images/toolbarButton-zoomOut-dark.svg);
-    --toolbarButton-zoomIn-icon: url(images/toolbarButton-zoomIn-dark.svg);
-    --toolbarButton-presentationMode-icon: url(images/toolbarButton-presentationMode-dark.svg);
-    --toolbarButton-print-icon: url(images/toolbarButton-print-dark.svg);
-    --toolbarButton-openFile-icon: url(images/toolbarButton-openFile-dark.svg);
-    --toolbarButton-download-icon: url(images/toolbarButton-download-dark.svg);
-    --toolbarButton-bookmark-icon: url(images/toolbarButton-bookmark-dark.svg);
-    --toolbarButton-viewThumbnail-icon: url(images/toolbarButton-viewThumbnail-dark.svg);
-    --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline-dark.svg);
-    --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments-dark.svg);
-    --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers-dark.svg);
-    --toolbarButton-search-icon: url(images/toolbarButton-search-dark.svg);
-    --findbarButton-previous-icon: url(images/findbarButton-previous-dark.svg);
-    --findbarButton-next-icon: url(images/findbarButton-next-dark.svg);
-    --secondaryToolbarButton-firstPage-icon: url(images/secondaryToolbarButton-firstPage-dark.svg);
-    --secondaryToolbarButton-lastPage-icon: url(images/secondaryToolbarButton-lastPage-dark.svg);
-    --secondaryToolbarButton-rotateCcw-icon: url(images/secondaryToolbarButton-rotateCcw-dark.svg);
-    --secondaryToolbarButton-rotateCw-icon: url(images/secondaryToolbarButton-rotateCw-dark.svg);
-    --secondaryToolbarButton-selectTool-icon: url(images/secondaryToolbarButton-selectTool-dark.svg);
-    --secondaryToolbarButton-handTool-icon: url(images/secondaryToolbarButton-handTool-dark.svg);
-    --secondaryToolbarButton-scrollVertical-icon: url(images/secondaryToolbarButton-scrollVertical-dark.svg);
-    --secondaryToolbarButton-scrollHorizontal-icon: 
url(images/secondaryToolbarButton-scrollHorizontal-dark.svg);
-    --secondaryToolbarButton-scrollWrapped-icon: url(images/secondaryToolbarButton-scrollWrapped-dark.svg);
-    --secondaryToolbarButton-spreadNone-icon: url(images/secondaryToolbarButton-spreadNone-dark.svg);
-    --secondaryToolbarButton-spreadOdd-icon: url(images/secondaryToolbarButton-spreadOdd-dark.svg);
-    --secondaryToolbarButton-spreadEven-icon: url(images/secondaryToolbarButton-spreadEven-dark.svg);
-    --secondaryToolbarButton-documentProperties-icon: 
url(images/secondaryToolbarButton-documentProperties-dark.svg);
   }
 }
 
@@ -753,17 +731,8 @@ select {
   cursor: not-allowed;
 }
 
-#viewerContainer.pdfPresentationMode:-ms-fullscreen {
-  top: 0px !important;
-  overflow: hidden !important;
-}
-
-#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop {
-  background-color: rgba(0, 0, 0, 1);
-}
-
 #viewerContainer.pdfPresentationMode:-webkit-full-screen {
-  top: 0px;
+  top: 0;
   border-top: 2px solid rgba(0, 0, 0, 0);
   background-color: rgba(0, 0, 0, 1);
   width: 100%;
@@ -775,7 +744,7 @@ select {
 }
 
 #viewerContainer.pdfPresentationMode:-moz-full-screen {
-  top: 0px;
+  top: 0;
   border-top: 2px solid rgba(0, 0, 0, 0);
   background-color: rgba(0, 0, 0, 1);
   width: 100%;
@@ -787,7 +756,7 @@ select {
 }
 
 #viewerContainer.pdfPresentationMode:-ms-fullscreen {
-  top: 0px;
+  top: 0;
   border-top: 2px solid rgba(0, 0, 0, 0);
   background-color: rgba(0, 0, 0, 1);
   width: 100%;
@@ -799,7 +768,7 @@ select {
 }
 
 #viewerContainer.pdfPresentationMode:fullscreen {
-  top: 0px;
+  top: 0;
   border-top: 2px solid rgba(0, 0, 0, 0);
   background-color: rgba(0, 0, 0, 1);
   width: 100%;
@@ -880,10 +849,6 @@ html[dir="rtl"] #sidebarContainer {
   right: calc(0px - var(--sidebar-width));
 }
 
-.loadingInProgress #sidebarContainer {
-  top: 36px;
-}
-
 #outerContainer.sidebarResizing #sidebarContainer {
   /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
   transition-duration: 0s;
@@ -899,10 +864,10 @@ html[dir="rtl"] #sidebarContainer {
   visibility: visible;
 }
 html[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer {
-  left: 0px;
+  left: 0;
 }
 html[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer {
-  right: 0px;
+  right: 0;
 }
 
 #mainContainer {
@@ -1011,6 +976,13 @@ html[dir="rtl"] #toolbarSidebar .toolbarButton {
   margin-left: 2px !important;
 }
 
+html[dir="ltr"] #toolbarSidebarRight .toolbarButton {
+  margin-right: 3px !important;
+}
+html[dir="rtl"] #toolbarSidebarRight .toolbarButton {
+  margin-left: 3px !important;
+}
+
 #sidebarResizer {
   position: absolute;
   top: 0;
@@ -1031,109 +1003,73 @@ html[dir="rtl"] #sidebarResizer {
   height: 32px;
   background-color: rgba(249, 249, 250, 1);
   background-color: var(--toolbar-bg-color);
+  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
 }
 
 @media (prefers-color-scheme: dark) {
 
   #toolbarContainer {
-  background-color: rgba(56, 56, 61, 1);
-  background-color: var(--toolbar-bg-color);
+  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
   }
 }
 
-.findbar {
-  position: relative;
-  height: 32px;
-  background-color: rgba(249, 249, 250, 1);
-  background-color: var(--toolbar-bg-color);
-}
-
 @media (prefers-color-scheme: dark) {
 
-  .findbar {
+  #toolbarContainer {
   background-color: rgba(56, 56, 61, 1);
   background-color: var(--toolbar-bg-color);
   }
 }
 
-.secondaryToolbar {
+.findbar {
   position: relative;
   height: 32px;
   background-color: rgba(249, 249, 250, 1);
   background-color: var(--toolbar-bg-color);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbar {
-  background-color: rgba(56, 56, 61, 1);
-  background-color: var(--toolbar-bg-color);
-  }
-}
-html[dir="ltr"] #toolbarContainer {
   box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
   box-shadow: 0 1px 0 var(--toolbar-border-color);
 }
+
 @media (prefers-color-scheme: dark) {
 
-  html[dir="ltr"] #toolbarContainer {
+  .findbar {
   box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
   box-shadow: 0 1px 0 var(--toolbar-border-color);
   }
 }
-.findbar {
-  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
-}
+
 @media (prefers-color-scheme: dark) {
 
   .findbar {
-  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
+  background-color: rgba(56, 56, 61, 1);
+  background-color: var(--toolbar-bg-color);
   }
 }
+
 .secondaryToolbar {
+  position: relative;
+  height: 32px;
+  background-color: rgba(249, 249, 250, 1);
+  background-color: var(--toolbar-bg-color);
   box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
   box-shadow: 0 1px 0 var(--toolbar-border-color);
 }
-@media (prefers-color-scheme: dark) {
 
-  .secondaryToolbar {
-  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
-  }
-}
-html[dir="rtl"] #toolbarContainer {
-  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
-}
 @media (prefers-color-scheme: dark) {
 
-  html[dir="rtl"] #toolbarContainer {
+  .secondaryToolbar {
   box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
   box-shadow: 0 1px 0 var(--toolbar-border-color);
   }
 }
-.findbar {
-  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
-}
-@media (prefers-color-scheme: dark) {
 
-  .findbar {
-  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
-  }
-}
-.secondaryToolbar {
-  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
-}
 @media (prefers-color-scheme: dark) {
 
   .secondaryToolbar {
-  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
-  box-shadow: 0 1px 0 var(--toolbar-border-color);
+  background-color: rgba(56, 56, 61, 1);
+  background-color: var(--toolbar-bg-color);
   }
 }
 
@@ -1142,13 +1078,18 @@ html[dir="rtl"] #toolbarContainer {
 }
 
 #loadingBar {
-  position: relative;
-  width: 100%;
+  position: absolute;
   height: 4px;
   background-color: rgba(237, 237, 240, 1);
   background-color: var(--body-bg-color);
   border-bottom: 1px solid rgba(204, 204, 204, 1);
   border-bottom: 1px solid var(--toolbar-border-color);
+
+  transition-duration: 200ms;
+
+  transition-duration: var(--sidebar-transition-duration);
+  transition-timing-function: ease;
+  transition-timing-function: var(--sidebar-transition-timing-function);
 }
 
 @media (prefers-color-scheme: dark) {
@@ -1166,6 +1107,32 @@ html[dir="rtl"] #toolbarContainer {
   background-color: var(--body-bg-color);
   }
 }
+html[dir="ltr"] #loadingBar {
+  transition-property: left;
+  left: 0;
+  right: 0;
+  right: var(--loadingBar-end-offset);
+}
+html[dir="rtl"] #loadingBar {
+  transition-property: right;
+  left: 0;
+  left: var(--loadingBar-end-offset);
+  right: 0;
+}
+
+html[dir="ltr"] #outerContainer.sidebarOpen #loadingBar {
+  left: 200px;
+  left: var(--sidebar-width);
+}
+html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
+  right: 200px;
+  right: var(--sidebar-width);
+}
+
+#outerContainer.sidebarResizing #loadingBar {
+  /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
+  transition-duration: 0s;
+}
 
 #loadingBar .progress {
   position: absolute;
@@ -1470,8 +1437,8 @@ html[dir="rtl"] #toolbarContainer {
   z-index: 10000;
   height: auto;
   min-width: 16px;
-  padding: 0px 4px 0px 4px;
-  margin: 4px 2px 4px 2px;
+  padding: 0 4px;
+  margin: 4px 2px;
   color: rgba(217, 217, 217, 1);
   font-size: 12px;
   line-height: 14px;
@@ -1508,50 +1475,22 @@ html[dir="rtl"] .findbar {
   right: 64px;
 }
 
-html[dir="ltr"] .findbar .splitToolbarButton {
-  margin-left: 0px;
-  margin-top: 3px;
-}
-
-html[dir="rtl"] .findbar .splitToolbarButton {
-  margin-right: 0px;
+.findbar .splitToolbarButton {
   margin-top: 3px;
 }
-
-.findbar .splitToolbarButton .findNext {
-  width: 29px;
-}
-
-html[dir="ltr"] .findbar .splitToolbarButton .findNext {
-  border-right: 1px solid rgba(187, 187, 188, 1);
-  border-right: 1px solid var(--field-border-color);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  html[dir="ltr"] .findbar .splitToolbarButton .findNext {
-  border-right: 1px solid rgba(115, 115, 115, 1);
-  border-right: 1px solid var(--field-border-color);
-  }
-}
-
-html[dir="rtl"] .findbar .splitToolbarButton .findNext {
-  border-left: 1px solid rgba(187, 187, 188, 1);
-  border-left: 1px solid var(--field-border-color);
+html[dir="ltr"] .findbar .splitToolbarButton {
+  margin-left: 0;
+  margin-right: 5px;
 }
-
-@media (prefers-color-scheme: dark) {
-
-  html[dir="rtl"] .findbar .splitToolbarButton .findNext {
-  border-left: 1px solid rgba(115, 115, 115, 1);
-  border-left: 1px solid var(--field-border-color);
-  }
+html[dir="rtl"] .findbar .splitToolbarButton {
+  margin-left: 5px;
+  margin-right: 0;
 }
 
-.findbar .splitToolbarButton .toolbarButton {
+.findbar .splitToolbarButton > .toolbarButton {
   background-color: rgba(227, 228, 230, 1);
   background-color: var(--findbar-nextprevious-btn-bg-color);
-  border-radius: 0px;
+  border-radius: 0;
   height: 26px;
   border-top: 1px solid rgba(187, 187, 188, 1);
   border-top: 1px solid var(--field-border-color);
@@ -1561,7 +1500,7 @@ html[dir="rtl"] .findbar .splitToolbarButton .findNext {
 
 @media (prefers-color-scheme: dark) {
 
-  .findbar .splitToolbarButton .toolbarButton {
+  .findbar .splitToolbarButton > .toolbarButton {
   border-bottom: 1px solid rgba(115, 115, 115, 1);
   border-bottom: 1px solid var(--field-border-color);
   }
@@ -1569,7 +1508,7 @@ html[dir="rtl"] .findbar .splitToolbarButton .findNext {
 
 @media (prefers-color-scheme: dark) {
 
-  .findbar .splitToolbarButton .toolbarButton {
+  .findbar .splitToolbarButton > .toolbarButton {
   border-top: 1px solid rgba(115, 115, 115, 1);
   border-top: 1px solid var(--field-border-color);
   }
@@ -1577,34 +1516,44 @@ html[dir="rtl"] .findbar .splitToolbarButton .findNext {
 
 @media (prefers-color-scheme: dark) {
 
-  .findbar .splitToolbarButton .toolbarButton {
+  .findbar .splitToolbarButton > .toolbarButton {
   background-color: rgba(89, 89, 89, 1);
   background-color: var(--findbar-nextprevious-btn-bg-color);
   }
 }
 
-.findbar .splitToolbarButton .toolbarButton::before {
+.findbar .splitToolbarButton > .toolbarButton::before {
   top: 5px;
 }
 
-html[dir="ltr"] .findbar .splitToolbarButton > .findPrevious {
-  border-radius: 0;
+.findbar .splitToolbarButton > .findNext {
+  width: 29px;
 }
 html[dir="ltr"] .findbar .splitToolbarButton > .findNext {
-  border-bottom-left-radius: 0;
   border-bottom-right-radius: 2px;
-  border-top-left-radius: 0;
   border-top-right-radius: 2px;
+  border-right: 1px solid rgba(187, 187, 188, 1);
+  border-right: 1px solid var(--field-border-color);
 }
+@media (prefers-color-scheme: dark) {
 
-html[dir="rtl"] .findbar .splitToolbarButton > .findPrevious {
-  border-radius: 0;
+  html[dir="ltr"] .findbar .splitToolbarButton > .findNext {
+  border-right: 1px solid rgba(115, 115, 115, 1);
+  border-right: 1px solid var(--field-border-color);
+  }
 }
 html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
   border-bottom-left-radius: 2px;
-  border-bottom-right-radius: 0;
   border-top-left-radius: 2px;
-  border-top-right-radius: 0;
+  border-left: 1px solid rgba(187, 187, 188, 1);
+  border-left: 1px solid var(--field-border-color);
+}
+@media (prefers-color-scheme: dark) {
+
+  html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
+  border-left: 1px solid rgba(115, 115, 115, 1);
+  border-left: 1px solid var(--field-border-color);
+  }
 }
 
 .findbar input[type="checkbox"] {
@@ -1648,7 +1597,6 @@ html[dir="ltr"] #findInput {
   border-top-right-radius: 0;
   border-bottom-right-radius: 0;
 }
-
 html[dir="rtl"] #findInput {
   border-top-left-radius: 0;
   border-bottom-left-radius: 0;
@@ -1679,9 +1627,6 @@ html[dir="rtl"] #findInput {
 #findInput:-ms-input-placeholder {
   font-style: normal;
 }
-#findInput::-ms-input-placeholder {
-  font-style: normal;
-}
 #findInput::placeholder {
   font-style: normal;
 }
@@ -1701,9 +1646,12 @@ html[dir="rtl"] #findInput {
 html[dir="rtl"] #findInput[data-status="pending"] {
   background-position: 3px;
 }
+#findInput[data-status="notFound"] {
+  background-color: rgba(255, 102, 102, 1);
+}
 
 .secondaryToolbar {
-  padding: 6px 0 10px 0;
+  padding: 6px 0 10px;
   height: auto;
   z-index: 30000;
   background-color: rgba(255, 255, 255, 1);
@@ -1874,10 +1822,6 @@ html[dir="ltr"] .doorHangerRight:before {
   display: none;
 }
 
-#findInput.notFound {
-  background-color: rgba(255, 102, 102, 1);
-}
-
 #toolbarViewerMiddle {
   position: absolute;
   left: 50%;
@@ -1885,16 +1829,22 @@ html[dir="ltr"] .doorHangerRight:before {
 }
 
 html[dir="ltr"] #toolbarViewerLeft,
-html[dir="rtl"] #toolbarViewerRight {
+html[dir="rtl"] #toolbarViewerRight,
+html[dir="ltr"] #toolbarSidebarLeft,
+html[dir="rtl"] #toolbarSidebarRight {
   float: left;
 }
 html[dir="ltr"] #toolbarViewerRight,
-html[dir="rtl"] #toolbarViewerLeft {
+html[dir="rtl"] #toolbarViewerLeft,
+html[dir="ltr"] #toolbarSidebarRight,
+html[dir="rtl"] #toolbarSidebarLeft {
   float: right;
 }
 html[dir="ltr"] #toolbarViewerLeft > *,
 html[dir="ltr"] #toolbarViewerMiddle > *,
 html[dir="ltr"] #toolbarViewerRight > *,
+html[dir="ltr"] #toolbarSidebarLeft *,
+html[dir="ltr"] #toolbarSidebarRight *,
 html[dir="ltr"] .findbar * {
   position: relative;
   float: left;
@@ -1902,25 +1852,21 @@ html[dir="ltr"] .findbar * {
 html[dir="rtl"] #toolbarViewerLeft > *,
 html[dir="rtl"] #toolbarViewerMiddle > *,
 html[dir="rtl"] #toolbarViewerRight > *,
+html[dir="rtl"] #toolbarSidebarLeft *,
+html[dir="rtl"] #toolbarSidebarRight *,
 html[dir="rtl"] .findbar * {
   position: relative;
   float: right;
 }
 
-html[dir="ltr"] .splitToolbarButton {
-  margin: 2px 2px 0;
-  display: inline-block;
-}
-html[dir="rtl"] .splitToolbarButton {
+.splitToolbarButton {
   margin: 2px 2px 0;
   display: inline-block;
 }
 html[dir="ltr"] .splitToolbarButton > .toolbarButton {
-  border-radius: 2px;
   float: left;
 }
 html[dir="rtl"] .splitToolbarButton > .toolbarButton {
-  border-radius: 2px;
   float: right;
 }
 
@@ -2061,12 +2007,10 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton {
 }
 html[dir="ltr"] .splitToolbarButton > .toolbarButton:first-child,
 html[dir="rtl"] .splitToolbarButton > .toolbarButton:last-child {
-  position: relative;
   margin: 0;
 }
 html[dir="ltr"] .splitToolbarButton > .toolbarButton:last-child,
 html[dir="rtl"] .splitToolbarButton > .toolbarButton:first-child {
-  position: relative;
   margin: 0;
 }
 .splitToolbarButtonSeparator {
@@ -2110,6 +2054,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
 
 .toolbarButton {
   min-width: 16px;
+  margin: 2px 1px;
   padding: 2px 6px 0;
   border: none;
   border-radius: 2px;
@@ -2121,7 +2066,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
      -moz-user-select: none;
       -ms-user-select: none;
           user-select: none;
-  /* Opera does not support user-select, use <... unselectable="on"> instead */
   cursor: default;
   box-sizing: border-box;
 }
@@ -2136,6 +2080,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
 
 .dropdownToolbarButton {
   min-width: 16px;
+  margin: 2px 1px;
   padding: 2px 6px 0;
   border: none;
   border-radius: 2px;
@@ -2147,7 +2092,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
      -moz-user-select: none;
       -ms-user-select: none;
           user-select: none;
-  /* Opera does not support user-select, use <... unselectable="on"> instead */
   cursor: default;
   box-sizing: border-box;
 }
@@ -2162,6 +2106,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
 
 .secondaryToolbarButton {
   min-width: 16px;
+  margin: 2px 1px;
   padding: 2px 6px 0;
   border: none;
   border-radius: 2px;
@@ -2173,7 +2118,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
      -moz-user-select: none;
       -ms-user-select: none;
           user-select: none;
-  /* Opera does not support user-select, use <... unselectable="on"> instead */
   cursor: default;
   box-sizing: border-box;
 }
@@ -2188,6 +2132,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
 
 .overlayButton {
   min-width: 16px;
+  margin: 2px 1px;
   padding: 2px 6px 0;
   border: none;
   border-radius: 2px;
@@ -2199,7 +2144,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
      -moz-user-select: none;
       -ms-user-select: none;
           user-select: none;
-  /* Opera does not support user-select, use <... unselectable="on"> instead */
   cursor: default;
   box-sizing: border-box;
 }
@@ -2212,17 +2156,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
   }
 }
 
-html[dir="ltr"] .toolbarButton,
-html[dir="ltr"] .overlayButton,
-html[dir="ltr"] .dropdownToolbarButton {
-  margin: 2px 1px;
-}
-html[dir="rtl"] .toolbarButton,
-html[dir="rtl"] .overlayButton,
-html[dir="rtl"] .dropdownToolbarButton {
-  margin: 2px 1px;
-}
-
 html[dir="ltr"] #toolbarViewerLeft > .toolbarButton:first-child,
 html[dir="rtl"] #toolbarViewerRight > .toolbarButton:last-child {
   margin-left: 2px;
@@ -2316,10 +2249,43 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
   }
 }
 
-.toolbarButton.toggled:hover:active,
-.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active,
+.toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+  }
+}
+
+.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .splitToolbarButton.toggled > .toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+  }
+}
+
 .secondaryToolbarButton.toggled:hover:active {
   background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+  }
 }
 
 .dropdownToolbarButton {
@@ -2339,20 +2305,14 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
   }
 }
 .dropdownToolbarButton::after {
-  position: absolute;
-  display: inline-block;
   top: 6px;
-  content: url(images/toolbarButton-menuArrow.svg);
-  content: var(--toolbarButton-menuArrow-icon);
   pointer-events: none;
-  max-width: 16px;
-}
-@media (prefers-color-scheme: dark) {
 
-  .dropdownToolbarButton::after {
-  content: url(images/toolbarButton-menuArrow-dark.svg);
-  content: var(--toolbarButton-menuArrow-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-menuArrow.svg);
+
+  -webkit-mask-image: var(--toolbarButton-menuArrow-icon);
+  mask-image: url(images/toolbarButton-menuArrow.svg);
+  mask-image: var(--toolbarButton-menuArrow-icon);
 }
 html[dir="ltr"] .dropdownToolbarButton::after {
   right: 7px;
@@ -2448,273 +2408,233 @@ html[dir="rtl"] .dropdownToolbarButton > select {
   height: 1px;
 }
 
-html[dir="ltr"] #findPrevious {
-  margin-left: 0;
-}
-html[dir="ltr"] #findNext {
-  margin-right: 3px;
-}
+.toolbarButton::before {
+  /* All matching images have a size of 16x16
+   * All relevant containers have a size of 28x28 */
+  position: absolute;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
 
-html[dir="rtl"] #findPrevious {
-  margin-right: 0;
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
 }
-html[dir="rtl"] #findNext {
-  margin-left: 3px;
-}
-
-.toolbarButton::before {
-  opacity: 0.7;
-  opacity: var(--toolbar-icon-opacity);
-  top: 6px;
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton::before {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  }
 }
 
-.secondaryToolbarButton::before {
-  opacity: 0.9;
-  opacity: var(--doorhanger-icon-opacity);
-  top: 5px;
-}
-
-.toolbarButton::before,
 .secondaryToolbarButton::before {
   /* All matching images have a size of 16x16
    * All relevant containers have a size of 28x28 */
   position: absolute;
   display: inline-block;
-  left: 6px;
-  max-width: 16px;
-}
+  width: 16px;
+  height: 16px;
 
-html[dir="ltr"] .secondaryToolbarButton::before {
-  left: 12px;
-}
-html[dir="rtl"] .secondaryToolbarButton::before {
-  right: 12px;
-}
-
-.toolbarButton#sidebarToggle::before {
-  content: url(images/toolbarButton-sidebarToggle.svg);
-  content: var(--toolbarButton-sidebarToggle-icon);
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
 }
 
 @media (prefers-color-scheme: dark) {
 
-  .toolbarButton#sidebarToggle::before {
-  content: url(images/toolbarButton-sidebarToggle-dark.svg);
-  content: var(--toolbarButton-sidebarToggle-icon);
+  .secondaryToolbarButton::before {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
   }
 }
-html[dir="rtl"] .toolbarButton#sidebarToggle::before {
-  transform: scaleX(-1);
-}
 
-.toolbarButton#secondaryToolbarToggle::before {
-  content: url(images/toolbarButton-secondaryToolbarToggle.svg);
-  content: var(--toolbarButton-secondaryToolbarToggle-icon);
+.dropdownToolbarButton::after {
+  /* All matching images have a size of 16x16
+   * All relevant containers have a size of 28x28 */
+  position: absolute;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
 }
 
 @media (prefers-color-scheme: dark) {
 
-  .toolbarButton#secondaryToolbarToggle::before {
-  content: url(images/toolbarButton-secondaryToolbarToggle-dark.svg);
-  content: var(--toolbarButton-secondaryToolbarToggle-icon);
+  .dropdownToolbarButton::after {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
   }
 }
-html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before {
-  transform: scaleX(-1);
-}
 
-.toolbarButton.findPrevious::before {
-  content: url(images/findbarButton-previous.svg);
-  content: var(--findbarButton-previous-icon);
+.treeItemToggler::before {
+  /* All matching images have a size of 16x16
+   * All relevant containers have a size of 28x28 */
+  position: absolute;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
 }
 
 @media (prefers-color-scheme: dark) {
 
-  .toolbarButton.findPrevious::before {
-  content: url(images/findbarButton-previous-dark.svg);
-  content: var(--findbarButton-previous-icon);
+  .treeItemToggler::before {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
   }
 }
-html[dir="rtl"] .toolbarButton.findPrevious::before {
-  transform: scaleX(-1);
-}
 
-.toolbarButton.findNext::before {
-  content: url(images/findbarButton-next.svg);
-  content: var(--findbarButton-next-icon);
+.toolbarButton::before {
+  opacity: 0.7;
+  opacity: var(--toolbar-icon-opacity);
+  top: 6px;
+  left: 6px;
 }
 
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.findNext::before {
-  content: url(images/findbarButton-next-dark.svg);
-  content: var(--findbarButton-next-icon);
-  }
+.secondaryToolbarButton::before {
+  opacity: 0.9;
+  opacity: var(--doorhanger-icon-opacity);
+  top: 5px;
 }
-html[dir="rtl"] .toolbarButton.findNext::before {
-  transform: scaleX(-1);
+html[dir="ltr"] .secondaryToolbarButton::before {
+  left: 12px;
 }
-
-.toolbarButton.pageUp::before {
-  content: url(images/toolbarButton-pageUp.svg);
-  content: var(--toolbarButton-pageUp-icon);
+html[dir="rtl"] .secondaryToolbarButton::before {
+  right: 12px;
 }
 
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.pageUp::before {
-  content: url(images/toolbarButton-pageUp-dark.svg);
-  content: var(--toolbarButton-pageUp-icon);
-  }
+.toolbarButton#sidebarToggle::before {
+  -webkit-mask-image: url(images/toolbarButton-sidebarToggle.svg);
+  -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon);
+  mask-image: url(images/toolbarButton-sidebarToggle.svg);
+  mask-image: var(--toolbarButton-sidebarToggle-icon);
 }
-html[dir="rtl"] .toolbarButton.pageUp::before {
+html[dir="rtl"] .toolbarButton#sidebarToggle::before {
   transform: scaleX(-1);
 }
 
-.toolbarButton.pageDown::before {
-  content: url(images/toolbarButton-pageDown.svg);
-  content: var(--toolbarButton-pageDown-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.pageDown::before {
-  content: url(images/toolbarButton-pageDown-dark.svg);
-  content: var(--toolbarButton-pageDown-icon);
-  }
+.toolbarButton#secondaryToolbarToggle::before {
+  -webkit-mask-image: url(images/toolbarButton-secondaryToolbarToggle.svg);
+  -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
+  mask-image: url(images/toolbarButton-secondaryToolbarToggle.svg);
+  mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
 }
-html[dir="rtl"] .toolbarButton.pageDown::before {
+html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before {
   transform: scaleX(-1);
 }
 
-.toolbarButton.zoomOut::before {
-  content: url(images/toolbarButton-zoomOut.svg);
-  content: var(--toolbarButton-zoomOut-icon);
+.toolbarButton.findPrevious::before {
+  -webkit-mask-image: url(images/findbarButton-previous.svg);
+  -webkit-mask-image: var(--findbarButton-previous-icon);
+  mask-image: url(images/findbarButton-previous.svg);
+  mask-image: var(--findbarButton-previous-icon);
 }
 
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.zoomOut::before {
-  content: url(images/toolbarButton-zoomOut-dark.svg);
-  content: var(--toolbarButton-zoomOut-icon);
-  }
+.toolbarButton.findNext::before {
+  -webkit-mask-image: url(images/findbarButton-next.svg);
+  -webkit-mask-image: var(--findbarButton-next-icon);
+  mask-image: url(images/findbarButton-next.svg);
+  mask-image: var(--findbarButton-next-icon);
 }
 
-.toolbarButton.zoomIn::before {
-  content: url(images/toolbarButton-zoomIn.svg);
-  content: var(--toolbarButton-zoomIn-icon);
+.toolbarButton.pageUp::before {
+  -webkit-mask-image: url(images/toolbarButton-pageUp.svg);
+  -webkit-mask-image: var(--toolbarButton-pageUp-icon);
+  mask-image: url(images/toolbarButton-pageUp.svg);
+  mask-image: var(--toolbarButton-pageUp-icon);
 }
 
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.zoomIn::before {
-  content: url(images/toolbarButton-zoomIn-dark.svg);
-  content: var(--toolbarButton-zoomIn-icon);
-  }
+.toolbarButton.pageDown::before {
+  -webkit-mask-image: url(images/toolbarButton-pageDown.svg);
+  -webkit-mask-image: var(--toolbarButton-pageDown-icon);
+  mask-image: url(images/toolbarButton-pageDown.svg);
+  mask-image: var(--toolbarButton-pageDown-icon);
 }
 
-.toolbarButton.presentationMode::before {
-  content: url(images/toolbarButton-presentationMode.svg);
-  content: var(--toolbarButton-presentationMode-icon);
+.toolbarButton.zoomOut::before {
+  -webkit-mask-image: url(images/toolbarButton-zoomOut.svg);
+  -webkit-mask-image: var(--toolbarButton-zoomOut-icon);
+  mask-image: url(images/toolbarButton-zoomOut.svg);
+  mask-image: var(--toolbarButton-zoomOut-icon);
 }
 
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.presentationMode::before {
-  content: url(images/toolbarButton-presentationMode-dark.svg);
-  content: var(--toolbarButton-presentationMode-icon);
-  }
+.toolbarButton.zoomIn::before {
+  -webkit-mask-image: url(images/toolbarButton-zoomIn.svg);
+  -webkit-mask-image: var(--toolbarButton-zoomIn-icon);
+  mask-image: url(images/toolbarButton-zoomIn.svg);
+  mask-image: var(--toolbarButton-zoomIn-icon);
 }
 
-.secondaryToolbarButton.presentationMode::before {
-  content: url(images/toolbarButton-presentationMode.svg);
-  content: var(--toolbarButton-presentationMode-icon);
+.toolbarButton.presentationMode::before {
+  -webkit-mask-image: url(images/toolbarButton-presentationMode.svg);
+  -webkit-mask-image: var(--toolbarButton-presentationMode-icon);
+  mask-image: url(images/toolbarButton-presentationMode.svg);
+  mask-image: var(--toolbarButton-presentationMode-icon);
 }
 
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.presentationMode::before {
-  content: url(images/toolbarButton-presentationMode-dark.svg);
-  content: var(--toolbarButton-presentationMode-icon);
-  }
+.secondaryToolbarButton.presentationMode::before {
+  -webkit-mask-image: url(images/toolbarButton-presentationMode.svg);
+  -webkit-mask-image: var(--toolbarButton-presentationMode-icon);
+  mask-image: url(images/toolbarButton-presentationMode.svg);
+  mask-image: var(--toolbarButton-presentationMode-icon);
 }
 
 .toolbarButton.print::before {
-  content: url(images/toolbarButton-print.svg);
-  content: var(--toolbarButton-print-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.print::before {
-  content: url(images/toolbarButton-print-dark.svg);
-  content: var(--toolbarButton-print-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-print.svg);
+  -webkit-mask-image: var(--toolbarButton-print-icon);
+  mask-image: url(images/toolbarButton-print.svg);
+  mask-image: var(--toolbarButton-print-icon);
 }
 
 .secondaryToolbarButton.print::before {
-  content: url(images/toolbarButton-print.svg);
-  content: var(--toolbarButton-print-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.print::before {
-  content: url(images/toolbarButton-print-dark.svg);
-  content: var(--toolbarButton-print-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-print.svg);
+  -webkit-mask-image: var(--toolbarButton-print-icon);
+  mask-image: url(images/toolbarButton-print.svg);
+  mask-image: var(--toolbarButton-print-icon);
 }
 
 .toolbarButton.openFile::before {
-  content: url(images/toolbarButton-openFile.svg);
-  content: var(--toolbarButton-openFile-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.openFile::before {
-  content: url(images/toolbarButton-openFile-dark.svg);
-  content: var(--toolbarButton-openFile-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-openFile.svg);
+  -webkit-mask-image: var(--toolbarButton-openFile-icon);
+  mask-image: url(images/toolbarButton-openFile.svg);
+  mask-image: var(--toolbarButton-openFile-icon);
 }
 
 .secondaryToolbarButton.openFile::before {
-  content: url(images/toolbarButton-openFile.svg);
-  content: var(--toolbarButton-openFile-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.openFile::before {
-  content: url(images/toolbarButton-openFile-dark.svg);
-  content: var(--toolbarButton-openFile-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-openFile.svg);
+  -webkit-mask-image: var(--toolbarButton-openFile-icon);
+  mask-image: url(images/toolbarButton-openFile.svg);
+  mask-image: var(--toolbarButton-openFile-icon);
 }
 
 .toolbarButton.download::before {
-  content: url(images/toolbarButton-download.svg);
-  content: var(--toolbarButton-download-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.download::before {
-  content: url(images/toolbarButton-download-dark.svg);
-  content: var(--toolbarButton-download-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-download.svg);
+  -webkit-mask-image: var(--toolbarButton-download-icon);
+  mask-image: url(images/toolbarButton-download.svg);
+  mask-image: var(--toolbarButton-download-icon);
 }
 
 .secondaryToolbarButton.download::before {
-  content: url(images/toolbarButton-download.svg);
-  content: var(--toolbarButton-download-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.download::before {
-  content: url(images/toolbarButton-download-dark.svg);
-  content: var(--toolbarButton-download-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-download.svg);
+  -webkit-mask-image: var(--toolbarButton-download-icon);
+  mask-image: url(images/toolbarButton-download.svg);
+  mask-image: var(--toolbarButton-download-icon);
 }
 
 .secondaryToolbarButton.bookmark {
@@ -2728,97 +2648,65 @@ html[dir="rtl"] .toolbarButton.pageDown::before {
 }
 
 .toolbarButton.bookmark::before {
-  content: url(images/toolbarButton-bookmark.svg);
-  content: var(--toolbarButton-bookmark-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .toolbarButton.bookmark::before {
-  content: url(images/toolbarButton-bookmark-dark.svg);
-  content: var(--toolbarButton-bookmark-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-bookmark.svg);
+  -webkit-mask-image: var(--toolbarButton-bookmark-icon);
+  mask-image: url(images/toolbarButton-bookmark.svg);
+  mask-image: var(--toolbarButton-bookmark-icon);
 }
 
 .secondaryToolbarButton.bookmark::before {
-  content: url(images/toolbarButton-bookmark.svg);
-  content: var(--toolbarButton-bookmark-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.bookmark::before {
-  content: url(images/toolbarButton-bookmark-dark.svg);
-  content: var(--toolbarButton-bookmark-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-bookmark.svg);
+  -webkit-mask-image: var(--toolbarButton-bookmark-icon);
+  mask-image: url(images/toolbarButton-bookmark.svg);
+  mask-image: var(--toolbarButton-bookmark-icon);
 }
 
 #viewThumbnail.toolbarButton::before {
-  content: url(images/toolbarButton-viewThumbnail.svg);
-  content: var(--toolbarButton-viewThumbnail-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  #viewThumbnail.toolbarButton::before {
-  content: url(images/toolbarButton-viewThumbnail-dark.svg);
-  content: var(--toolbarButton-viewThumbnail-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-viewThumbnail.svg);
+  -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon);
+  mask-image: url(images/toolbarButton-viewThumbnail.svg);
+  mask-image: var(--toolbarButton-viewThumbnail-icon);
 }
 
 #viewOutline.toolbarButton::before {
-  content: url(images/toolbarButton-viewOutline.svg);
-  content: var(--toolbarButton-viewOutline-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  #viewOutline.toolbarButton::before {
-  content: url(images/toolbarButton-viewOutline-dark.svg);
-  content: var(--toolbarButton-viewOutline-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-viewOutline.svg);
+  -webkit-mask-image: var(--toolbarButton-viewOutline-icon);
+  mask-image: url(images/toolbarButton-viewOutline.svg);
+  mask-image: var(--toolbarButton-viewOutline-icon);
 }
 html[dir="rtl"] #viewOutline.toolbarButton::before {
   transform: scaleX(-1);
 }
 
 #viewAttachments.toolbarButton::before {
-  content: url(images/toolbarButton-viewAttachments.svg);
-  content: var(--toolbarButton-viewAttachments-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  #viewAttachments.toolbarButton::before {
-  content: url(images/toolbarButton-viewAttachments-dark.svg);
-  content: var(--toolbarButton-viewAttachments-icon);
-  }
+  -webkit-mask-image: url(images/toolbarButton-viewAttachments.svg);
+  -webkit-mask-image: var(--toolbarButton-viewAttachments-icon);
+  mask-image: url(images/toolbarButton-viewAttachments.svg);
+  mask-image: var(--toolbarButton-viewAttachments-icon);
 }
 
 #viewLayers.toolbarButton::before {
-  content: url(images/toolbarButton-viewLayers.svg);
-  content: var(--toolbarButton-viewLayers-icon);
+  -webkit-mask-image: url(images/toolbarButton-viewLayers.svg);
+  -webkit-mask-image: var(--toolbarButton-viewLayers-icon);
+  mask-image: url(images/toolbarButton-viewLayers.svg);
+  mask-image: var(--toolbarButton-viewLayers-icon);
 }
 
-@media (prefers-color-scheme: dark) {
-
-  #viewLayers.toolbarButton::before {
-  content: url(images/toolbarButton-viewLayers-dark.svg);
-  content: var(--toolbarButton-viewLayers-icon);
-  }
+#currentOutlineItem.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-currentOutlineItem.svg);
+  -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon);
+  mask-image: url(images/toolbarButton-currentOutlineItem.svg);
+  mask-image: var(--toolbarButton-currentOutlineItem-icon);
 }
-
-#viewFind.toolbarButton::before {
-  content: url(images/toolbarButton-search.svg);
-  content: var(--toolbarButton-search-icon);
+html[dir="rtl"] #currentOutlineItem.toolbarButton::before {
+  transform: scaleX(-1);
 }
 
-@media (prefers-color-scheme: dark) {
-
-  #viewFind.toolbarButton::before {
-  content: url(images/toolbarButton-search-dark.svg);
-  content: var(--toolbarButton-search-icon);
-  }
+#viewFind.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-search.svg);
+  -webkit-mask-image: var(--toolbarButton-search-icon);
+  mask-image: url(images/toolbarButton-search.svg);
+  mask-image: var(--toolbarButton-search-icon);
 }
 
 .toolbarButton.pdfSidebarNotification::after {
@@ -2842,7 +2730,7 @@ html[dir="rtl"] .toolbarButton.pdfSidebarNotification::after {
 .secondaryToolbarButton {
   position: relative;
   margin: 0;
-  padding: 0 0 1px 0;
+  padding: 0 0 1px;
   height: auto;
   min-height: 26px;
   width: auto;
@@ -2868,172 +2756,94 @@ html[dir="rtl"] .secondaryToolbarButton > span {
 }
 
 .secondaryToolbarButton.firstPage::before {
-  content: url(images/secondaryToolbarButton-firstPage.svg);
-  content: var(--secondaryToolbarButton-firstPage-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.firstPage::before {
-  content: url(images/secondaryToolbarButton-firstPage-dark.svg);
-  content: var(--secondaryToolbarButton-firstPage-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-firstPage.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon);
+  mask-image: url(images/secondaryToolbarButton-firstPage.svg);
+  mask-image: var(--secondaryToolbarButton-firstPage-icon);
 }
 
 .secondaryToolbarButton.lastPage::before {
-  content: url(images/secondaryToolbarButton-lastPage.svg);
-  content: var(--secondaryToolbarButton-lastPage-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.lastPage::before {
-  content: url(images/secondaryToolbarButton-lastPage-dark.svg);
-  content: var(--secondaryToolbarButton-lastPage-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-lastPage.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon);
+  mask-image: url(images/secondaryToolbarButton-lastPage.svg);
+  mask-image: var(--secondaryToolbarButton-lastPage-icon);
 }
 
 .secondaryToolbarButton.rotateCcw::before {
-  content: url(images/secondaryToolbarButton-rotateCcw.svg);
-  content: var(--secondaryToolbarButton-rotateCcw-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.rotateCcw::before {
-  content: url(images/secondaryToolbarButton-rotateCcw-dark.svg);
-  content: var(--secondaryToolbarButton-rotateCcw-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-rotateCcw.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
+  mask-image: url(images/secondaryToolbarButton-rotateCcw.svg);
+  mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
 }
 
 .secondaryToolbarButton.rotateCw::before {
-  content: url(images/secondaryToolbarButton-rotateCw.svg);
-  content: var(--secondaryToolbarButton-rotateCw-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.rotateCw::before {
-  content: url(images/secondaryToolbarButton-rotateCw-dark.svg);
-  content: var(--secondaryToolbarButton-rotateCw-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-rotateCw.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon);
+  mask-image: url(images/secondaryToolbarButton-rotateCw.svg);
+  mask-image: var(--secondaryToolbarButton-rotateCw-icon);
 }
 
 .secondaryToolbarButton.selectTool::before {
-  content: url(images/secondaryToolbarButton-selectTool.svg);
-  content: var(--secondaryToolbarButton-selectTool-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.selectTool::before {
-  content: url(images/secondaryToolbarButton-selectTool-dark.svg);
-  content: var(--secondaryToolbarButton-selectTool-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-selectTool.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon);
+  mask-image: url(images/secondaryToolbarButton-selectTool.svg);
+  mask-image: var(--secondaryToolbarButton-selectTool-icon);
 }
 
 .secondaryToolbarButton.handTool::before {
-  content: url(images/secondaryToolbarButton-handTool.svg);
-  content: var(--secondaryToolbarButton-handTool-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.handTool::before {
-  content: url(images/secondaryToolbarButton-handTool-dark.svg);
-  content: var(--secondaryToolbarButton-handTool-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-handTool.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon);
+  mask-image: url(images/secondaryToolbarButton-handTool.svg);
+  mask-image: var(--secondaryToolbarButton-handTool-icon);
 }
 
 .secondaryToolbarButton.scrollVertical::before {
-  content: url(images/secondaryToolbarButton-scrollVertical.svg);
-  content: var(--secondaryToolbarButton-scrollVertical-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.scrollVertical::before {
-  content: url(images/secondaryToolbarButton-scrollVertical-dark.svg);
-  content: var(--secondaryToolbarButton-scrollVertical-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-scrollVertical.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
+  mask-image: url(images/secondaryToolbarButton-scrollVertical.svg);
+  mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
 }
 
 .secondaryToolbarButton.scrollHorizontal::before {
-  content: url(images/secondaryToolbarButton-scrollHorizontal.svg);
-  content: var(--secondaryToolbarButton-scrollHorizontal-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.scrollHorizontal::before {
-  content: url(images/secondaryToolbarButton-scrollHorizontal-dark.svg);
-  content: var(--secondaryToolbarButton-scrollHorizontal-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-scrollHorizontal.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
+  mask-image: url(images/secondaryToolbarButton-scrollHorizontal.svg);
+  mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
 }
 
 .secondaryToolbarButton.scrollWrapped::before {
-  content: url(images/secondaryToolbarButton-scrollWrapped.svg);
-  content: var(--secondaryToolbarButton-scrollWrapped-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.scrollWrapped::before {
-  content: url(images/secondaryToolbarButton-scrollWrapped-dark.svg);
-  content: var(--secondaryToolbarButton-scrollWrapped-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-scrollWrapped.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
+  mask-image: url(images/secondaryToolbarButton-scrollWrapped.svg);
+  mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
 }
 
 .secondaryToolbarButton.spreadNone::before {
-  content: url(images/secondaryToolbarButton-spreadNone.svg);
-  content: var(--secondaryToolbarButton-spreadNone-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.spreadNone::before {
-  content: url(images/secondaryToolbarButton-spreadNone-dark.svg);
-  content: var(--secondaryToolbarButton-spreadNone-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-spreadNone.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon);
+  mask-image: url(images/secondaryToolbarButton-spreadNone.svg);
+  mask-image: var(--secondaryToolbarButton-spreadNone-icon);
 }
 
 .secondaryToolbarButton.spreadOdd::before {
-  content: url(images/secondaryToolbarButton-spreadOdd.svg);
-  content: var(--secondaryToolbarButton-spreadOdd-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.spreadOdd::before {
-  content: url(images/secondaryToolbarButton-spreadOdd-dark.svg);
-  content: var(--secondaryToolbarButton-spreadOdd-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-spreadOdd.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
+  mask-image: url(images/secondaryToolbarButton-spreadOdd.svg);
+  mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
 }
 
 .secondaryToolbarButton.spreadEven::before {
-  content: url(images/secondaryToolbarButton-spreadEven.svg);
-  content: var(--secondaryToolbarButton-spreadEven-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.spreadEven::before {
-  content: url(images/secondaryToolbarButton-spreadEven-dark.svg);
-  content: var(--secondaryToolbarButton-spreadEven-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-spreadEven.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon);
+  mask-image: url(images/secondaryToolbarButton-spreadEven.svg);
+  mask-image: var(--secondaryToolbarButton-spreadEven-icon);
 }
 
 .secondaryToolbarButton.documentProperties::before {
-  content: url(images/secondaryToolbarButton-documentProperties.svg);
-  content: var(--secondaryToolbarButton-documentProperties-icon);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .secondaryToolbarButton.documentProperties::before {
-  content: url(images/secondaryToolbarButton-documentProperties-dark.svg);
-  content: var(--secondaryToolbarButton-documentProperties-icon);
-  }
+  -webkit-mask-image: url(images/secondaryToolbarButton-documentProperties.svg);
+  -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon);
+  mask-image: url(images/secondaryToolbarButton-documentProperties.svg);
+  mask-image: var(--secondaryToolbarButton-documentProperties-icon);
 }
 
 .verticalToolbarSeparator {
@@ -3061,7 +2871,7 @@ html[dir="rtl"] .verticalToolbarSeparator {
 
 .horizontalToolbarSeparator {
   display: block;
-  margin: 6px 0 5px 0;
+  margin: 6px 0 5px;
   height: 1px;
   width: 100%;
   border-top: 1px solid rgba(222, 222, 222, 1);
@@ -3078,7 +2888,7 @@ html[dir="rtl"] .verticalToolbarSeparator {
 
 .toolbarField {
   padding: 4px 7px;
-  margin: 3px 0 3px 0;
+  margin: 3px 0;
   border-radius: 2px;
   background-color: rgba(255, 255, 255, 1);
   background-color: var(--field-bg-color);
@@ -3215,7 +3025,7 @@ html[dir="rtl"] #numPages.toolbarLabel {
 }
 
 .thumbnail {
-  margin: 0 10px 5px 10px;
+  margin: 0 10px 5px;
 }
 html[dir="ltr"] .thumbnail {
   float: left;
@@ -3234,7 +3044,7 @@ html[dir="rtl"] .thumbnail {
 
 .thumbnail:not([data-loaded]) {
   border: 1px dashed rgba(132, 132, 132, 1);
-  margin: -1px 9px 4px 9px;
+  margin: -1px 9px 4px;
 }
 
 .thumbnailImage {
@@ -3341,7 +3151,7 @@ html[dir="rtl"] .treeItem > .treeItems {
   margin-bottom: 1px;
   border-radius: 2px;
   color: rgba(0, 0, 0, 0.8);
-  color: var(--outline-color);
+  color: var(--treeitem-color);
   font-size: 13px;
   line-height: 15px;
   -webkit-user-select: none;
@@ -3356,7 +3166,7 @@ html[dir="rtl"] .treeItem > .treeItems {
 
   .treeItem > a {
   color: rgba(255, 255, 255, 0.8);
-  color: var(--outline-color);
+  color: var(--treeitem-color);
   }
 }
 html[dir="ltr"] .treeItem > a {
@@ -3383,30 +3193,16 @@ html[dir="rtl"] #layersView .treesItem > a > label {
   color: rgba(255, 255, 255, 0.5);
 }
 .treeItemToggler::before {
-  content: url(images/treeitem-expanded.svg);
-  content: var(--treeitem-expanded-icon);
-  display: inline-block;
-  position: absolute;
-  max-width: 16px;
-}
-@media (prefers-color-scheme: dark) {
-
-  .treeItemToggler::before {
-  content: url(images/treeitem-expanded-dark.svg);
-  content: var(--treeitem-expanded-icon);
-  }
+  -webkit-mask-image: url(images/treeitem-expanded.svg);
+  -webkit-mask-image: var(--treeitem-expanded-icon);
+  mask-image: url(images/treeitem-expanded.svg);
+  mask-image: var(--treeitem-expanded-icon);
 }
 .treeItemToggler.treeItemsHidden::before {
-  content: url(images/treeitem-collapsed.svg);
-  content: var(--treeitem-collapsed-icon);
-  max-width: 16px;
-}
-@media (prefers-color-scheme: dark) {
-
-  .treeItemToggler.treeItemsHidden::before {
-  content: url(images/treeitem-collapsed-dark.svg);
-  content: var(--treeitem-collapsed-icon);
-  }
+  -webkit-mask-image: url(images/treeitem-collapsed.svg);
+  -webkit-mask-image: var(--treeitem-collapsed-icon);
+  mask-image: url(images/treeitem-collapsed.svg);
+  mask-image: var(--treeitem-collapsed-icon);
 }
 html[dir="rtl"] .treeItemToggler.treeItemsHidden::before {
   transform: scaleX(-1);
@@ -3427,20 +3223,43 @@ html[dir="rtl"] .treeItemToggler::before {
   left: 4px;
 }
 
+.treeItem.selected > a {
+  background-color: rgba(0, 0, 0, 0.25);
+  background-color: var(--treeitem-selected-bg-color);
+  color: rgba(0, 0, 0, 0.9);
+  color: var(--treeitem-selected-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem.selected > a {
+  color: rgba(255, 255, 255, 0.9);
+  color: var(--treeitem-selected-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem.selected > a {
+  background-color: rgba(255, 255, 255, 0.25);
+  background-color: var(--treeitem-selected-bg-color);
+  }
+}
+
 .treeItemToggler:hover {
   background-color: rgba(0, 0, 0, 0.15);
   background-color: var(--sidebaritem-bg-color);
   background-clip: padding-box;
   border-radius: 2px;
   color: rgba(0, 0, 0, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
 }
 
 @media (prefers-color-scheme: dark) {
 
   .treeItemToggler:hover {
   color: rgba(255, 255, 255, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
   }
 }
 
@@ -3458,14 +3277,14 @@ html[dir="rtl"] .treeItemToggler::before {
   background-clip: padding-box;
   border-radius: 2px;
   color: rgba(0, 0, 0, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
 }
 
 @media (prefers-color-scheme: dark) {
 
   .treeItemToggler:hover + a {
   color: rgba(255, 255, 255, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
   }
 }
 
@@ -3483,14 +3302,14 @@ html[dir="rtl"] .treeItemToggler::before {
   background-clip: padding-box;
   border-radius: 2px;
   color: rgba(0, 0, 0, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
 }
 
 @media (prefers-color-scheme: dark) {
 
   .treeItemToggler:hover ~ .treeItems {
   color: rgba(255, 255, 255, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
   }
 }
 
@@ -3508,14 +3327,14 @@ html[dir="rtl"] .treeItemToggler::before {
   background-clip: padding-box;
   border-radius: 2px;
   color: rgba(0, 0, 0, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
 }
 
 @media (prefers-color-scheme: dark) {
 
   .treeItem > a:hover {
   color: rgba(255, 255, 255, 0.9);
-  color: var(--outline-hover-color);
+  color: var(--treeitem-hover-color);
   }
 }
 
@@ -3527,37 +3346,6 @@ html[dir="rtl"] .treeItemToggler::before {
   }
 }
 
-.treeItem.selected {
-  background-color: rgba(0, 0, 0, 1);
-  background-color: var(--outline-active-bg-color);
-  background-clip: padding-box;
-  color: rgba(0, 0, 0, 0.08);
-  color: var(--outline-active-color);
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .treeItem.selected {
-  color: rgba(255, 255, 255, 0.08);
-  color: var(--outline-active-color);
-  }
-}
-
-@media (prefers-color-scheme: dark) {
-
-  .treeItem.selected {
-  background-color: rgba(255, 255, 255, 1);
-  background-color: var(--outline-active-bg-color);
-  }
-}
-
-.noResults {
-  font-size: 12px;
-  color: rgba(255, 255, 255, 0.8);
-  font-style: italic;
-  cursor: default;
-}
-
 /* TODO: file FF bug to support ::-moz-selection:window-inactive
    so we can override the opaque grey background when the window is inactive;
    see https://bugzilla.mozilla.org/show_bug.cgi?id=706209 */
@@ -3595,9 +3383,6 @@ html[dir="rtl"] .treeItemToggler::before {
   background: none repeat scroll 0 0 var(--errorWrapper-bg-color);
   }
 }
-.loadingInProgress #errorWrapper {
-  top: 37px;
-}
 
 #errorMessageLeft {
   float: left;
@@ -3645,8 +3430,8 @@ html[dir="rtl"] .treeItemToggler::before {
 
 .overlayButton {
   width: auto;
-  margin: 3px 4px 2px 4px !important;
-  padding: 2px 11px 2px 11px;
+  margin: 3px 4px 2px !important;
+  padding: 2px 11px;
 }
 
 #overlayContainer {
@@ -3713,7 +3498,7 @@ html[dir="rtl"] .treeItemToggler::before {
 
 .dialog .separator {
   display: block;
-  margin: 4px 0 4px 0;
+  margin: 4px 0;
   height: 1px;
   width: 100%;
   background-color: rgba(0, 0, 0, 0.3);
@@ -3989,10 +3774,10 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
   }
 
   html[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer {
-    left: 0px !important;
+    left: 0 !important;
   }
   html[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer {
-    right: 0px !important;
+    right: 0 !important;
   }
 
   #outerContainer .hiddenLargeView,
diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html
index ed57f3f1c..7b8dd7663 100644
--- a/third-party/pdfjs/web/viewer.html
+++ b/third-party/pdfjs/web/viewer.html
@@ -42,24 +42,36 @@ See https://github.com/adobe-type-tools/cmap-resources
 
   </head>
 
-  <body tabindex="1" class="loadingInProgress">
+  <body tabindex="1">
     <div id="outerContainer">
 
       <div id="sidebarContainer">
         <div id="toolbarSidebar">
-          <div class="splitToolbarButton toggled">
-            <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" 
data-l10n-id="thumbs">
-               <span data-l10n-id="thumbs_label">Thumbnails</span>
-            </button>
-            <button id="viewOutline" class="toolbarButton" title="Show Document Outline (double-click to 
expand/collapse all items)" tabindex="3" data-l10n-id="document_outline">
-               <span data-l10n-id="document_outline_label">Document Outline</span>
-            </button>
-            <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" 
data-l10n-id="attachments">
-               <span data-l10n-id="attachments_label">Attachments</span>
-            </button>
-            <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all 
layers to the default state)" tabindex="5" data-l10n-id="layers">
-               <span data-l10n-id="layers_label">Layers</span>
-            </button>
+          <div id="toolbarSidebarLeft">
+            <div class="splitToolbarButton toggled">
+              <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" 
data-l10n-id="thumbs">
+                 <span data-l10n-id="thumbs_label">Thumbnails</span>
+              </button>
+              <button id="viewOutline" class="toolbarButton" title="Show Document Outline (double-click to 
expand/collapse all items)" tabindex="3" data-l10n-id="document_outline">
+                 <span data-l10n-id="document_outline_label">Document Outline</span>
+              </button>
+              <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" 
data-l10n-id="attachments">
+                 <span data-l10n-id="attachments_label">Attachments</span>
+              </button>
+              <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all 
layers to the default state)" tabindex="5" data-l10n-id="layers">
+                 <span data-l10n-id="layers_label">Layers</span>
+              </button>
+            </div>
+          </div>
+
+          <div id="toolbarSidebarRight">
+            <div id="outlineOptionsContainer" class="hidden">
+              <div class="verticalToolbarSeparator"></div>
+
+              <button id="currentOutlineItem" class="toolbarButton" disabled="disabled" title="Find Current 
Outline Item" tabindex="6" data-l10n-id="current_outline_item">
+                <span data-l10n-id="current_outline_item_label">Current Outline Item</span>
+              </button>
+            </div>
           </div>
         </div>
         <div id="sidebarContent">
@@ -72,7 +84,7 @@ See https://github.com/adobe-type-tools/cmap-resources
           <div id="layersView" class="hidden">
           </div>
         </div>
-        <div id="sidebarResizer" class="hidden"></div>
+        <div id="sidebarResizer"></div>
       </div>  <!-- sidebarContainer -->
 
       <div id="mainContainer">
diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
index 1d54e92c7..ed36e7f02 100644
--- a/third-party/pdfjs/web/viewer.js
+++ b/third-party/pdfjs/web/viewer.js
@@ -21,112 +21,46 @@
  * Javascript code in this page
  */
 
-/******/ (function(modules) { // webpackBootstrap
-/******/       // The module cache
-/******/       var installedModules = {};
-/******/
-/******/       // The require function
-/******/       function __webpack_require__(moduleId) {
-/******/
-/******/               // Check if module is in cache
-/******/               if(installedModules[moduleId]) {
-/******/                       return installedModules[moduleId].exports;
-/******/               }
-/******/               // Create a new module (and put it into the cache)
-/******/               var module = installedModules[moduleId] = {
-/******/                       i: moduleId,
-/******/                       l: false,
-/******/                       exports: {}
-/******/               };
-/******/
-/******/               // Execute the module function
-/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/               // Flag the module as loaded
-/******/               module.l = true;
-/******/
-/******/               // Return the exports of the module
-/******/               return module.exports;
-/******/       }
-/******/
-/******/
-/******/       // expose the modules object (__webpack_modules__)
-/******/       __webpack_require__.m = modules;
-/******/
-/******/       // expose the module cache
-/******/       __webpack_require__.c = installedModules;
-/******/
-/******/       // define getter function for harmony exports
-/******/       __webpack_require__.d = function(exports, name, getter) {
-/******/               if(!__webpack_require__.o(exports, name)) {
-/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/               }
-/******/       };
-/******/
-/******/       // define __esModule on exports
-/******/       __webpack_require__.r = function(exports) {
-/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/               }
-/******/               Object.defineProperty(exports, '__esModule', { value: true });
-/******/       };
-/******/
-/******/       // create a fake namespace object
-/******/       // mode & 1: value is a module id, require it
-/******/       // mode & 2: merge all properties of value into the ns
-/******/       // mode & 4: return value when already ns object
-/******/       // mode & 8|1: behave like require
-/******/       __webpack_require__.t = function(value, mode) {
-/******/               if(mode & 1) value = __webpack_require__(value);
-/******/               if(mode & 8) return value;
-/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/               var ns = Object.create(null);
-/******/               __webpack_require__.r(ns);
-/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/               if(mode & 2 && typeof value != 'string') for(var key in value) 
__webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/               return ns;
-/******/       };
-/******/
-/******/       // getDefaultExport function for compatibility with non-harmony modules
-/******/       __webpack_require__.n = function(module) {
-/******/               var getter = module && module.__esModule ?
-/******/                       function getDefault() { return module['default']; } :
-/******/                       function getModuleExports() { return module; };
-/******/               __webpack_require__.d(getter, 'a', getter);
-/******/               return getter;
-/******/       };
-/******/
-/******/       // Object.prototype.hasOwnProperty.call
-/******/       __webpack_require__.o = function(object, property) { return 
Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/       // __webpack_public_path__
-/******/       __webpack_require__.p = "";
-/******/
-/******/
-/******/       // Load entry module and return exports
-/******/       return __webpack_require__(__webpack_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
+/******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ([
 /* 0 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
 
-"use strict";
 
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+Object.defineProperty(exports, "PDFViewerApplicationOptions", ({
+  enumerable: true,
+  get: function () {
+    return _app_options.AppOptions;
+  }
+}));
+Object.defineProperty(exports, "PDFViewerApplication", ({
+  enumerable: true,
+  get: function () {
+    return _app.PDFViewerApplication;
+  }
+}));
+
+var _app_options = __webpack_require__(1);
 
+var _app = __webpack_require__(3);
+
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
+window.PDFViewerApplication = _app.PDFViewerApplication;
+window.PDFViewerApplicationOptions = _app_options.AppOptions;
 ;
-let pdfjsWebApp, pdfjsWebAppOptions;
-{
-  pdfjsWebApp = __webpack_require__(1);
-  pdfjsWebAppOptions = __webpack_require__(3);
-}
 ;
 {
   __webpack_require__(35);
 }
 ;
 {
-  __webpack_require__(40);
+  __webpack_require__(41);
 }
 
 function getViewerConfiguration() {
@@ -193,7 +127,9 @@ function getViewerConfiguration() {
       thumbnailView: document.getElementById("thumbnailView"),
       outlineView: document.getElementById("outlineView"),
       attachmentsView: document.getElementById("attachmentsView"),
-      layersView: document.getElementById("layersView")
+      layersView: document.getElementById("layersView"),
+      outlineOptionsContainer: document.getElementById("outlineOptionsContainer"),
+      currentOutlineItemButton: document.getElementById("currentOutlineItem")
     },
     sidebarResizer: {
       outerContainer: document.getElementById("outerContainer"),
@@ -256,8 +192,6 @@ function getViewerConfiguration() {
 
 function webViewerLoad() {
   const config = getViewerConfiguration();
-  window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;
-  window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions;
   const event = document.createEvent("CustomEvent");
   event.initCustomEvent("webviewerloaded", true, true, {
     source: window
@@ -270,7 +204,7 @@ function webViewerLoad() {
     document.dispatchEvent(event);
   }
 
-  pdfjsWebApp.PDFViewerApplication.run(config);
+  _app.PDFViewerApplication.run(config);
 }
 
 if (document.readyState === "interactive" || document.readyState === "complete") {
@@ -281,61 +215,363 @@ if (document.readyState === "interactive" || document.readyState === "complete")
 
 /***/ }),
 /* 1 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = void 0;
-
-var _ui_utils = __webpack_require__(2);
+}));
+exports.OptionKind = exports.AppOptions = void 0;
 
-var _app_options = __webpack_require__(3);
+var _viewer_compatibility = __webpack_require__(2);
 
-var _pdfjsLib = __webpack_require__(5);
+const OptionKind = {
+  VIEWER: 0x02,
+  API: 0x04,
+  WORKER: 0x08,
+  PREFERENCE: 0x80
+};
+exports.OptionKind = OptionKind;
+const defaultOptions = {
+  cursorToolOnLoad: {
+    value: 0,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  defaultUrl: {
+    value: "compressed.tracemonkey-pldi-09.pdf",
+    kind: OptionKind.VIEWER
+  },
+  defaultZoomValue: {
+    value: "",
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  disableHistory: {
+    value: false,
+    kind: OptionKind.VIEWER
+  },
+  disablePageLabels: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  enablePermissions: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  enablePrintAutoRotate: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  enableScripting: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  enableWebGL: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  externalLinkRel: {
+    value: "noopener noreferrer nofollow",
+    kind: OptionKind.VIEWER
+  },
+  externalLinkTarget: {
+    value: 0,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  historyUpdateUrl: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  ignoreDestinationZoom: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  imageResourcesPath: {
+    value: "./images/",
+    kind: OptionKind.VIEWER
+  },
+  maxCanvasPixels: {
+    value: 16777216,
+    compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels,
+    kind: OptionKind.VIEWER
+  },
+  pdfBugEnabled: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  printResolution: {
+    value: 150,
+    kind: OptionKind.VIEWER
+  },
+  renderer: {
+    value: "canvas",
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  renderInteractiveForms: {
+    value: true,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  sidebarViewOnLoad: {
+    value: -1,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  scrollModeOnLoad: {
+    value: -1,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  spreadModeOnLoad: {
+    value: -1,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  textLayerMode: {
+    value: 1,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  useOnlyCssZoom: {
+    value: false,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  viewerCssTheme: {
+    value: 0,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  viewOnLoad: {
+    value: 0,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
+  cMapPacked: {
+    value: true,
+    kind: OptionKind.API
+  },
+  cMapUrl: {
+    value: "../web/cmaps/",
+    kind: OptionKind.API
+  },
+  disableAutoFetch: {
+    value: false,
+    kind: OptionKind.API + OptionKind.PREFERENCE
+  },
+  disableFontFace: {
+    value: false,
+    kind: OptionKind.API + OptionKind.PREFERENCE
+  },
+  disableRange: {
+    value: false,
+    kind: OptionKind.API + OptionKind.PREFERENCE
+  },
+  disableStream: {
+    value: false,
+    kind: OptionKind.API + OptionKind.PREFERENCE
+  },
+  docBaseUrl: {
+    value: "",
+    kind: OptionKind.API
+  },
+  fontExtraProperties: {
+    value: false,
+    kind: OptionKind.API
+  },
+  isEvalSupported: {
+    value: true,
+    kind: OptionKind.API
+  },
+  maxImageSize: {
+    value: -1,
+    kind: OptionKind.API
+  },
+  pdfBug: {
+    value: false,
+    kind: OptionKind.API
+  },
+  verbosity: {
+    value: 1,
+    kind: OptionKind.API
+  },
+  workerPort: {
+    value: null,
+    kind: OptionKind.WORKER
+  },
+  workerSrc: {
+    value: "../build/pdf.worker.js",
+    kind: OptionKind.WORKER
+  }
+};
+{
+  defaultOptions.disablePreferences = {
+    value: false,
+    kind: OptionKind.VIEWER
+  };
+  defaultOptions.locale = {
+    value: typeof navigator !== "undefined" ? navigator.language : "en-US",
+    kind: OptionKind.VIEWER
+  };
+  defaultOptions.sandboxBundleSrc = {
+    value: "../build/pdf.sandbox.js",
+    kind: OptionKind.VIEWER
+  };
+}
+const userOptions = Object.create(null);
 
-var _pdf_cursor_tools = __webpack_require__(6);
+class AppOptions {
+  constructor() {
+    throw new Error("Cannot initialize AppOptions.");
+  }
 
-var _pdf_rendering_queue = __webpack_require__(8);
+  static get(name) {
+    const userOption = userOptions[name];
 
-var _pdf_sidebar = __webpack_require__(9);
+    if (userOption !== undefined) {
+      return userOption;
+    }
 
-var _overlay_manager = __webpack_require__(10);
+    const defaultOption = defaultOptions[name];
 
-var _password_prompt = __webpack_require__(11);
+    if (defaultOption !== undefined) {
+      return defaultOption.compatibility || defaultOption.value;
+    }
 
-var _pdf_attachment_viewer = __webpack_require__(12);
+    return undefined;
+  }
 
-var _pdf_document_properties = __webpack_require__(14);
+  static getAll(kind = null) {
+    const options = Object.create(null);
 
-var _pdf_find_bar = __webpack_require__(15);
+    for (const name in defaultOptions) {
+      const defaultOption = defaultOptions[name];
 
-var _pdf_find_controller = __webpack_require__(16);
+      if (kind) {
+        if ((kind & defaultOption.kind) === 0) {
+          continue;
+        }
 
-var _pdf_history = __webpack_require__(18);
+        if (kind === OptionKind.PREFERENCE) {
+          const value = defaultOption.value,
+                valueType = typeof value;
 
-var _pdf_layer_viewer = __webpack_require__(19);
+          if (valueType === "boolean" || valueType === "string" || valueType === "number" && 
Number.isInteger(value)) {
+            options[name] = value;
+            continue;
+          }
 
-var _pdf_link_service = __webpack_require__(20);
+          throw new Error(`Invalid type for preference: ${name}`);
+        }
+      }
 
-var _pdf_outline_viewer = __webpack_require__(21);
+      const userOption = userOptions[name];
+      options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || 
defaultOption.value;
+    }
 
-var _pdf_presentation_mode = __webpack_require__(22);
+    return options;
+  }
 
-var _pdf_sidebar_resizer = __webpack_require__(23);
+  static set(name, value) {
+    userOptions[name] = value;
+  }
 
-var _pdf_thumbnail_viewer = __webpack_require__(24);
+  static setAll(options) {
+    for (const name in options) {
+      userOptions[name] = options[name];
+    }
+  }
 
-var _pdf_viewer = __webpack_require__(26);
+  static remove(name) {
+    delete userOptions[name];
+  }
+
+}
+
+exports.AppOptions = AppOptions;
+
+/***/ }),
+/* 2 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.viewerCompatibilityParams = void 0;
+const compatibilityParams = Object.create(null);
+{
+  const userAgent = typeof navigator !== "undefined" && navigator.userAgent || "";
+  const platform = typeof navigator !== "undefined" && navigator.platform || "";
+  const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1;
+  const isAndroid = /Android/.test(userAgent);
+  const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
+  const isIOSChrome = /CriOS/.test(userAgent);
+
+  (function checkOnBlobSupport() {
+    if (isIOSChrome) {
+      compatibilityParams.disableCreateObjectURL = true;
+    }
+  })();
+
+  (function checkCanvasSizeLimitation() {
+    if (isIOS || isAndroid) {
+      compatibilityParams.maxCanvasPixels = 5242880;
+    }
+  })();
+}
+const viewerCompatibilityParams = Object.freeze(compatibilityParams);
+exports.viewerCompatibilityParams = viewerCompatibilityParams;
+
+/***/ }),
+/* 3 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0;
+
+var _ui_utils = __webpack_require__(4);
+
+var _app_options = __webpack_require__(1);
+
+var _pdfjsLib = __webpack_require__(5);
+
+var _pdf_cursor_tools = __webpack_require__(6);
+
+var _pdf_rendering_queue = __webpack_require__(8);
+
+var _overlay_manager = __webpack_require__(9);
+
+var _password_prompt = __webpack_require__(10);
+
+var _pdf_attachment_viewer = __webpack_require__(11);
+
+var _pdf_document_properties = __webpack_require__(13);
+
+var _pdf_find_bar = __webpack_require__(14);
+
+var _pdf_find_controller = __webpack_require__(15);
+
+var _pdf_history = __webpack_require__(17);
+
+var _pdf_layer_viewer = __webpack_require__(18);
+
+var _pdf_link_service = __webpack_require__(19);
+
+var _pdf_outline_viewer = __webpack_require__(20);
+
+var _pdf_presentation_mode = __webpack_require__(21);
+
+var _pdf_sidebar = __webpack_require__(22);
+
+var _pdf_sidebar_resizer = __webpack_require__(23);
+
+var _pdf_thumbnail_viewer = __webpack_require__(24);
+
+var _pdf_viewer = __webpack_require__(26);
 
 var _secondary_toolbar = __webpack_require__(31);
 
 var _toolbar = __webpack_require__(33);
 
-var _viewer_compatibility = __webpack_require__(4);
+var _viewer_compatibility = __webpack_require__(2);
 
 var _view_history = __webpack_require__(34);
 
@@ -349,6 +585,11 @@ const ViewOnLoad = {
   PREVIOUS: 0,
   INITIAL: 1
 };
+const ViewerCssTheme = {
+  AUTOMATIC: 0,
+  LIGHT: 1,
+  DARK: 2
+};
 const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", 
"2.2", "2.3"];
 const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", 
"adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", 
"prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", 
"antenna house", "aspose.cells", "fpdf"];
 
@@ -363,7 +604,7 @@ class DefaultExternalServices {
 
   static initPassiveLoading(callbacks) {}
 
-  static fallback(data, callback) {}
+  static async fallback(data) {}
 
   static reportTelemetry(data) {}
 
@@ -379,6 +620,10 @@ class DefaultExternalServices {
     throw new Error("Not implemented: createL10n");
   }
 
+  static createScripting(options) {
+    throw new Error("Not implemented: createScripting");
+  }
+
   static get supportsIntegratedFind() {
     return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false);
   }
@@ -436,17 +681,26 @@ const PDFViewerApplication = {
   url: "",
   baseUrl: "",
   externalServices: DefaultExternalServices,
-  _boundEvents: {},
-  contentDispositionFilename: null,
+  _boundEvents: Object.create(null),
+  documentInfo: null,
+  metadata: null,
+  _contentDispositionFilename: null,
+  _contentLength: null,
   triggerDelayedFallback: null,
   _saveInProgress: false,
   _wheelUnusedTicks: 0,
+  _idleCallbacks: new Set(),
+  _scriptingInstance: null,
+  _mouseState: Object.create(null),
 
   async initialize(appConfig) {
     this.preferences = this.externalServices.createPreferences();
     this.appConfig = appConfig;
     await this._readPreferences();
     await this._parseHashParameters();
+
+    this._forceCssTheme();
+
     await this._initializeL10n();
 
     if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === 
_pdfjsLib.LinkTarget.NONE) {
@@ -472,13 +726,9 @@ const PDFViewerApplication = {
     }
 
     try {
-      const prefs = await this.preferences.getAll();
-
-      for (const name in prefs) {
-        _app_options.AppOptions.set(name, prefs[name]);
-      }
+      _app_options.AppOptions.setAll(await this.preferences.getAll());
     } catch (reason) {
-      console.error(`_readPreferences: "${reason.message}".`);
+      console.error(`_readPreferences: "${reason?.message}".`);
     }
   },
 
@@ -557,6 +807,10 @@ const PDFViewerApplication = {
       _app_options.AppOptions.set("locale", hashParams.locale);
     }
 
+    if (waitOn.length === 0) {
+      return undefined;
+    }
+
     return Promise.all(waitOn).catch(reason => {
       console.error(`_parseHashParameters: "${reason.message}".`);
     });
@@ -570,6 +824,41 @@ const PDFViewerApplication = {
     document.getElementsByTagName("html")[0].dir = dir;
   },
 
+  _forceCssTheme() {
+    const cssTheme = _app_options.AppOptions.get("viewerCssTheme");
+
+    if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) {
+      return;
+    }
+
+    try {
+      const styleSheet = document.styleSheets[0];
+      const cssRules = styleSheet?.cssRules || [];
+
+      for (let i = 0, ii = cssRules.length; i < ii; i++) {
+        const rule = cssRules[i];
+
+        if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") {
+          if (cssTheme === ViewerCssTheme.LIGHT) {
+            styleSheet.deleteRule(i);
+            return;
+          }
+
+          const darkRules = /^@media \(prefers-color-scheme: dark\) 
{\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText);
+
+          if (darkRules?.[1]) {
+            styleSheet.deleteRule(i);
+            styleSheet.insertRule(darkRules[1], i);
+          }
+
+          return;
+        }
+      }
+    } catch (reason) {
+      console.error(`_forceCssTheme: "${reason?.message}".`);
+    }
+  },
+
   async _initializeViewerComponents() {
     const appConfig = this.appConfig;
     const eventBus = appConfig.eventBus || new _ui_utils.EventBus({
@@ -612,7 +901,9 @@ const PDFViewerApplication = {
       renderInteractiveForms: _app_options.AppOptions.get("renderInteractiveForms"),
       enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"),
       useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"),
-      maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels")
+      maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"),
+      enableScripting: _app_options.AppOptions.get("enableScripting"),
+      mouseState: this._mouseState
     });
     pdfRenderingQueue.setViewer(this.pdfViewer);
     pdfLinkService.setViewer(this.pdfViewer);
@@ -743,10 +1034,6 @@ const PDFViewerApplication = {
     this.pdfViewer.currentPageNumber = val;
   },
 
-  get printing() {
-    return !!this.printService;
-  },
-
   get supportsPrinting() {
     return PDFPrintServiceFactory.instance.supportsPrinting;
   },
@@ -754,9 +1041,9 @@ const PDFViewerApplication = {
   get supportsFullscreen() {
     let support;
     const doc = document.documentElement;
-    support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || 
doc.msRequestFullscreen);
+    support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen);
 
-    if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || 
document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) {
+    if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || 
document.webkitFullscreenEnabled === false) {
       support = false;
     }
 
@@ -808,6 +1095,52 @@ const PDFViewerApplication = {
     document.title = title;
   },
 
+  get _docFilename() {
+    return this._contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
+  },
+
+  _cancelIdleCallbacks() {
+    if (!this._idleCallbacks.size) {
+      return;
+    }
+
+    for (const callback of this._idleCallbacks) {
+      window.cancelIdleCallback(callback);
+    }
+
+    this._idleCallbacks.clear();
+  },
+
+  async _destroyScriptingInstance() {
+    if (!this._scriptingInstance) {
+      return;
+    }
+
+    const {
+      scripting,
+      internalEvents,
+      domEvents
+    } = this._scriptingInstance;
+
+    try {
+      await scripting.destroySandbox();
+    } catch (ex) {}
+
+    for (const [name, listener] of internalEvents) {
+      this.eventBus._off(name, listener);
+    }
+
+    internalEvents.clear();
+
+    for (const [name, listener] of domEvents) {
+      window.removeEventListener(name, listener);
+    }
+
+    domEvents.clear();
+    delete this._mouseState.isDown;
+    this._scriptingInstance = null;
+  },
+
   async close() {
     const errorWrapper = this.appConfig.errorWrapper.container;
     errorWrapper.setAttribute("hidden", "true");
@@ -816,7 +1149,8 @@ const PDFViewerApplication = {
       return undefined;
     }
 
-    const promise = this.pdfLoadingTask.destroy();
+    const promises = [];
+    promises.push(this.pdfLoadingTask.destroy());
     this.pdfLoadingTask = null;
 
     if (this.pdfDocument) {
@@ -833,9 +1167,16 @@ const PDFViewerApplication = {
     this.downloadComplete = false;
     this.url = "";
     this.baseUrl = "";
-    this.contentDispositionFilename = null;
+    this.documentInfo = null;
+    this.metadata = null;
+    this._contentDispositionFilename = null;
+    this._contentLength = null;
     this.triggerDelayedFallback = null;
     this._saveInProgress = false;
+
+    this._cancelIdleCallbacks();
+
+    promises.push(this._destroyScriptingInstance());
     this.pdfSidebar.reset();
     this.pdfOutlineViewer.reset();
     this.pdfAttachmentViewer.reset();
@@ -856,7 +1197,8 @@ const PDFViewerApplication = {
       PDFBug.cleanup();
     }
 
-    return promise;
+    await Promise.all(promises);
+    return undefined;
   },
 
   async open(file, args) {
@@ -894,13 +1236,7 @@ const PDFViewerApplication = {
 
     if (args) {
       for (const key in args) {
-        const value = args[key];
-
-        if (key === "length") {
-          this.pdfDocumentProperties.setFileSize(value);
-        }
-
-        parameters[key] = value;
+        parameters[key] = args[key];
       }
     }
 
@@ -928,7 +1264,7 @@ const PDFViewerApplication = {
         return undefined;
       }
 
-      const message = exception && exception.message;
+      const message = exception?.message;
       let loadingErrorMessage;
 
       if (exception instanceof _pdfjsLib.InvalidPDFException) {
@@ -957,13 +1293,9 @@ const PDFViewerApplication = {
       downloadManager.downloadUrl(url, filename);
     }
 
-    const url = this.baseUrl;
-    const filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
-    const downloadManager = this.downloadManager;
-
-    downloadManager.onerror = err => {
-      this.error(`PDF failed to download: ${err}`);
-    };
+    const downloadManager = this.downloadManager,
+          url = this.baseUrl,
+          filename = this._docFilename;
 
     if (!this.pdfDocument || !this.downloadComplete) {
       downloadByUrl();
@@ -978,20 +1310,16 @@ const PDFViewerApplication = {
     }).catch(downloadByUrl);
   },
 
-  save({
+  async save({
     sourceEventType = "download"
   } = {}) {
     if (this._saveInProgress) {
       return;
     }
 
-    const url = this.baseUrl;
-    const filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
-    const downloadManager = this.downloadManager;
-
-    downloadManager.onerror = err => {
-      this.error(`PDF failed to be saved: ${err}`);
-    };
+    const downloadManager = this.downloadManager,
+          url = this.baseUrl,
+          filename = this._docFilename;
 
     if (!this.pdfDocument || !this.downloadComplete) {
       this.download({
@@ -1001,6 +1329,10 @@ const PDFViewerApplication = {
     }
 
     this._saveInProgress = true;
+    await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "WillSave"
+    });
     this.pdfDocument.saveDocument(this.pdfDocument.annotationStorage).then(data => {
       const blob = new Blob([data], {
         type: "application/pdf"
@@ -1010,11 +1342,23 @@ const PDFViewerApplication = {
       this.download({
         sourceEventType
       });
-    }).finally(() => {
+    }).finally(async () => {
+      await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+        id: "doc",
+        name: "DidSave"
+      });
       this._saveInProgress = false;
     });
   },
 
+  downloadOrSave(options) {
+    if (this.pdfDocument?.annotationStorage.size > 0) {
+      this.save(options);
+    } else {
+      this.download(options);
+    }
+  },
+
   _delayedFallback(featureId) {
     this.externalServices.reportTelemetry({
       type: "unsupportedFeature",
@@ -1043,12 +1387,12 @@ const PDFViewerApplication = {
     this.externalServices.fallback({
       featureId,
       url: this.baseUrl
-    }, function response(download) {
+    }).then(download => {
       if (!download) {
         return;
       }
 
-      PDFViewerApplication.download({
+      this.download({
         sourceEventType: "download"
       });
     });
@@ -1150,7 +1494,10 @@ const PDFViewerApplication = {
 
   load(pdfDocument) {
     this.pdfDocument = pdfDocument;
-    pdfDocument.getDownloadInfo().then(() => {
+    pdfDocument.getDownloadInfo().then(({
+      length
+    }) => {
+      this._contentLength = length;
       this.downloadComplete = true;
       this.loadingBar.hide();
       firstPagePromise.then(() => {
@@ -1168,16 +1515,6 @@ const PDFViewerApplication = {
     baseDocumentUrl = null;
     this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);
     this.pdfDocumentProperties.setDocument(pdfDocument, this.url);
-    const annotationStorage = pdfDocument.annotationStorage;
-
-    annotationStorage.onSetModified = function () {
-      window.addEventListener("beforeunload", beforeUnload);
-    };
-
-    annotationStorage.onResetModified = function () {
-      window.removeEventListener("beforeunload", beforeUnload);
-    };
-
     const pdfViewer = this.pdfViewer;
     pdfViewer.setDocument(pdfDocument);
     const {
@@ -1193,7 +1530,7 @@ const PDFViewerApplication = {
       scrollLeft: "0",
       scrollTop: "0",
       rotation: null,
-      sidebarView: _pdf_sidebar.SidebarView.UNKNOWN,
+      sidebarView: _ui_utils.SidebarView.UNKNOWN,
       scrollMode: _ui_utils.ScrollMode.UNKNOWN,
       spreadMode: _ui_utils.SpreadMode.UNKNOWN
     }).catch(() => {
@@ -1201,6 +1538,9 @@ const PDFViewerApplication = {
     });
     firstPagePromise.then(pdfPage => {
       this.loadingBar.setWidth(this.appConfig.viewerContainer);
+
+      this._initializeAnnotationStorageCallbacks(pdfDocument);
+
       Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, 
openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {
         const viewOnLoad = _app_options.AppOptions.get("viewOnLoad");
 
@@ -1227,7 +1567,7 @@ const PDFViewerApplication = {
           hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + 
`${stored.scrollLeft},${stored.scrollTop}`;
           rotation = parseInt(stored.rotation, 10);
 
-          if (sidebarView === _pdf_sidebar.SidebarView.UNKNOWN) {
+          if (sidebarView === _ui_utils.SidebarView.UNKNOWN) {
             sidebarView = stored.sidebarView | 0;
           }
 
@@ -1240,7 +1580,7 @@ const PDFViewerApplication = {
           }
         }
 
-        if (pageMode && sidebarView === _pdf_sidebar.SidebarView.UNKNOWN) {
+        if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) {
           sidebarView = apiPageModeToSidebarView(pageMode);
         }
 
@@ -1291,7 +1631,8 @@ const PDFViewerApplication = {
     onePageRendered.then(() => {
       pdfDocument.getOutline().then(outline => {
         this.pdfOutlineViewer.render({
-          outline
+          outline,
+          pdfDocument
         });
       });
       pdfDocument.getAttachments().then(attachments => {
@@ -1305,6 +1646,20 @@ const PDFViewerApplication = {
           pdfDocument
         });
       });
+
+      if ("requestIdleCallback" in window) {
+        const callback = window.requestIdleCallback(() => {
+          this._collectTelemetry(pdfDocument);
+
+          this._idleCallbacks.delete(callback);
+        }, {
+          timeout: 1000
+        });
+
+        this._idleCallbacks.add(callback);
+      }
+
+      this._initializeJavaScript(pdfDocument);
     });
 
     this._initializePageLabels(pdfDocument);
@@ -1312,104 +1667,353 @@ const PDFViewerApplication = {
     this._initializeMetadata(pdfDocument);
   },
 
-  async _initializeAutoPrint(pdfDocument, openActionPromise) {
-    const [openAction, javaScript] = await Promise.all([openActionPromise, pdfDocument.getJavaScript()]);
-
-    if (pdfDocument !== this.pdfDocument) {
+  async _initializeJavaScript(pdfDocument) {
+    if (!_app_options.AppOptions.get("enableScripting")) {
       return;
     }
 
-    let triggerAutoPrint = false;
+    const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), 
pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]);
 
-    if (openAction && openAction.action === "Print") {
-      triggerAutoPrint = true;
+    if (!objects && !docActions) {
+      return;
     }
 
-    if (javaScript) {
-      javaScript.some(js => {
-        if (!js) {
-          return false;
-        }
-
-        console.warn("Warning: JavaScript is not supported");
+    if (pdfDocument !== this.pdfDocument) {
+      return;
+    }
 
-        this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript);
+    const scripting = this.externalServices.createScripting({
+      sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc")
+    });
+    const internalEvents = new Map(),
+          domEvents = new Map();
+    this._scriptingInstance = {
+      scripting,
+      ready: false,
+      internalEvents,
+      domEvents
+    };
 
-        return true;
+    if (!this.documentInfo) {
+      await new Promise(resolve => {
+        this.eventBus._on("metadataloaded", evt => {
+          resolve();
+        }, {
+          once: true
+        });
       });
 
-      if (!triggerAutoPrint) {
-        for (const js of javaScript) {
-          if (js && _ui_utils.AutoPrintRegExp.test(js)) {
-            triggerAutoPrint = true;
-            break;
-          }
-        }
+      if (pdfDocument !== this.pdfDocument) {
+        return;
       }
     }
 
-    if (!this.supportsPrinting) {
-      return;
-    }
-
-    if (triggerAutoPrint) {
-      setTimeout(function () {
-        window.print();
+    if (!this._contentLength) {
+      await new Promise(resolve => {
+        this.eventBus._on("documentloaded", evt => {
+          resolve();
+        }, {
+          once: true
+        });
       });
-    }
-  },
-
-  async _initializeMetadata(pdfDocument) {
-    const {
-      info,
-      metadata,
-      contentDispositionFilename
-    } = await pdfDocument.getMetadata();
 
-    if (pdfDocument !== this.pdfDocument) {
-      return;
+      if (pdfDocument !== this.pdfDocument) {
+        return;
+      }
     }
 
-    this.documentInfo = info;
-    this.metadata = metadata;
-    this.contentDispositionFilename = contentDispositionFilename;
-    console.log(`PDF ${pdfDocument.fingerprint} [${info.PDFFormatVersion} ` + `${(info.Producer || 
"-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"}` + 
`${this.pdfViewer.enableWebGL ? " [WebGL]" : ""})`);
-    let pdfTitle;
-    const infoTitle = info && info.Title;
-
-    if (infoTitle) {
-      pdfTitle = infoTitle;
-    }
+    const updateFromSandbox = ({
+      detail
+    }) => {
+      const {
+        id,
+        command,
+        value
+      } = detail;
+
+      if (!id) {
+        switch (command) {
+          case "clear":
+            console.clear();
+            break;
 
-    const metadataTitle = metadata && metadata.get("dc:title");
+          case "error":
+            console.error(value);
+            break;
 
-    if (metadataTitle) {
-      if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) {
-        pdfTitle = metadataTitle;
-      }
-    }
+          case "layout":
+            this.pdfViewer.spreadMode = apiPageLayoutToSpreadMode(value);
+            break;
 
-    if (pdfTitle) {
-      this.setTitle(`${pdfTitle} - ${contentDispositionFilename || document.title}`);
-    } else if (contentDispositionFilename) {
-      this.setTitle(contentDispositionFilename);
-    }
+          case "page-num":
+            this.pdfViewer.currentPageNumber = value + 1;
+            break;
 
-    if (info.IsXFAPresent && !info.IsAcroFormPresent) {
-      console.warn("Warning: XFA is not supported");
+          case "print":
+            this.pdfViewer.pagesPromise.then(() => {
+              this.triggerPrinting();
+            });
+            break;
 
-      this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
-    } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) {
-      console.warn("Warning: Interactive form support is not enabled");
+          case "println":
+            console.log(value);
+            break;
 
-      this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
-    }
+          case "zoom":
+            this.pdfViewer.currentScaleValue = value;
+            break;
+        }
 
-    let versionId = "other";
+        return;
+      }
 
-    if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {
-      versionId = `v${info.PDFFormatVersion.replace(".", "_")}`;
-    }
+      const element = document.getElementById(id);
+
+      if (element) {
+        element.dispatchEvent(new CustomEvent("updatefromsandbox", {
+          detail
+        }));
+      } else {
+        if (value !== undefined && value !== null) {
+          pdfDocument.annotationStorage.setValue(id, value);
+        }
+      }
+    };
+
+    internalEvents.set("updatefromsandbox", updateFromSandbox);
+    const visitedPages = new Map();
+
+    const pageOpen = ({
+      pageNumber,
+      actionsPromise
+    }) => {
+      visitedPages.set(pageNumber, (async () => {
+        let actions = null;
+
+        if (!visitedPages.has(pageNumber)) {
+          actions = await actionsPromise;
+
+          if (pdfDocument !== this.pdfDocument) {
+            return;
+          }
+        }
+
+        await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+          id: "page",
+          name: "PageOpen",
+          pageNumber,
+          actions
+        });
+      })());
+    };
+
+    const pageClose = async ({
+      pageNumber
+    }) => {
+      const actionsPromise = visitedPages.get(pageNumber);
+
+      if (!actionsPromise) {
+        return;
+      }
+
+      visitedPages.set(pageNumber, null);
+      await actionsPromise;
+
+      if (pdfDocument !== this.pdfDocument) {
+        return;
+      }
+
+      await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+        id: "page",
+        name: "PageClose",
+        pageNumber
+      });
+    };
+
+    internalEvents.set("pageopen", pageOpen);
+    internalEvents.set("pageclose", pageClose);
+
+    const dispatchEventInSandbox = ({
+      detail
+    }) => {
+      scripting.dispatchEventInSandbox(detail);
+    };
+
+    internalEvents.set("dispatcheventinsandbox", dispatchEventInSandbox);
+
+    const mouseDown = event => {
+      this._mouseState.isDown = true;
+    };
+
+    domEvents.set("mousedown", mouseDown);
+
+    const mouseUp = event => {
+      this._mouseState.isDown = false;
+    };
+
+    domEvents.set("mouseup", mouseUp);
+
+    for (const [name, listener] of internalEvents) {
+      this.eventBus._on(name, listener);
+    }
+
+    for (const [name, listener] of domEvents) {
+      window.addEventListener(name, listener);
+    }
+
+    try {
+      await scripting.createSandbox({
+        objects,
+        calculationOrder,
+        appInfo: {
+          platform: navigator.platform,
+          language: navigator.language
+        },
+        docInfo: { ...this.documentInfo,
+          baseURL: this.baseUrl,
+          filesize: this._contentLength,
+          filename: this._docFilename,
+          metadata: this.metadata?.getRaw(),
+          authors: this.metadata?.get("dc:creator"),
+          numPages: pdfDocument.numPages,
+          URL: this.url,
+          actions: docActions
+        }
+      });
+
+      if (this.externalServices.isInAutomation) {
+        this.eventBus.dispatch("sandboxcreated", {
+          source: this
+        });
+      }
+    } catch (error) {
+      console.error(`_initializeJavaScript: "${error?.message}".`);
+
+      this._destroyScriptingInstance();
+
+      return;
+    }
+
+    await scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "Open"
+    });
+    await this.pdfViewer.initializeScriptingEvents();
+    Promise.resolve().then(() => {
+      if (this._scriptingInstance) {
+        this._scriptingInstance.ready = true;
+      }
+    });
+  },
+
+  async _collectTelemetry(pdfDocument) {
+    const markInfo = await this.pdfDocument.getMarkInfo();
+
+    if (pdfDocument !== this.pdfDocument) {
+      return;
+    }
+
+    const tagged = markInfo?.Marked || false;
+    this.externalServices.reportTelemetry({
+      type: "tagged",
+      tagged
+    });
+  },
+
+  async _initializeAutoPrint(pdfDocument, openActionPromise) {
+    const [openAction, javaScript] = await Promise.all([openActionPromise, 
!_app_options.AppOptions.get("enableScripting") ? pdfDocument.getJavaScript() : null]);
+
+    if (pdfDocument !== this.pdfDocument) {
+      return;
+    }
+
+    let triggerAutoPrint = false;
+
+    if (openAction?.action === "Print") {
+      triggerAutoPrint = true;
+    }
+
+    if (javaScript) {
+      javaScript.some(js => {
+        if (!js) {
+          return false;
+        }
+
+        console.warn("Warning: JavaScript is not supported");
+
+        this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript);
+
+        return true;
+      });
+
+      if (!triggerAutoPrint) {
+        for (const js of javaScript) {
+          if (js && _ui_utils.AutoPrintRegExp.test(js)) {
+            triggerAutoPrint = true;
+            break;
+          }
+        }
+      }
+    }
+
+    if (triggerAutoPrint) {
+      this.triggerPrinting();
+    }
+  },
+
+  async _initializeMetadata(pdfDocument) {
+    const {
+      info,
+      metadata,
+      contentDispositionFilename,
+      contentLength
+    } = await pdfDocument.getMetadata();
+
+    if (pdfDocument !== this.pdfDocument) {
+      return;
+    }
+
+    this.documentInfo = info;
+    this.metadata = metadata;
+    this._contentDispositionFilename = contentDispositionFilename;
+    this._contentLength ?? (this._contentLength = contentLength);
+    console.log(`PDF ${pdfDocument.fingerprint} [${info.PDFFormatVersion} ` + `${(info.Producer || 
"-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"}` + 
`${this.pdfViewer.enableWebGL ? " [WebGL]" : ""})`);
+    let pdfTitle;
+    const infoTitle = info && info.Title;
+
+    if (infoTitle) {
+      pdfTitle = infoTitle;
+    }
+
+    const metadataTitle = metadata && metadata.get("dc:title");
+
+    if (metadataTitle) {
+      if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) {
+        pdfTitle = metadataTitle;
+      }
+    }
+
+    if (pdfTitle) {
+      this.setTitle(`${pdfTitle} - ${contentDispositionFilename || document.title}`);
+    } else if (contentDispositionFilename) {
+      this.setTitle(contentDispositionFilename);
+    }
+
+    if (info.IsXFAPresent && !info.IsAcroFormPresent) {
+      console.warn("Warning: XFA is not supported");
+
+      this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
+    } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) {
+      console.warn("Warning: Interactive form support is not enabled");
+
+      this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
+    }
+
+    let versionId = "other";
+
+    if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {
+      versionId = `v${info.PDFFormatVersion.replace(".", "_")}`;
+    }
 
     let generatorId = "other";
 
@@ -1420,7 +2024,7 @@ const PDFViewerApplication = {
           return false;
         }
 
-        generatorId = generator.replace(/[ .\-]/g, "_");
+        generatorId = generator.replace(/[ .-]/g, "_");
         return true;
       });
     }
@@ -1439,6 +2043,9 @@ const PDFViewerApplication = {
       generator: generatorId,
       formType
     });
+    this.eventBus.dispatch("metadataloaded", {
+      source: this
+    });
   },
 
   async _initializePageLabels(pdfDocument) {
@@ -1525,6 +2132,24 @@ const PDFViewerApplication = {
     }
   },
 
+  _initializeAnnotationStorageCallbacks(pdfDocument) {
+    if (pdfDocument !== this.pdfDocument) {
+      return;
+    }
+
+    const {
+      annotationStorage
+    } = pdfDocument;
+
+    annotationStorage.onSetModified = function () {
+      window.addEventListener("beforeunload", beforeUnload);
+    };
+
+    annotationStorage.onResetModified = function () {
+      window.removeEventListener("beforeunload", beforeUnload);
+    };
+  },
+
   setInitialView(storedHash, {
     rotation,
     sidebarView,
@@ -1583,12 +2208,17 @@ const PDFViewerApplication = {
   },
 
   forceRendering() {
-    this.pdfRenderingQueue.printing = this.printing;
+    this.pdfRenderingQueue.printing = !!this.printService;
     this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible;
     this.pdfRenderingQueue.renderHighestPriority();
   },
 
   beforePrint() {
+    this._scriptingInstance?.scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "WillPrint"
+    });
+
     if (this.printService) {
       return;
     }
@@ -1623,6 +2253,11 @@ const PDFViewerApplication = {
   },
 
   afterPrint() {
+    this._scriptingInstance?.scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "DidPrint"
+    });
+
     if (this.printService) {
       this.printService.destroy();
       this.printService = null;
@@ -1652,6 +2287,14 @@ const PDFViewerApplication = {
     this.pdfPresentationMode.request();
   },
 
+  triggerPrinting() {
+    if (!this.supportsPrinting) {
+      return;
+    }
+
+    window.print();
+  },
+
   bindEvents() {
     const {
       eventBus,
@@ -1736,6 +2379,14 @@ const PDFViewerApplication = {
 
     eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState);
 
+    if (_app_options.AppOptions.get("pdfBug")) {
+      _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;
+
+      eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug);
+
+      eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug);
+    }
+
     eventBus._on("fileinputchange", webViewerFileInputChange);
 
     eventBus._on("openfile", webViewerOpenFile);
@@ -1772,6 +2423,13 @@ const PDFViewerApplication = {
       });
     };
 
+    _boundEvents.windowUpdateFromSandbox = event => {
+      eventBus.dispatch("updatefromsandbox", {
+        source: window,
+        detail: event.detail
+      });
+    };
+
     window.addEventListener("visibilitychange", webViewerVisibilityChange);
     window.addEventListener("wheel", webViewerWheel, {
       passive: false
@@ -1786,6 +2444,7 @@ const PDFViewerApplication = {
     window.addEventListener("hashchange", _boundEvents.windowHashChange);
     window.addEventListener("beforeprint", _boundEvents.windowBeforePrint);
     window.addEventListener("afterprint", _boundEvents.windowAfterPrint);
+    window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox);
   },
 
   unbindEvents() {
@@ -1870,6 +2529,14 @@ const PDFViewerApplication = {
 
     eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState);
 
+    if (_boundEvents.reportPageStatsPDFBug) {
+      eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug);
+
+      eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug);
+
+      _boundEvents.reportPageStatsPDFBug = null;
+    }
+
     eventBus._off("fileinputchange", webViewerFileInputChange);
 
     eventBus._off("openfile", webViewerOpenFile);
@@ -1896,10 +2563,12 @@ const PDFViewerApplication = {
     window.removeEventListener("hashchange", _boundEvents.windowHashChange);
     window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint);
     window.removeEventListener("afterprint", _boundEvents.windowAfterPrint);
+    window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox);
     _boundEvents.windowResize = null;
     _boundEvents.windowHashChange = null;
     _boundEvents.windowBeforePrint = null;
     _boundEvents.windowAfterPrint = null;
+    _boundEvents.windowUpdateFromSandbox = null;
   },
 
   accumulateWheelTicks(ticks) {
@@ -1911,6 +2580,10 @@ const PDFViewerApplication = {
     const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks));
     this._wheelUnusedTicks -= wholeTicks;
     return wholeTicks;
+  },
+
+  get scriptingReady() {
+    return this._scriptingInstance?.ready || false;
   }
 
 };
@@ -1969,6 +2642,23 @@ function loadAndEnablePDFBug(enabledTabs) {
   });
 }
 
+function reportPageStatsPDFBug({
+  pageNumber
+}) {
+  if (typeof Stats === "undefined" || !Stats.enabled) {
+    return;
+  }
+
+  const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
+  const pageStats = pageView && pageView.pdfPage && pageView.pdfPage.stats;
+
+  if (!pageStats) {
+    return;
+  }
+
+  Stats.add(pageNumber, pageStats);
+}
+
 function webViewerInitialized() {
   const appConfig = PDFViewerApplication.appConfig;
   let file;
@@ -2099,37 +2789,33 @@ function webViewerResetPermissions() {
   appConfig.viewerContainer.classList.remove(ENABLE_PERMISSIONS_CLASS);
 }
 
-function webViewerPageRendered(evt) {
-  const pageNumber = evt.pageNumber;
-  const pageIndex = pageNumber - 1;
-  const pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);
-
+function webViewerPageRendered({
+  pageNumber,
+  timestamp,
+  error
+}) {
   if (pageNumber === PDFViewerApplication.page) {
     PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);
   }
 
-  if (!pageView) {
-    return;
-  }
-
   if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
-    const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex);
-    thumbnailView.setImage(pageView);
-  }
+    const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
+    const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1);
 
-  if (typeof Stats !== "undefined" && Stats.enabled && pageView.stats) {
-    Stats.add(pageNumber, pageView.stats);
+    if (pageView && thumbnailView) {
+      thumbnailView.setImage(pageView);
+    }
   }
 
-  if (pageView.error) {
+  if (error) {
     PDFViewerApplication.l10n.get("rendering_error", null, "An error occurred while rendering the 
page.").then(msg => {
-      PDFViewerApplication.error(msg, pageView.error);
+      PDFViewerApplication.error(msg, error);
     });
   }
 
   PDFViewerApplication.externalServices.reportTelemetry({
     type: "pageInfo",
-    timestamp: evt.timestamp
+    timestamp
   });
   PDFViewerApplication.pdfDocument.getStats().then(function (stats) {
     PDFViewerApplication.externalServices.reportTelemetry({
@@ -2146,24 +2832,24 @@ function webViewerPageMode({
 
   switch (mode) {
     case "thumbs":
-      view = _pdf_sidebar.SidebarView.THUMBS;
+      view = _ui_utils.SidebarView.THUMBS;
       break;
 
     case "bookmarks":
     case "outline":
-      view = _pdf_sidebar.SidebarView.OUTLINE;
+      view = _ui_utils.SidebarView.OUTLINE;
       break;
 
     case "attachments":
-      view = _pdf_sidebar.SidebarView.ATTACHMENTS;
+      view = _ui_utils.SidebarView.ATTACHMENTS;
       break;
 
     case "layers":
-      view = _pdf_sidebar.SidebarView.LAYERS;
+      view = _ui_utils.SidebarView.LAYERS;
       break;
 
     case "none":
-      view = _pdf_sidebar.SidebarView.NONE;
+      view = _ui_utils.SidebarView.NONE;
       break;
 
     default:
@@ -2188,10 +2874,7 @@ function webViewerNamedAction(evt) {
       break;
 
     case "Print":
-      if (PDFViewerApplication.supportsPrinting) {
-        webViewerPrint();
-      }
-
+      PDFViewerApplication.triggerPrinting();
       break;
 
     case "SaveAs":
@@ -2200,19 +2883,8 @@ function webViewerNamedAction(evt) {
   }
 }
 
-function webViewerPresentationModeChanged({
-  active,
-  switchInProgress
-}) {
-  let state = _ui_utils.PresentationModeState.NORMAL;
-
-  if (switchInProgress) {
-    state = _ui_utils.PresentationModeState.CHANGING;
-  } else if (active) {
-    state = _ui_utils.PresentationModeState.FULLSCREEN;
-  }
-
-  PDFViewerApplication.pdfViewer.presentationModeState = state;
+function webViewerPresentationModeChanged(evt) {
+  PDFViewerApplication.pdfViewer.presentationModeState = evt.state;
 }
 
 function webViewerSidebarViewChanged(evt) {
@@ -2242,7 +2914,7 @@ function webViewerUpdateViewarea(evt) {
   PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;
   PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;
   const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);
-  const loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED;
+  const loading = (currentPage && currentPage.renderingState) !== 
_pdf_rendering_queue.RenderingStates.FINISHED;
   PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
 }
 
@@ -2345,27 +3017,19 @@ function webViewerPresentationMode() {
 }
 
 function webViewerPrint() {
-  window.print();
-}
-
-function webViewerDownloadOrSave(sourceEventType) {
-  if (PDFViewerApplication.pdfDocument && PDFViewerApplication.pdfDocument.annotationStorage.size > 0) {
-    PDFViewerApplication.save({
-      sourceEventType
-    });
-  } else {
-    PDFViewerApplication.download({
-      sourceEventType
-    });
-  }
+  PDFViewerApplication.triggerPrinting();
 }
 
 function webViewerDownload() {
-  webViewerDownloadOrSave("download");
+  PDFViewerApplication.downloadOrSave({
+    sourceEventType: "download"
+  });
 }
 
 function webViewerSave() {
-  webViewerDownloadOrSave("save");
+  PDFViewerApplication.downloadOrSave({
+    sourceEventType: "save"
+  });
 }
 
 function webViewerFirstPage() {
@@ -2381,11 +3045,11 @@ function webViewerLastPage() {
 }
 
 function webViewerNextPage() {
-  PDFViewerApplication.page++;
+  PDFViewerApplication.pdfViewer.nextPage();
 }
 
 function webViewerPreviousPage() {
-  PDFViewerApplication.page--;
+  PDFViewerApplication.pdfViewer.previousPage();
 }
 
 function webViewerZoomIn() {
@@ -2404,7 +3068,7 @@ function webViewerPageNumberChanged(evt) {
   const pdfViewer = PDFViewerApplication.pdfViewer;
 
   if (evt.value !== "") {
-    pdfViewer.currentPageLabel = evt.value;
+    PDFViewerApplication.pdfLinkService.goToPage(evt.value);
   }
 
   if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) {
@@ -2501,21 +3165,15 @@ function webViewerRotationChanging(evt) {
   PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
 }
 
-function webViewerPageChanging(evt) {
-  const page = evt.pageNumber;
-  PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);
-  PDFViewerApplication.secondaryToolbar.setPageNumber(page);
+function webViewerPageChanging({
+  pageNumber,
+  pageLabel
+}) {
+  PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);
+  PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);
 
   if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
-    PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
-  }
-
-  if (typeof Stats !== "undefined" && Stats.enabled) {
-    const pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1);
-
-    if (pageView && pageView.stats) {
-      Stats.add(page, pageView.stats);
-    }
+    PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);
   }
 }
 
@@ -2634,7 +3292,7 @@ function webViewerKeyDown(evt) {
   if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
     switch (evt.keyCode) {
       case 70:
-        if (!PDFViewerApplication.supportsIntegratedFind) {
+        if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {
           PDFViewerApplication.findBar.open();
           handled = true;
         }
@@ -2760,7 +3418,7 @@ function webViewerKeyDown(evt) {
     return;
   }
 
-  const curElement = document.activeElement || document.querySelector(":focus");
+  const curElement = (0, _ui_utils.getActiveOrFocusedElement)();
   const curElementTagName = curElement && curElement.tagName.toUpperCase();
 
   if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || 
curElement && curElement.isContentEditable) {
@@ -2879,13 +3537,9 @@ function webViewerKeyDown(evt) {
 
     if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) {
       if (turnPage > 0) {
-        if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
-          PDFViewerApplication.page++;
-        }
+        pdfViewer.nextPage();
       } else {
-        if (PDFViewerApplication.page > 1) {
-          PDFViewerApplication.page--;
-        }
+        pdfViewer.previousPage();
       }
 
       handled = true;
@@ -2955,22 +3609,22 @@ function apiPageLayoutToSpreadMode(layout) {
 function apiPageModeToSidebarView(mode) {
   switch (mode) {
     case "UseNone":
-      return _pdf_sidebar.SidebarView.NONE;
+      return _ui_utils.SidebarView.NONE;
 
     case "UseThumbs":
-      return _pdf_sidebar.SidebarView.THUMBS;
+      return _ui_utils.SidebarView.THUMBS;
 
     case "UseOutlines":
-      return _pdf_sidebar.SidebarView.OUTLINE;
+      return _ui_utils.SidebarView.OUTLINE;
 
     case "UseAttachments":
-      return _pdf_sidebar.SidebarView.ATTACHMENTS;
+      return _ui_utils.SidebarView.ATTACHMENTS;
 
     case "UseOC":
-      return _pdf_sidebar.SidebarView.LAYERS;
+      return _ui_utils.SidebarView.LAYERS;
   }
 
-  return _pdf_sidebar.SidebarView.NONE;
+  return _ui_utils.SidebarView.NONE;
 }
 
 const PDFPrintServiceFactory = {
@@ -2986,37 +3640,36 @@ const PDFPrintServiceFactory = {
 exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
 
 /***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 4 */
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.isValidRotation = isValidRotation;
-exports.isValidScrollMode = isValidScrollMode;
-exports.isValidSpreadMode = isValidSpreadMode;
-exports.isPortraitOrientation = isPortraitOrientation;
-exports.clamp = clamp;
-exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
-exports.noContextMenuHandler = noContextMenuHandler;
-exports.parseQueryString = parseQueryString;
+}));
+exports.approximateFraction = approximateFraction;
 exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
+exports.binarySearchFirstItem = binarySearchFirstItem;
+exports.getActiveOrFocusedElement = getActiveOrFocusedElement;
+exports.getOutputScale = getOutputScale;
+exports.getPageSizeInches = getPageSizeInches;
+exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
 exports.getVisibleElements = getVisibleElements;
+exports.isPortraitOrientation = isPortraitOrientation;
+exports.isValidRotation = isValidRotation;
+exports.isValidScrollMode = isValidScrollMode;
+exports.isValidSpreadMode = isValidSpreadMode;
+exports.moveToEndOfArray = moveToEndOfArray;
+exports.noContextMenuHandler = noContextMenuHandler;
+exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
+exports.normalizeWheelEventDirection = normalizeWheelEventDirection;
+exports.parseQueryString = parseQueryString;
 exports.roundToDivide = roundToDivide;
-exports.getPageSizeInches = getPageSizeInches;
-exports.approximateFraction = approximateFraction;
-exports.getOutputScale = getOutputScale;
 exports.scrollIntoView = scrollIntoView;
-exports.watchScroll = watchScroll;
-exports.binarySearchFirstItem = binarySearchFirstItem;
-exports.normalizeWheelEventDirection = normalizeWheelEventDirection;
-exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
 exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
-exports.moveToEndOfArray = moveToEndOfArray;
-exports.WaitOnType = exports.animationStarted = exports.ProgressBar = exports.EventBus = exports.NullL10n = 
exports.SpreadMode = exports.ScrollMode = exports.TextLayerMode = exports.RendererType = 
exports.PresentationModeState = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE 
= exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = 
exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = exports.AutoPrintRegExp = void 0;
+exports.watchScroll = watchScroll;
+exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = 
exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = 
exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.NullL10n = 
exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = 
exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = 
exports.animationStarted = void 0;
 const CSS_UNITS = 96.0 / 72.0;
 exports.CSS_UNITS = CSS_UNITS;
 const DEFAULT_SCALE_VALUE = "auto";
@@ -3035,6 +3688,7 @@ const SCROLLBAR_PADDING = 40;
 exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
 const VERTICAL_PADDING = 5;
 exports.VERTICAL_PADDING = VERTICAL_PADDING;
+const LOADINGBAR_END_OFFSET_VAR = "--loadingBar-end-offset";
 const PresentationModeState = {
   UNKNOWN: 0,
   NORMAL: 1,
@@ -3042,6 +3696,15 @@ const PresentationModeState = {
   FULLSCREEN: 3
 };
 exports.PresentationModeState = PresentationModeState;
+const SidebarView = {
+  UNKNOWN: -1,
+  NONE: 0,
+  THUMBS: 1,
+  OUTLINE: 2,
+  ATTACHMENTS: 3,
+  LAYERS: 4
+};
+exports.SidebarView = SidebarView;
 const RendererType = {
   CANVAS: "canvas",
   SVG: "svg"
@@ -3100,7 +3763,7 @@ exports.NullL10n = NullL10n;
 
 function getOutputScale(ctx) {
   const devicePixelRatio = window.devicePixelRatio || 1;
-  const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || 
ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
+  const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || 
ctx.backingStorePixelRatio || 1;
   const pixelRatio = devicePixelRatio / backingStoreRatio;
   return {
     sx: pixelRatio,
@@ -3323,7 +3986,13 @@ function backtrackBeforeAllVisibleElements(index, views, top) {
   return index;
 }
 
-function getVisibleElements(scrollEl, views, sortByVisibility = false, horizontal = false) {
+function getVisibleElements({
+  scrollEl,
+  views,
+  sortByVisibility = false,
+  horizontal = false,
+  rtl = false
+}) {
   const top = scrollEl.scrollTop,
         bottom = top + scrollEl.clientHeight;
   const left = scrollEl.scrollLeft,
@@ -3335,15 +4004,16 @@ function getVisibleElements(scrollEl, views, sortByVisibility = false, horizonta
     return elementBottom > top;
   }
 
-  function isElementRightAfterViewLeft(view) {
+  function isElementNextAfterViewHorizontally(view) {
     const element = view.div;
-    const elementRight = element.offsetLeft + element.clientLeft + element.clientWidth;
-    return elementRight > left;
+    const elementLeft = element.offsetLeft + element.clientLeft;
+    const elementRight = elementLeft + element.clientWidth;
+    return rtl ? elementLeft < right : elementRight > left;
   }
 
   const visible = [],
         numViews = views.length;
-  let firstVisibleElementInd = numViews === 0 ? 0 : binarySearchFirstItem(views, horizontal ? 
isElementRightAfterViewLeft : isElementBottomAfterViewTop);
+  let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally 
: isElementBottomAfterViewTop);
 
   if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) {
     firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);
@@ -3375,13 +4045,16 @@ function getVisibleElements(scrollEl, views, sortByVisibility = false, horizonta
 
     const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);
     const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);
-    const percent = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 
0;
+    const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,
+          fractionWidth = (viewWidth - hiddenWidth) / viewWidth;
+    const percent = fractionHeight * fractionWidth * 100 | 0;
     visible.push({
       id: view.id,
       x: currentWidth,
       y: currentHeight,
       view,
-      percent
+      percent,
+      widthPercent: fractionWidth * 100 | 0
     });
   }
 
@@ -3432,8 +4105,8 @@ function getPDFFileNameFromURL(url, defaultFilename = "document.pdf") {
     return defaultFilename;
   }
 
-  const reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
-  const reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+  const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+  const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
   const splitURI = reURI.exec(url);
   let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || 
reFilename.exec(splitURI[3]);
 
@@ -3550,15 +4223,17 @@ class EventBus {
     this._listeners = Object.create(null);
   }
 
-  on(eventName, listener) {
+  on(eventName, listener, options = null) {
     this._on(eventName, listener, {
-      external: true
+      external: true,
+      once: options?.once
     });
   }
 
-  off(eventName, listener) {
+  off(eventName, listener, options = null) {
     this._off(eventName, listener, {
-      external: true
+      external: true,
+      once: options?.once
     });
   }
 
@@ -3571,16 +4246,17 @@ class EventBus {
 
     const args = Array.prototype.slice.call(arguments, 1);
     let externalListeners;
-    eventListeners.slice(0).forEach(function ({
+    eventListeners.slice(0).forEach(({
       listener,
-      external
-    }) {
-      if (external) {
-        if (!externalListeners) {
-          externalListeners = [];
-        }
+      external,
+      once
+    }) => {
+      if (once) {
+        this._off(eventName, listener);
+      }
 
-        externalListeners.push(listener);
+      if (external) {
+        (externalListeners || (externalListeners = [])).push(listener);
         return;
       }
 
@@ -3588,7 +4264,7 @@ class EventBus {
     });
 
     if (externalListeners) {
-      externalListeners.forEach(function (listener) {
+      externalListeners.forEach(listener => {
         listener.apply(null, args);
       });
       externalListeners = null;
@@ -3596,15 +4272,13 @@ class EventBus {
   }
 
   _on(eventName, listener, options = null) {
-    let eventListeners = this._listeners[eventName];
-
-    if (!eventListeners) {
-      this._listeners[eventName] = eventListeners = [];
-    }
+    var _this$_listeners;
 
+    const eventListeners = (_this$_listeners = this._listeners)[eventName] || (_this$_listeners[eventName] = 
[]);
     eventListeners.push({
       listener,
-      external: (options && options.external) === true
+      external: options?.external === true,
+      once: options?.once === true
     });
   }
 
@@ -3679,7 +4353,8 @@ class ProgressBar {
     const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
 
     if (scrollbarWidth > 0) {
-      this.bar.style.width = `calc(100% - ${scrollbarWidth}px)`;
+      const doc = document.documentElement;
+      doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`);
     }
   }
 
@@ -3690,7 +4365,6 @@ class ProgressBar {
 
     this.visible = false;
     this.bar.classList.add("hidden");
-    document.body.classList.remove("loadingInProgress");
   }
 
   show() {
@@ -3699,7 +4373,6 @@ class ProgressBar {
     }
 
     this.visible = true;
-    document.body.classList.add("loadingInProgress");
     this.bar.classList.remove("hidden");
   }
 
@@ -3726,324 +4399,48 @@ function moveToEndOfArray(arr, condition) {
   }
 }
 
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
+function getActiveOrFocusedElement() {
+  let curRoot = document;
+  let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
 
-"use strict";
+  while (curActiveOrFocused && curActiveOrFocused.shadowRoot) {
+    curRoot = curActiveOrFocused.shadowRoot;
+    curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
+  }
 
+  return curActiveOrFocused;
+}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.OptionKind = exports.AppOptions = void 0;
+/***/ }),
+/* 5 */
+/***/ ((module) => {
 
-var _viewer_compatibility = __webpack_require__(4);
 
-const OptionKind = {
-  VIEWER: 0x02,
-  API: 0x04,
-  WORKER: 0x08,
-  PREFERENCE: 0x80
-};
-exports.OptionKind = OptionKind;
-const defaultOptions = {
-  cursorToolOnLoad: {
-    value: 0,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  defaultUrl: {
-    value: "compressed.tracemonkey-pldi-09.pdf",
-    kind: OptionKind.VIEWER
-  },
-  defaultZoomValue: {
-    value: "",
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  disableHistory: {
-    value: false,
-    kind: OptionKind.VIEWER
-  },
-  disablePageLabels: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  enablePermissions: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  enablePrintAutoRotate: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  enableWebGL: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  externalLinkRel: {
-    value: "noopener noreferrer nofollow",
-    kind: OptionKind.VIEWER
-  },
-  externalLinkTarget: {
-    value: 0,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  historyUpdateUrl: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  ignoreDestinationZoom: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  imageResourcesPath: {
-    value: "./images/",
-    kind: OptionKind.VIEWER
-  },
-  maxCanvasPixels: {
-    value: 16777216,
-    compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels,
-    kind: OptionKind.VIEWER
-  },
-  pdfBugEnabled: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  printResolution: {
-    value: 150,
-    kind: OptionKind.VIEWER
-  },
-  renderer: {
-    value: "canvas",
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  renderInteractiveForms: {
-    value: true,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  sidebarViewOnLoad: {
-    value: -1,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  scrollModeOnLoad: {
-    value: -1,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  spreadModeOnLoad: {
-    value: -1,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  textLayerMode: {
-    value: 1,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  useOnlyCssZoom: {
-    value: false,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  viewOnLoad: {
-    value: 0,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
-  cMapPacked: {
-    value: true,
-    kind: OptionKind.API
-  },
-  cMapUrl: {
-    value: "../web/cmaps/",
-    kind: OptionKind.API
-  },
-  disableAutoFetch: {
-    value: false,
-    kind: OptionKind.API + OptionKind.PREFERENCE
-  },
-  disableFontFace: {
-    value: false,
-    kind: OptionKind.API + OptionKind.PREFERENCE
-  },
-  disableRange: {
-    value: false,
-    kind: OptionKind.API + OptionKind.PREFERENCE
-  },
-  disableStream: {
-    value: false,
-    kind: OptionKind.API + OptionKind.PREFERENCE
-  },
-  docBaseUrl: {
-    value: "",
-    kind: OptionKind.API
-  },
-  fontExtraProperties: {
-    value: false,
-    kind: OptionKind.API
-  },
-  isEvalSupported: {
-    value: true,
-    kind: OptionKind.API
-  },
-  maxImageSize: {
-    value: -1,
-    kind: OptionKind.API
-  },
-  pdfBug: {
-    value: false,
-    kind: OptionKind.API
-  },
-  verbosity: {
-    value: 1,
-    kind: OptionKind.API
-  },
-  workerPort: {
-    value: null,
-    kind: OptionKind.WORKER
-  },
-  workerSrc: {
-    value: "../build/pdf.worker.js",
-    kind: OptionKind.WORKER
-  }
-};
-{
-  defaultOptions.disablePreferences = {
-    value: false,
-    kind: OptionKind.VIEWER
-  };
-  defaultOptions.locale = {
-    value: typeof navigator !== "undefined" ? navigator.language : "en-US",
-    kind: OptionKind.VIEWER
-  };
-}
-const userOptions = Object.create(null);
 
-class AppOptions {
-  constructor() {
-    throw new Error("Cannot initialize AppOptions.");
-  }
+let pdfjsLib;
 
-  static get(name) {
-    const userOption = userOptions[name];
+if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) {
+  pdfjsLib = window["pdfjs-dist/build/pdf"];
+} else {
+  pdfjsLib = require("../build/pdf.js");
+}
 
-    if (userOption !== undefined) {
-      return userOption;
-    }
+module.exports = pdfjsLib;
 
-    const defaultOption = defaultOptions[name];
+/***/ }),
+/* 6 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-    if (defaultOption !== undefined) {
-      return defaultOption.compatibility || defaultOption.value;
-    }
 
-    return undefined;
-  }
 
-  static getAll(kind = null) {
-    const options = Object.create(null);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFCursorTools = exports.CursorTool = void 0;
 
-    for (const name in defaultOptions) {
-      const defaultOption = defaultOptions[name];
+var _grab_to_pan = __webpack_require__(7);
 
-      if (kind) {
-        if ((kind & defaultOption.kind) === 0) {
-          continue;
-        }
-
-        if (kind === OptionKind.PREFERENCE) {
-          const value = defaultOption.value,
-                valueType = typeof value;
-
-          if (valueType === "boolean" || valueType === "string" || valueType === "number" && 
Number.isInteger(value)) {
-            options[name] = value;
-            continue;
-          }
-
-          throw new Error(`Invalid type for preference: ${name}`);
-        }
-      }
-
-      const userOption = userOptions[name];
-      options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || 
defaultOption.value;
-    }
-
-    return options;
-  }
-
-  static set(name, value) {
-    userOptions[name] = value;
-  }
-
-  static remove(name) {
-    delete userOptions[name];
-  }
-
-}
-
-exports.AppOptions = AppOptions;
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.viewerCompatibilityParams = void 0;
-const compatibilityParams = Object.create(null);
-{
-  const userAgent = typeof navigator !== "undefined" && navigator.userAgent || "";
-  const platform = typeof navigator !== "undefined" && navigator.platform || "";
-  const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1;
-  const isAndroid = /Android/.test(userAgent);
-  const isIE = /Trident/.test(userAgent);
-  const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
-  const isIOSChrome = /CriOS/.test(userAgent);
-
-  (function checkOnBlobSupport() {
-    if (isIE || isIOSChrome) {
-      compatibilityParams.disableCreateObjectURL = true;
-    }
-  })();
-
-  (function checkCanvasSizeLimitation() {
-    if (isIOS || isAndroid) {
-      compatibilityParams.maxCanvasPixels = 5242880;
-    }
-  })();
-}
-const viewerCompatibilityParams = Object.freeze(compatibilityParams);
-exports.viewerCompatibilityParams = viewerCompatibilityParams;
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-let pdfjsLib;
-
-if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) {
-  pdfjsLib = window["pdfjs-dist/build/pdf"];
-} else {
-  pdfjsLib = require("../build/pdf.js");
-}
-
-module.exports = pdfjsLib;
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PDFCursorTools = exports.CursorTool = void 0;
-
-var _grab_to_pan = __webpack_require__(7);
+var _ui_utils = __webpack_require__(4);
 
 const CursorTool = {
   SELECT: 0,
@@ -4133,20 +4530,25 @@ class PDFCursorTools {
     });
 
     this.eventBus._on("presentationmodechanged", evt => {
-      if (evt.switchInProgress) {
-        return;
-      }
+      switch (evt.state) {
+        case _ui_utils.PresentationModeState.CHANGING:
+          break;
 
-      let previouslyActive;
+        case _ui_utils.PresentationModeState.FULLSCREEN:
+          {
+            const previouslyActive = this.active;
+            this.switchTool(CursorTool.SELECT);
+            this.activeBeforePresentationMode = previouslyActive;
+            break;
+          }
 
-      if (evt.active) {
-        previouslyActive = this.active;
-        this.switchTool(CursorTool.SELECT);
-        this.activeBeforePresentationMode = previouslyActive;
-      } else {
-        previouslyActive = this.activeBeforePresentationMode;
-        this.activeBeforePresentationMode = null;
-        this.switchTool(previouslyActive);
+        case _ui_utils.PresentationModeState.NORMAL:
+          {
+            const previouslyActive = this.activeBeforePresentationMode;
+            this.activeBeforePresentationMode = null;
+            this.switchTool(previouslyActive);
+            break;
+          }
       }
     });
   }
@@ -4157,14 +4559,13 @@ exports.PDFCursorTools = PDFCursorTools;
 
 /***/ }),
 /* 7 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.GrabToPan = GrabToPan;
 
 function GrabToPan(options) {
@@ -4288,7 +4689,7 @@ GrabToPan.prototype = {
   }
 };
 let matchesSelector;
-["webkitM", "mozM", "msM", "oM", "m"].some(function (prefix) {
+["webkitM", "mozM", "m"].some(function (prefix) {
   let name = prefix + "atches";
 
   if (name in document.documentElement) {
@@ -4322,15 +4723,17 @@ function isLeftMouseReleased(event) {
 
 /***/ }),
 /* 8 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFRenderingQueue = exports.RenderingStates = void 0;
+}));
+exports.RenderingStates = exports.PDFRenderingQueue = void 0;
+
+var _pdfjsLib = __webpack_require__(5);
+
 const CLEANUP_TIMEOUT = 30000;
 const RenderingStates = {
   INITIAL: 0,
@@ -4444,6 +4847,10 @@ class PDFRenderingQueue {
         view.draw().finally(() => {
           this.renderHighestPriority();
         }).catch(reason => {
+          if (reason instanceof _pdfjsLib.RenderingCancelledException) {
+            return;
+          }
+
           console.error(`renderView: "${reason}"`);
         });
         break;
@@ -4458,2747 +4865,3034 @@ exports.PDFRenderingQueue = PDFRenderingQueue;
 
 /***/ }),
 /* 9 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFSidebar = exports.SidebarView = void 0;
+}));
+exports.OverlayManager = void 0;
 
-var _ui_utils = __webpack_require__(2);
+class OverlayManager {
+  constructor() {
+    this._overlays = {};
+    this._active = null;
+    this._keyDownBound = this._keyDown.bind(this);
+  }
 
-var _pdf_rendering_queue = __webpack_require__(8);
+  get active() {
+    return this._active;
+  }
 
-const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
-const SidebarView = {
-  UNKNOWN: -1,
-  NONE: 0,
-  THUMBS: 1,
-  OUTLINE: 2,
-  ATTACHMENTS: 3,
-  LAYERS: 4
-};
-exports.SidebarView = SidebarView;
+  async register(name, element, callerCloseMethod = null, canForceClose = false) {
+    let container;
 
-class PDFSidebar {
-  constructor({
-    elements,
-    pdfViewer,
-    pdfThumbnailViewer,
-    eventBus,
-    l10n = _ui_utils.NullL10n,
-    disableNotification = false
-  }) {
-    this.isOpen = false;
-    this.active = SidebarView.THUMBS;
-    this.isInitialViewSet = false;
-    this.onToggled = null;
-    this.pdfViewer = pdfViewer;
-    this.pdfThumbnailViewer = pdfThumbnailViewer;
-    this.outerContainer = elements.outerContainer;
-    this.viewerContainer = elements.viewerContainer;
-    this.toggleButton = elements.toggleButton;
-    this.thumbnailButton = elements.thumbnailButton;
-    this.outlineButton = elements.outlineButton;
-    this.attachmentsButton = elements.attachmentsButton;
-    this.layersButton = elements.layersButton;
-    this.thumbnailView = elements.thumbnailView;
-    this.outlineView = elements.outlineView;
-    this.attachmentsView = elements.attachmentsView;
-    this.layersView = elements.layersView;
-    this.eventBus = eventBus;
-    this.l10n = l10n;
-    this._disableNotification = disableNotification;
+    if (!name || !element || !(container = element.parentNode)) {
+      throw new Error("Not enough parameters.");
+    } else if (this._overlays[name]) {
+      throw new Error("The overlay is already registered.");
+    }
 
-    this._addEventListeners();
+    this._overlays[name] = {
+      element,
+      container,
+      callerCloseMethod,
+      canForceClose
+    };
   }
 
-  reset() {
-    this.isInitialViewSet = false;
-
-    this._hideUINotification(null);
+  async unregister(name) {
+    if (!this._overlays[name]) {
+      throw new Error("The overlay does not exist.");
+    } else if (this._active === name) {
+      throw new Error("The overlay cannot be removed while it is active.");
+    }
 
-    this.switchView(SidebarView.THUMBS);
-    this.outlineButton.disabled = false;
-    this.attachmentsButton.disabled = false;
-    this.layersButton.disabled = false;
+    delete this._overlays[name];
   }
 
-  get visibleView() {
-    return this.isOpen ? this.active : SidebarView.NONE;
-  }
+  async open(name) {
+    if (!this._overlays[name]) {
+      throw new Error("The overlay does not exist.");
+    } else if (this._active) {
+      if (this._overlays[name].canForceClose) {
+        this._closeThroughCaller();
+      } else if (this._active === name) {
+        throw new Error("The overlay is already active.");
+      } else {
+        throw new Error("Another overlay is currently active.");
+      }
+    }
 
-  get isThumbnailViewVisible() {
-    return this.isOpen && this.active === SidebarView.THUMBS;
-  }
+    this._active = name;
 
-  get isOutlineViewVisible() {
-    return this.isOpen && this.active === SidebarView.OUTLINE;
-  }
+    this._overlays[this._active].element.classList.remove("hidden");
 
-  get isAttachmentsViewVisible() {
-    return this.isOpen && this.active === SidebarView.ATTACHMENTS;
-  }
+    this._overlays[this._active].container.classList.remove("hidden");
 
-  get isLayersViewVisible() {
-    return this.isOpen && this.active === SidebarView.LAYERS;
+    window.addEventListener("keydown", this._keyDownBound);
   }
 
-  setInitialView(view = SidebarView.NONE) {
-    if (this.isInitialViewSet) {
-      return;
+  async close(name) {
+    if (!this._overlays[name]) {
+      throw new Error("The overlay does not exist.");
+    } else if (!this._active) {
+      throw new Error("The overlay is currently not active.");
+    } else if (this._active !== name) {
+      throw new Error("Another overlay is currently active.");
     }
 
-    this.isInitialViewSet = true;
+    this._overlays[this._active].container.classList.add("hidden");
 
-    if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {
-      this._dispatchEvent();
+    this._overlays[this._active].element.classList.add("hidden");
 
-      return;
-    }
+    this._active = null;
+    window.removeEventListener("keydown", this._keyDownBound);
+  }
 
-    if (!this._switchView(view, true)) {
-      this._dispatchEvent();
+  _keyDown(evt) {
+    if (this._active && evt.keyCode === 27) {
+      this._closeThroughCaller();
+
+      evt.preventDefault();
     }
   }
 
-  switchView(view, forceOpen = false) {
-    this._switchView(view, forceOpen);
+  _closeThroughCaller() {
+    if (this._overlays[this._active].callerCloseMethod) {
+      this._overlays[this._active].callerCloseMethod();
+    }
+
+    if (this._active) {
+      this.close(this._active);
+    }
   }
 
-  _switchView(view, forceOpen = false) {
-    const isViewChanged = view !== this.active;
-    let shouldForceRendering = false;
+}
 
-    switch (view) {
-      case SidebarView.NONE:
-        if (this.isOpen) {
-          this.close();
-          return true;
-        }
+exports.OverlayManager = OverlayManager;
 
-        return false;
+/***/ }),
+/* 10 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-      case SidebarView.THUMBS:
-        if (this.isOpen && isViewChanged) {
-          shouldForceRendering = true;
-        }
-
-        break;
-
-      case SidebarView.OUTLINE:
-        if (this.outlineButton.disabled) {
-          return false;
-        }
 
-        break;
 
-      case SidebarView.ATTACHMENTS:
-        if (this.attachmentsButton.disabled) {
-          return false;
-        }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PasswordPrompt = void 0;
 
-        break;
+var _ui_utils = __webpack_require__(4);
 
-      case SidebarView.LAYERS:
-        if (this.layersButton.disabled) {
-          return false;
-        }
+var _pdfjsLib = __webpack_require__(5);
 
-        break;
+class PasswordPrompt {
+  constructor(options, overlayManager, l10n = _ui_utils.NullL10n) {
+    this.overlayName = options.overlayName;
+    this.container = options.container;
+    this.label = options.label;
+    this.input = options.input;
+    this.submitButton = options.submitButton;
+    this.cancelButton = options.cancelButton;
+    this.overlayManager = overlayManager;
+    this.l10n = l10n;
+    this.updateCallback = null;
+    this.reason = null;
+    this.submitButton.addEventListener("click", this.verify.bind(this));
+    this.cancelButton.addEventListener("click", this.close.bind(this));
+    this.input.addEventListener("keydown", e => {
+      if (e.keyCode === 13) {
+        this.verify();
+      }
+    });
+    this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);
+  }
 
-      default:
-        console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`);
-        return false;
-    }
+  open() {
+    this.overlayManager.open(this.overlayName).then(() => {
+      this.input.focus();
+      let promptString;
 
-    this.active = view;
-    this.thumbnailButton.classList.toggle("toggled", view === SidebarView.THUMBS);
-    this.outlineButton.classList.toggle("toggled", view === SidebarView.OUTLINE);
-    this.attachmentsButton.classList.toggle("toggled", view === SidebarView.ATTACHMENTS);
-    this.layersButton.classList.toggle("toggled", view === SidebarView.LAYERS);
-    this.thumbnailView.classList.toggle("hidden", view !== SidebarView.THUMBS);
-    this.outlineView.classList.toggle("hidden", view !== SidebarView.OUTLINE);
-    this.attachmentsView.classList.toggle("hidden", view !== SidebarView.ATTACHMENTS);
-    this.layersView.classList.toggle("hidden", view !== SidebarView.LAYERS);
+      if (this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
+        promptString = this.l10n.get("password_invalid", null, "Invalid password. Please try again.");
+      } else {
+        promptString = this.l10n.get("password_label", null, "Enter the password to open this PDF file.");
+      }
 
-    if (forceOpen && !this.isOpen) {
-      this.open();
-      return true;
-    }
+      promptString.then(msg => {
+        this.label.textContent = msg;
+      });
+    });
+  }
 
-    if (shouldForceRendering) {
-      this._updateThumbnailViewer();
+  close() {
+    this.overlayManager.close(this.overlayName).then(() => {
+      this.input.value = "";
+    });
+  }
 
-      this._forceRendering();
-    }
+  verify() {
+    const password = this.input.value;
 
-    if (isViewChanged) {
-      this._dispatchEvent();
+    if (password && password.length > 0) {
+      this.close();
+      this.updateCallback(password);
     }
-
-    this._hideUINotification(this.active);
-
-    return isViewChanged;
   }
 
-  open() {
-    if (this.isOpen) {
-      return;
-    }
+  setUpdateCallback(updateCallback, reason) {
+    this.updateCallback = updateCallback;
+    this.reason = reason;
+  }
 
-    this.isOpen = true;
-    this.toggleButton.classList.add("toggled");
-    this.outerContainer.classList.add("sidebarMoving", "sidebarOpen");
+}
 
-    if (this.active === SidebarView.THUMBS) {
-      this._updateThumbnailViewer();
-    }
+exports.PasswordPrompt = PasswordPrompt;
 
-    this._forceRendering();
+/***/ }),
+/* 11 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-    this._dispatchEvent();
 
-    this._hideUINotification(this.active);
-  }
 
-  close() {
-    if (!this.isOpen) {
-      return;
-    }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFAttachmentViewer = void 0;
 
-    this.isOpen = false;
-    this.toggleButton.classList.remove("toggled");
-    this.outerContainer.classList.add("sidebarMoving");
-    this.outerContainer.classList.remove("sidebarOpen");
+var _pdfjsLib = __webpack_require__(5);
 
-    this._forceRendering();
+var _base_tree_viewer = __webpack_require__(12);
 
-    this._dispatchEvent();
-  }
+var _viewer_compatibility = __webpack_require__(2);
 
-  toggle() {
-    if (this.isOpen) {
-      this.close();
-    } else {
-      this.open();
-    }
-  }
+const PdfFileRegExp = /\.pdf$/i;
 
-  _dispatchEvent() {
-    this.eventBus.dispatch("sidebarviewchanged", {
-      source: this,
-      view: this.visibleView
-    });
-  }
+class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
+  constructor(options) {
+    super(options);
+    this.downloadManager = options.downloadManager;
 
-  _forceRendering() {
-    if (this.onToggled) {
-      this.onToggled();
-    } else {
-      this.pdfViewer.forceRendering();
-      this.pdfThumbnailViewer.forceRendering();
-    }
+    this.eventBus._on("fileattachmentannotation", this._appendAttachment.bind(this));
   }
 
-  _updateThumbnailViewer() {
-    const {
-      pdfViewer,
-      pdfThumbnailViewer
-    } = this;
-    const pagesCount = pdfViewer.pagesCount;
+  reset(keepRenderedCapability = false) {
+    super.reset();
+    this._attachments = null;
 
-    for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
-      const pageView = pdfViewer.getPageView(pageIndex);
+    if (!keepRenderedCapability) {
+      this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();
+    }
 
-      if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
-        const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);
-        thumbnailView.setImage(pageView);
-      }
+    if (this._pendingDispatchEvent) {
+      clearTimeout(this._pendingDispatchEvent);
     }
 
-    pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
+    this._pendingDispatchEvent = null;
   }
 
-  _showUINotification(view) {
-    if (this._disableNotification) {
-      return;
-    }
+  _dispatchEvent(attachmentsCount) {
+    this._renderedCapability.resolve();
 
-    this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains 
outline/attachments/layers)").then(msg => {
-      this.toggleButton.title = msg;
-    });
+    if (this._pendingDispatchEvent) {
+      clearTimeout(this._pendingDispatchEvent);
+      this._pendingDispatchEvent = null;
+    }
 
-    if (!this.isOpen) {
-      this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
-    } else if (view === this.active) {
+    if (attachmentsCount === 0) {
+      this._pendingDispatchEvent = setTimeout(() => {
+        this.eventBus.dispatch("attachmentsloaded", {
+          source: this,
+          attachmentsCount: 0
+        });
+        this._pendingDispatchEvent = null;
+      });
       return;
     }
 
-    switch (view) {
-      case SidebarView.OUTLINE:
-        this.outlineButton.classList.add(UI_NOTIFICATION_CLASS);
-        break;
-
-      case SidebarView.ATTACHMENTS:
-        this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS);
-        break;
-
-      case SidebarView.LAYERS:
-        this.layersButton.classList.add(UI_NOTIFICATION_CLASS);
-        break;
-    }
+    this.eventBus.dispatch("attachmentsloaded", {
+      source: this,
+      attachmentsCount
+    });
   }
 
-  _hideUINotification(view) {
-    if (this._disableNotification) {
-      return;
-    }
+  _bindPdfLink(element, {
+    content,
+    filename
+  }) {
+    let blobUrl;
 
-    const removeNotification = sidebarView => {
-      switch (sidebarView) {
-        case SidebarView.OUTLINE:
-          this.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);
-          break;
+    element.onclick = () => {
+      if (!blobUrl) {
+        blobUrl = URL.createObjectURL(new Blob([content], {
+          type: "application/pdf"
+        }));
+      }
 
-        case SidebarView.ATTACHMENTS:
-          this.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);
-          break;
+      let viewerUrl;
+      viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename);
 
-        case SidebarView.LAYERS:
-          this.layersButton.classList.remove(UI_NOTIFICATION_CLASS);
-          break;
+      try {
+        window.open(viewerUrl);
+      } catch (ex) {
+        console.error(`_bindPdfLink: ${ex}`);
+        URL.revokeObjectURL(blobUrl);
+        blobUrl = null;
+        this.downloadManager.downloadData(content, filename, "application/pdf");
       }
+
+      return false;
     };
+  }
 
-    if (!this.isOpen && view !== null) {
-      return;
+  _bindLink(element, {
+    content,
+    filename
+  }) {
+    element.onclick = () => {
+      const contentType = PdfFileRegExp.test(filename) ? "application/pdf" : "";
+      this.downloadManager.downloadData(content, filename, contentType);
+      return false;
+    };
+  }
+
+  render({
+    attachments,
+    keepRenderedCapability = false
+  }) {
+    if (this._attachments) {
+      this.reset(keepRenderedCapability);
     }
 
-    this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
+    this._attachments = attachments || null;
 
-    if (view !== null) {
-      removeNotification(view);
-      return;
-    }
+    if (!attachments) {
+      this._dispatchEvent(0);
 
-    for (view in SidebarView) {
-      removeNotification(SidebarView[view]);
+      return;
     }
 
-    this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => {
-      this.toggleButton.title = msg;
+    const names = Object.keys(attachments).sort(function (a, b) {
+      return a.toLowerCase().localeCompare(b.toLowerCase());
     });
-  }
+    const fragment = document.createDocumentFragment();
+    let attachmentsCount = 0;
 
-  _addEventListeners() {
-    this.viewerContainer.addEventListener("transitionend", evt => {
-      if (evt.target === this.viewerContainer) {
-        this.outerContainer.classList.remove("sidebarMoving");
-      }
-    });
-    this.toggleButton.addEventListener("click", () => {
-      this.toggle();
-    });
-    this.thumbnailButton.addEventListener("click", () => {
-      this.switchView(SidebarView.THUMBS);
-    });
-    this.outlineButton.addEventListener("click", () => {
-      this.switchView(SidebarView.OUTLINE);
-    });
-    this.outlineButton.addEventListener("dblclick", () => {
-      this.eventBus.dispatch("toggleoutlinetree", {
-        source: this
-      });
-    });
-    this.attachmentsButton.addEventListener("click", () => {
-      this.switchView(SidebarView.ATTACHMENTS);
-    });
-    this.layersButton.addEventListener("click", () => {
-      this.switchView(SidebarView.LAYERS);
-    });
-    this.layersButton.addEventListener("dblclick", () => {
-      this.eventBus.dispatch("resetlayers", {
-        source: this
-      });
-    });
-
-    const onTreeLoaded = (count, button, view) => {
-      button.disabled = !count;
+    for (const name of names) {
+      const item = attachments[name];
+      const filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename);
+      const div = document.createElement("div");
+      div.className = "treeItem";
+      const element = document.createElement("a");
 
-      if (count) {
-        this._showUINotification(view);
-      } else if (this.active === view) {
-        this.switchView(SidebarView.THUMBS);
+      if (PdfFileRegExp.test(filename) && 
!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
+        this._bindPdfLink(element, {
+          content: item.content,
+          filename
+        });
+      } else {
+        this._bindLink(element, {
+          content: item.content,
+          filename
+        });
       }
-    };
 
-    this.eventBus._on("outlineloaded", evt => {
-      onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);
-    });
+      element.textContent = this._normalizeTextContent(filename);
+      div.appendChild(element);
+      fragment.appendChild(div);
+      attachmentsCount++;
+    }
 
-    this.eventBus._on("attachmentsloaded", evt => {
-      onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, SidebarView.ATTACHMENTS);
-    });
+    this._finishRendering(fragment, attachmentsCount);
+  }
 
-    this.eventBus._on("layersloaded", evt => {
-      onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);
-    });
+  _appendAttachment({
+    id,
+    filename,
+    content
+  }) {
+    const renderedPromise = this._renderedCapability.promise;
+    renderedPromise.then(() => {
+      if (renderedPromise !== this._renderedCapability.promise) {
+        return;
+      }
 
-    this.eventBus._on("presentationmodechanged", evt => {
-      if (!evt.active && !evt.switchInProgress && this.isThumbnailViewVisible) {
-        this._updateThumbnailViewer();
+      let attachments = this._attachments;
+
+      if (!attachments) {
+        attachments = Object.create(null);
+      } else {
+        for (const name in attachments) {
+          if (id === name) {
+            return;
+          }
+        }
       }
+
+      attachments[id] = {
+        filename,
+        content
+      };
+      this.render({
+        attachments,
+        keepRenderedCapability: true
+      });
     });
   }
 
 }
 
-exports.PDFSidebar = PDFSidebar;
+exports.PDFAttachmentViewer = PDFAttachmentViewer;
 
 /***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 12 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.OverlayManager = void 0;
+}));
+exports.BaseTreeViewer = void 0;
 
-class OverlayManager {
-  constructor() {
-    this._overlays = {};
-    this._active = null;
-    this._keyDownBound = this._keyDown.bind(this);
+var _pdfjsLib = __webpack_require__(5);
+
+const TREEITEM_OFFSET_TOP = -100;
+const TREEITEM_SELECTED_CLASS = "selected";
+
+class BaseTreeViewer {
+  constructor(options) {
+    if (this.constructor === BaseTreeViewer) {
+      throw new Error("Cannot initialize BaseTreeViewer.");
+    }
+
+    this.container = options.container;
+    this.eventBus = options.eventBus;
+    this.reset();
   }
 
-  get active() {
-    return this._active;
+  reset() {
+    this._pdfDocument = null;
+    this._lastToggleIsShow = true;
+    this._currentTreeItem = null;
+    this.container.textContent = "";
+    this.container.classList.remove("treeWithDeepNesting");
   }
 
-  async register(name, element, callerCloseMethod = null, canForceClose = false) {
-    let container;
+  _dispatchEvent(count) {
+    throw new Error("Not implemented: _dispatchEvent");
+  }
 
-    if (!name || !element || !(container = element.parentNode)) {
-      throw new Error("Not enough parameters.");
-    } else if (this._overlays[name]) {
-      throw new Error("The overlay is already registered.");
-    }
+  _bindLink(element, params) {
+    throw new Error("Not implemented: _bindLink");
+  }
 
-    this._overlays[name] = {
-      element,
-      container,
-      callerCloseMethod,
-      canForceClose
-    };
+  _normalizeTextContent(str) {
+    return (0, _pdfjsLib.removeNullCharacters)(str) || "\u2013";
   }
 
-  async unregister(name) {
-    if (!this._overlays[name]) {
-      throw new Error("The overlay does not exist.");
-    } else if (this._active === name) {
-      throw new Error("The overlay cannot be removed while it is active.");
+  _addToggleButton(div, hidden = false) {
+    const toggler = document.createElement("div");
+    toggler.className = "treeItemToggler";
+
+    if (hidden) {
+      toggler.classList.add("treeItemsHidden");
     }
 
-    delete this._overlays[name];
-  }
+    toggler.onclick = evt => {
+      evt.stopPropagation();
+      toggler.classList.toggle("treeItemsHidden");
 
-  async open(name) {
-    if (!this._overlays[name]) {
-      throw new Error("The overlay does not exist.");
-    } else if (this._active) {
-      if (this._overlays[name].canForceClose) {
-        this._closeThroughCaller();
-      } else if (this._active === name) {
-        throw new Error("The overlay is already active.");
-      } else {
-        throw new Error("Another overlay is currently active.");
+      if (evt.shiftKey) {
+        const shouldShowAll = !toggler.classList.contains("treeItemsHidden");
+
+        this._toggleTreeItem(div, shouldShowAll);
       }
-    }
+    };
 
-    this._active = name;
+    div.insertBefore(toggler, div.firstChild);
+  }
 
-    this._overlays[this._active].element.classList.remove("hidden");
+  _toggleTreeItem(root, show = false) {
+    this._lastToggleIsShow = show;
 
-    this._overlays[this._active].container.classList.remove("hidden");
+    for (const toggler of root.querySelectorAll(".treeItemToggler")) {
+      toggler.classList.toggle("treeItemsHidden", !show);
+    }
+  }
 
-    window.addEventListener("keydown", this._keyDownBound);
+  _toggleAllTreeItems() {
+    this._toggleTreeItem(this.container, !this._lastToggleIsShow);
   }
 
-  async close(name) {
-    if (!this._overlays[name]) {
-      throw new Error("The overlay does not exist.");
-    } else if (!this._active) {
-      throw new Error("The overlay is currently not active.");
-    } else if (this._active !== name) {
-      throw new Error("Another overlay is currently active.");
+  _finishRendering(fragment, count, hasAnyNesting = false) {
+    if (hasAnyNesting) {
+      this.container.classList.add("treeWithDeepNesting");
+      this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden");
     }
 
-    this._overlays[this._active].container.classList.add("hidden");
+    this.container.appendChild(fragment);
 
-    this._overlays[this._active].element.classList.add("hidden");
+    this._dispatchEvent(count);
+  }
 
-    this._active = null;
-    window.removeEventListener("keydown", this._keyDownBound);
+  render(params) {
+    throw new Error("Not implemented: render");
   }
 
-  _keyDown(evt) {
-    if (this._active && evt.keyCode === 27) {
-      this._closeThroughCaller();
+  _updateCurrentTreeItem(treeItem = null) {
+    if (this._currentTreeItem) {
+      this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);
 
-      evt.preventDefault();
+      this._currentTreeItem = null;
+    }
+
+    if (treeItem) {
+      treeItem.classList.add(TREEITEM_SELECTED_CLASS);
+      this._currentTreeItem = treeItem;
     }
   }
 
-  _closeThroughCaller() {
-    if (this._overlays[this._active].callerCloseMethod) {
-      this._overlays[this._active].callerCloseMethod();
+  _scrollToCurrentTreeItem(treeItem) {
+    if (!treeItem) {
+      return;
     }
 
-    if (this._active) {
-      this.close(this._active);
+    let currentNode = treeItem.parentNode;
+
+    while (currentNode && currentNode !== this.container) {
+      if (currentNode.classList.contains("treeItem")) {
+        const toggler = currentNode.firstElementChild;
+        toggler?.classList.remove("treeItemsHidden");
+      }
+
+      currentNode = currentNode.parentNode;
     }
+
+    this._updateCurrentTreeItem(treeItem);
+
+    this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP);
   }
 
 }
 
-exports.OverlayManager = OverlayManager;
+exports.BaseTreeViewer = BaseTreeViewer;
 
 /***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 13 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PasswordPrompt = void 0;
-
-var _ui_utils = __webpack_require__(2);
+}));
+exports.PDFDocumentProperties = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
-class PasswordPrompt {
-  constructor(options, overlayManager, l10n = _ui_utils.NullL10n) {
-    this.overlayName = options.overlayName;
-    this.container = options.container;
-    this.label = options.label;
-    this.input = options.input;
-    this.submitButton = options.submitButton;
-    this.cancelButton = options.cancelButton;
-    this.overlayManager = overlayManager;
-    this.l10n = l10n;
-    this.updateCallback = null;
-    this.reason = null;
-    this.submitButton.addEventListener("click", this.verify.bind(this));
-    this.cancelButton.addEventListener("click", this.close.bind(this));
-    this.input.addEventListener("keydown", e => {
-      if (e.keyCode === 13) {
-        this.verify();
-      }
-    });
-    this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);
-  }
+var _ui_utils = __webpack_require__(4);
 
-  open() {
-    this.overlayManager.open(this.overlayName).then(() => {
-      this.input.focus();
-      let promptString;
-
-      if (this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
-        promptString = this.l10n.get("password_invalid", null, "Invalid password. Please try again.");
-      } else {
-        promptString = this.l10n.get("password_label", null, "Enter the password to open this PDF file.");
-      }
+const DEFAULT_FIELD_CONTENT = "-";
+const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"];
+const US_PAGE_NAMES = {
+  "8.5x11": "Letter",
+  "8.5x14": "Legal"
+};
+const METRIC_PAGE_NAMES = {
+  "297x420": "A3",
+  "210x297": "A4"
+};
 
-      promptString.then(msg => {
-        this.label.textContent = msg;
-      });
-    });
-  }
+function getPageName(size, isPortrait, pageNames) {
+  const width = isPortrait ? size.width : size.height;
+  const height = isPortrait ? size.height : size.width;
+  return pageNames[`${width}x${height}`];
+}
 
-  close() {
-    this.overlayManager.close(this.overlayName).then(() => {
-      this.input.value = "";
-    });
-  }
+class PDFDocumentProperties {
+  constructor({
+    overlayName,
+    fields,
+    container,
+    closeButton
+  }, overlayManager, eventBus, l10n = _ui_utils.NullL10n) {
+    this.overlayName = overlayName;
+    this.fields = fields;
+    this.container = container;
+    this.overlayManager = overlayManager;
+    this.l10n = l10n;
 
-  verify() {
-    const password = this.input.value;
+    this._reset();
 
-    if (password && password.length > 0) {
-      this.close();
-      this.updateCallback(password);
-    }
-  }
+    closeButton.addEventListener("click", this.close.bind(this));
+    this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
 
-  setUpdateCallback(updateCallback, reason) {
-    this.updateCallback = updateCallback;
-    this.reason = reason;
-  }
+    eventBus._on("pagechanging", evt => {
+      this._currentPageNumber = evt.pageNumber;
+    });
 
-}
+    eventBus._on("rotationchanging", evt => {
+      this._pagesRotation = evt.pagesRotation;
+    });
 
-exports.PasswordPrompt = PasswordPrompt;
+    this._isNonMetricLocale = true;
+    l10n.getLanguage().then(locale => {
+      this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);
+    });
+  }
 
-/***/ }),
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
+  async open() {
+    const freezeFieldData = data => {
+      Object.defineProperty(this, "fieldData", {
+        value: Object.freeze(data),
+        writable: false,
+        enumerable: true,
+        configurable: true
+      });
+    };
 
-"use strict";
+    await Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]);
+    const currentPageNumber = this._currentPageNumber;
+    const pagesRotation = this._pagesRotation;
 
+    if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === 
this.fieldData._pagesRotation) {
+      this._updateUI();
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PDFAttachmentViewer = void 0;
+      return;
+    }
 
-var _pdfjsLib = __webpack_require__(5);
+    const {
+      info,
+      contentDispositionFilename,
+      contentLength
+    } = await this.pdfDocument.getMetadata();
+    const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await 
Promise.all([contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), 
this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), 
this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
+      return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
+    }), this._parseLinearization(info.IsLinearized)]);
+    freezeFieldData({
+      fileName,
+      fileSize,
+      title: info.Title,
+      author: info.Author,
+      subject: info.Subject,
+      keywords: info.Keywords,
+      creationDate,
+      modificationDate,
+      creator: info.Creator,
+      producer: info.Producer,
+      version: info.PDFFormatVersion,
+      pageCount: this.pdfDocument.numPages,
+      pageSize,
+      linearized: isLinearized,
+      _currentPageNumber: currentPageNumber,
+      _pagesRotation: pagesRotation
+    });
+
+    this._updateUI();
 
-var _base_tree_viewer = __webpack_require__(13);
+    const {
+      length
+    } = await this.pdfDocument.getDownloadInfo();
 
-var _viewer_compatibility = __webpack_require__(4);
+    if (contentLength === length) {
+      return;
+    }
 
-const PdfFileRegExp = /\.pdf$/i;
+    const data = Object.assign(Object.create(null), this.fieldData);
+    data.fileSize = await this._parseFileSize(length);
+    freezeFieldData(data);
 
-class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
-  constructor(options) {
-    super(options);
-    this.downloadManager = options.downloadManager;
+    this._updateUI();
+  }
 
-    this.eventBus._on("fileattachmentannotation", this._appendAttachment.bind(this));
+  close() {
+    this.overlayManager.close(this.overlayName);
   }
 
-  reset(keepRenderedCapability = false) {
-    super.reset();
-    this._attachments = null;
+  setDocument(pdfDocument, url = null) {
+    if (this.pdfDocument) {
+      this._reset();
 
-    if (!keepRenderedCapability) {
-      this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();
+      this._updateUI(true);
     }
 
-    if (this._pendingDispatchEvent) {
-      clearTimeout(this._pendingDispatchEvent);
+    if (!pdfDocument) {
+      return;
     }
 
-    this._pendingDispatchEvent = null;
+    this.pdfDocument = pdfDocument;
+    this.url = url;
+
+    this._dataAvailableCapability.resolve();
   }
 
-  _dispatchEvent(attachmentsCount) {
-    this._renderedCapability.resolve();
+  _reset() {
+    this.pdfDocument = null;
+    this.url = null;
+    delete this.fieldData;
+    this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
+    this._currentPageNumber = 1;
+    this._pagesRotation = 0;
+  }
 
-    if (this._pendingDispatchEvent) {
-      clearTimeout(this._pendingDispatchEvent);
-      this._pendingDispatchEvent = null;
+  _updateUI(reset = false) {
+    if (reset || !this.fieldData) {
+      for (const id in this.fields) {
+        this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
+      }
+
+      return;
     }
 
-    if (attachmentsCount === 0) {
-      this._pendingDispatchEvent = setTimeout(() => {
-        this.eventBus.dispatch("attachmentsloaded", {
-          source: this,
-          attachmentsCount: 0
-        });
-        this._pendingDispatchEvent = null;
-      });
+    if (this.overlayManager.active !== this.overlayName) {
       return;
     }
 
-    this.eventBus.dispatch("attachmentsloaded", {
-      source: this,
-      attachmentsCount
-    });
+    for (const id in this.fields) {
+      const content = this.fieldData[id];
+      this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
+    }
   }
 
-  _bindPdfLink(element, {
-    content,
-    filename
-  }) {
-    let blobUrl;
-
-    element.onclick = () => {
-      if (!blobUrl) {
-        blobUrl = URL.createObjectURL(new Blob([content], {
-          type: "application/pdf"
-        }));
-      }
-
-      let viewerUrl;
-      viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename);
+  async _parseFileSize(fileSize = 0) {
+    const kb = fileSize / 1024;
 
-      try {
-        window.open(viewerUrl);
-      } catch (ex) {
-        console.error(`_bindPdfLink: ${ex}`);
-        URL.revokeObjectURL(blobUrl);
-        blobUrl = null;
-        this.downloadManager.downloadData(content, filename, "application/pdf");
-      }
+    if (!kb) {
+      return undefined;
+    } else if (kb < 1024) {
+      return this.l10n.get("document_properties_kb", {
+        size_kb: (+kb.toPrecision(3)).toLocaleString(),
+        size_b: fileSize.toLocaleString()
+      }, "{{size_kb}} KB ({{size_b}} bytes)");
+    }
 
-      return false;
-    };
+    return this.l10n.get("document_properties_mb", {
+      size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
+      size_b: fileSize.toLocaleString()
+    }, "{{size_mb}} MB ({{size_b}} bytes)");
   }
 
-  _bindLink(element, {
-    content,
-    filename
-  }) {
-    element.onclick = () => {
-      const contentType = PdfFileRegExp.test(filename) ? "application/pdf" : "";
-      this.downloadManager.downloadData(content, filename, contentType);
-      return false;
-    };
-  }
+  async _parsePageSize(pageSizeInches, pagesRotation) {
+    if (!pageSizeInches) {
+      return undefined;
+    }
 
-  render({
-    attachments,
-    keepRenderedCapability = false
-  }) {
-    if (this._attachments) {
-      this.reset(keepRenderedCapability);
+    if (pagesRotation % 180 !== 0) {
+      pageSizeInches = {
+        width: pageSizeInches.height,
+        height: pageSizeInches.width
+      };
     }
 
-    this._attachments = attachments || null;
+    const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);
+    let sizeInches = {
+      width: Math.round(pageSizeInches.width * 100) / 100,
+      height: Math.round(pageSizeInches.height * 100) / 100
+    };
+    let sizeMillimeters = {
+      width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,
+      height: Math.round(pageSizeInches.height * 25.4 * 10) / 10
+    };
+    let pageName = null;
+    let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, 
isPortrait, METRIC_PAGE_NAMES);
 
-    if (!attachments) {
-      this._dispatchEvent(0);
+    if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
+      const exactMillimeters = {
+        width: pageSizeInches.width * 25.4,
+        height: pageSizeInches.height * 25.4
+      };
+      const intMillimeters = {
+        width: Math.round(sizeMillimeters.width),
+        height: Math.round(sizeMillimeters.height)
+      };
 
-      return;
+      if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height 
- intMillimeters.height) < 0.1) {
+        rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);
+
+        if (rawName) {
+          sizeInches = {
+            width: Math.round(intMillimeters.width / 25.4 * 100) / 100,
+            height: Math.round(intMillimeters.height / 25.4 * 100) / 100
+          };
+          sizeMillimeters = intMillimeters;
+        }
+      }
     }
 
-    const names = Object.keys(attachments).sort(function (a, b) {
-      return a.toLowerCase().localeCompare(b.toLowerCase());
-    });
-    const fragment = document.createDocumentFragment();
-    let attachmentsCount = 0;
-
-    for (const name of names) {
-      const item = attachments[name];
-      const filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename);
-      const div = document.createElement("div");
-      div.className = "treeItem";
-      const element = document.createElement("a");
-
-      if (PdfFileRegExp.test(filename) && 
!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
-        this._bindPdfLink(element, {
-          content: item.content,
-          filename
-        });
-      } else {
-        this._bindLink(element, {
-          content: item.content,
-          filename
-        });
-      }
-
-      element.textContent = this._normalizeTextContent(filename);
-      div.appendChild(element);
-      fragment.appendChild(div);
-      attachmentsCount++;
+    if (rawName) {
+      pageName = this.l10n.get("document_properties_page_size_name_" + rawName.toLowerCase(), null, rawName);
     }
 
-    this.container.appendChild(fragment);
-
-    this._dispatchEvent(attachmentsCount);
+    return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, 
this.l10n.get("document_properties_page_size_unit_" + (this._isNonMetricLocale ? "inches" : "millimeters"), 
null, this._isNonMetricLocale ? "in" : "mm"), pageName, 
this.l10n.get("document_properties_page_size_orientation_" + (isPortrait ? "portrait" : "landscape"), null, 
isPortrait ? "portrait" : "landscape")]).then(([{
+      width,
+      height
+    }, unit, name, orientation]) => {
+      return this.l10n.get("document_properties_page_size_dimension_" + (name ? "name_" : "") + "string", {
+        width: width.toLocaleString(),
+        height: height.toLocaleString(),
+        unit,
+        name,
+        orientation
+      }, "{{width}} × {{height}} {{unit}} (" + (name ? "{{name}}, " : "") + "{{orientation}})");
+    });
   }
 
-  _appendAttachment({
-    id,
-    filename,
-    content
-  }) {
-    const renderedPromise = this._renderedCapability.promise;
-    renderedPromise.then(() => {
-      if (renderedPromise !== this._renderedCapability.promise) {
-        return;
-      }
+  async _parseDate(inputDate) {
+    const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate);
 
-      let attachments = this._attachments;
+    if (!dateObject) {
+      return undefined;
+    }
 
-      if (!attachments) {
-        attachments = Object.create(null);
-      } else {
-        for (const name in attachments) {
-          if (id === name) {
-            return;
-          }
-        }
-      }
+    return this.l10n.get("document_properties_date_string", {
+      date: dateObject.toLocaleDateString(),
+      time: dateObject.toLocaleTimeString()
+    }, "{{date}}, {{time}}");
+  }
 
-      attachments[id] = {
-        filename,
-        content
-      };
-      this.render({
-        attachments,
-        keepRenderedCapability: true
-      });
-    });
+  _parseLinearization(isLinearized) {
+    return this.l10n.get("document_properties_linearized_" + (isLinearized ? "yes" : "no"), null, 
isLinearized ? "Yes" : "No");
   }
 
 }
 
-exports.PDFAttachmentViewer = PDFAttachmentViewer;
+exports.PDFDocumentProperties = PDFDocumentProperties;
 
 /***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 14 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.BaseTreeViewer = void 0;
+}));
+exports.PDFFindBar = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdf_find_controller = __webpack_require__(15);
 
-class BaseTreeViewer {
-  constructor(options) {
-    if (this.constructor === BaseTreeViewer) {
-      throw new Error("Cannot initialize BaseTreeViewer.");
-    }
+var _ui_utils = __webpack_require__(4);
 
-    this.container = options.container;
-    this.eventBus = options.eventBus;
-    this.reset();
+const MATCHES_COUNT_LIMIT = 1000;
+
+class PDFFindBar {
+  constructor(options, eventBus, l10n = _ui_utils.NullL10n) {
+    this.opened = false;
+    this.bar = options.bar || null;
+    this.toggleButton = options.toggleButton || null;
+    this.findField = options.findField || null;
+    this.highlightAll = options.highlightAllCheckbox || null;
+    this.caseSensitive = options.caseSensitiveCheckbox || null;
+    this.entireWord = options.entireWordCheckbox || null;
+    this.findMsg = options.findMsg || null;
+    this.findResultsCount = options.findResultsCount || null;
+    this.findPreviousButton = options.findPreviousButton || null;
+    this.findNextButton = options.findNextButton || null;
+    this.eventBus = eventBus;
+    this.l10n = l10n;
+    this.toggleButton.addEventListener("click", () => {
+      this.toggle();
+    });
+    this.findField.addEventListener("input", () => {
+      this.dispatchEvent("");
+    });
+    this.bar.addEventListener("keydown", e => {
+      switch (e.keyCode) {
+        case 13:
+          if (e.target === this.findField) {
+            this.dispatchEvent("again", e.shiftKey);
+          }
+
+          break;
+
+        case 27:
+          this.close();
+          break;
+      }
+    });
+    this.findPreviousButton.addEventListener("click", () => {
+      this.dispatchEvent("again", true);
+    });
+    this.findNextButton.addEventListener("click", () => {
+      this.dispatchEvent("again", false);
+    });
+    this.highlightAll.addEventListener("click", () => {
+      this.dispatchEvent("highlightallchange");
+    });
+    this.caseSensitive.addEventListener("click", () => {
+      this.dispatchEvent("casesensitivitychange");
+    });
+    this.entireWord.addEventListener("click", () => {
+      this.dispatchEvent("entirewordchange");
+    });
+
+    this.eventBus._on("resize", this._adjustWidth.bind(this));
   }
 
   reset() {
-    this._lastToggleIsShow = true;
-    this.container.textContent = "";
-    this.container.classList.remove("treeWithDeepNesting");
+    this.updateUIState();
   }
 
-  _dispatchEvent(count) {
-    throw new Error("Not implemented: _dispatchEvent");
+  dispatchEvent(type, findPrev) {
+    this.eventBus.dispatch("find", {
+      source: this,
+      type,
+      query: this.findField.value,
+      phraseSearch: true,
+      caseSensitive: this.caseSensitive.checked,
+      entireWord: this.entireWord.checked,
+      highlightAll: this.highlightAll.checked,
+      findPrevious: findPrev
+    });
   }
 
-  _bindLink(element, params) {
-    throw new Error("Not implemented: _bindLink");
-  }
+  updateUIState(state, previous, matchesCount) {
+    let findMsg = "";
+    let status = "";
 
-  _normalizeTextContent(str) {
-    return (0, _pdfjsLib.removeNullCharacters)(str) || "\u2013";
-  }
+    switch (state) {
+      case _pdf_find_controller.FindState.FOUND:
+        break;
 
-  _addToggleButton(div, hidden = false) {
-    const toggler = document.createElement("div");
-    toggler.className = "treeItemToggler";
+      case _pdf_find_controller.FindState.PENDING:
+        status = "pending";
+        break;
 
-    if (hidden) {
-      toggler.classList.add("treeItemsHidden");
-    }
+      case _pdf_find_controller.FindState.NOT_FOUND:
+        findMsg = this.l10n.get("find_not_found", null, "Phrase not found");
+        status = "notFound";
+        break;
 
-    toggler.onclick = evt => {
-      evt.stopPropagation();
-      toggler.classList.toggle("treeItemsHidden");
+      case _pdf_find_controller.FindState.WRAPPED:
+        if (previous) {
+          findMsg = this.l10n.get("find_reached_top", null, "Reached top of document, continued from 
bottom");
+        } else {
+          findMsg = this.l10n.get("find_reached_bottom", null, "Reached end of document, continued from 
top");
+        }
 
-      if (evt.shiftKey) {
-        const shouldShowAll = !toggler.classList.contains("treeItemsHidden");
+        break;
+    }
 
-        this._toggleTreeItem(div, shouldShowAll);
-      }
-    };
+    this.findField.setAttribute("data-status", status);
+    Promise.resolve(findMsg).then(msg => {
+      this.findMsg.textContent = msg;
 
-    div.insertBefore(toggler, div.firstChild);
+      this._adjustWidth();
+    });
+    this.updateResultsCount(matchesCount);
   }
 
-  _toggleTreeItem(root, show = false) {
-    this._lastToggleIsShow = show;
+  updateResultsCount({
+    current = 0,
+    total = 0
+  } = {}) {
+    if (!this.findResultsCount) {
+      return;
+    }
 
-    for (const toggler of root.querySelectorAll(".treeItemToggler")) {
-      toggler.classList.toggle("treeItemsHidden", !show);
+    const limit = MATCHES_COUNT_LIMIT;
+    let matchesCountMsg = "";
+
+    if (total > 0) {
+      if (total > limit) {
+        matchesCountMsg = this.l10n.get("find_match_count_limit", {
+          limit
+        }, "More than {{limit}} match" + (limit !== 1 ? "es" : ""));
+      } else {
+        matchesCountMsg = this.l10n.get("find_match_count", {
+          current,
+          total
+        }, "{{current}} of {{total}} match" + (total !== 1 ? "es" : ""));
+      }
     }
-  }
 
-  _toggleAllTreeItems() {
-    this._toggleTreeItem(this.container, !this._lastToggleIsShow);
-  }
+    Promise.resolve(matchesCountMsg).then(msg => {
+      this.findResultsCount.textContent = msg;
+      this.findResultsCount.classList.toggle("hidden", !total);
 
-  render(params) {
-    throw new Error("Not implemented: render");
+      this._adjustWidth();
+    });
   }
 
-}
+  open() {
+    if (!this.opened) {
+      this.opened = true;
+      this.toggleButton.classList.add("toggled");
+      this.bar.classList.remove("hidden");
+    }
 
-exports.BaseTreeViewer = BaseTreeViewer;
+    this.findField.select();
+    this.findField.focus();
+
+    this._adjustWidth();
+  }
+
+  close() {
+    if (!this.opened) {
+      return;
+    }
+
+    this.opened = false;
+    this.toggleButton.classList.remove("toggled");
+    this.bar.classList.add("hidden");
+    this.eventBus.dispatch("findbarclose", {
+      source: this
+    });
+  }
+
+  toggle() {
+    if (this.opened) {
+      this.close();
+    } else {
+      this.open();
+    }
+  }
+
+  _adjustWidth() {
+    if (!this.opened) {
+      return;
+    }
+
+    this.bar.classList.remove("wrapContainers");
+    const findbarHeight = this.bar.clientHeight;
+    const inputContainerHeight = this.bar.firstElementChild.clientHeight;
+
+    if (findbarHeight > inputContainerHeight) {
+      this.bar.classList.add("wrapContainers");
+    }
+  }
+
+}
+
+exports.PDFFindBar = PDFFindBar;
 
 /***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 15 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFDocumentProperties = void 0;
+}));
+exports.PDFFindController = exports.FindState = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
-var _ui_utils = __webpack_require__(2);
+var _pdf_find_utils = __webpack_require__(16);
 
-const DEFAULT_FIELD_CONTENT = "-";
-const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"];
-const US_PAGE_NAMES = {
-  "8.5x11": "Letter",
-  "8.5x14": "Legal"
+var _ui_utils = __webpack_require__(4);
+
+const FindState = {
+  FOUND: 0,
+  NOT_FOUND: 1,
+  WRAPPED: 2,
+  PENDING: 3
 };
-const METRIC_PAGE_NAMES = {
-  "297x420": "A3",
-  "210x297": "A4"
+exports.FindState = FindState;
+const FIND_TIMEOUT = 250;
+const MATCH_SCROLL_OFFSET_TOP = -50;
+const MATCH_SCROLL_OFFSET_LEFT = -400;
+const CHARACTERS_TO_NORMALIZE = {
+  "\u2018": "'",
+  "\u2019": "'",
+  "\u201A": "'",
+  "\u201B": "'",
+  "\u201C": '"',
+  "\u201D": '"',
+  "\u201E": '"',
+  "\u201F": '"',
+  "\u00BC": "1/4",
+  "\u00BD": "1/2",
+  "\u00BE": "3/4"
 };
+let normalizationRegex = null;
 
-function getPageName(size, isPortrait, pageNames) {
-  const width = isPortrait ? size.width : size.height;
-  const height = isPortrait ? size.height : size.width;
-  return pageNames[`${width}x${height}`];
+function normalize(text) {
+  if (!normalizationRegex) {
+    const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join("");
+    normalizationRegex = new RegExp(`[${replace}]`, "g");
+  }
+
+  let diffs = null;
+  const normalizedText = text.replace(normalizationRegex, function (ch, index) {
+    const normalizedCh = CHARACTERS_TO_NORMALIZE[ch],
+          diff = normalizedCh.length - ch.length;
+
+    if (diff !== 0) {
+      (diffs || (diffs = [])).push([index, diff]);
+    }
+
+    return normalizedCh;
+  });
+  return [normalizedText, diffs];
 }
 
-class PDFDocumentProperties {
-  constructor({
-    overlayName,
-    fields,
-    container,
-    closeButton
-  }, overlayManager, eventBus, l10n = _ui_utils.NullL10n) {
-    this.overlayName = overlayName;
-    this.fields = fields;
-    this.container = container;
-    this.overlayManager = overlayManager;
-    this.l10n = l10n;
+function getOriginalIndex(matchIndex, diffs = null) {
+  if (!diffs) {
+    return matchIndex;
+  }
 
-    this._reset();
+  let totalDiff = 0;
 
-    closeButton.addEventListener("click", this.close.bind(this));
-    this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
+  for (const [index, diff] of diffs) {
+    const currentIndex = index + totalDiff;
 
-    eventBus._on("pagechanging", evt => {
-      this._currentPageNumber = evt.pageNumber;
-    });
+    if (currentIndex >= matchIndex) {
+      break;
+    }
 
-    eventBus._on("rotationchanging", evt => {
-      this._pagesRotation = evt.pagesRotation;
-    });
+    if (currentIndex + diff > matchIndex) {
+      totalDiff += matchIndex - currentIndex;
+      break;
+    }
 
-    this._isNonMetricLocale = true;
-    l10n.getLanguage().then(locale => {
-      this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);
-    });
+    totalDiff += diff;
   }
 
-  open() {
-    const freezeFieldData = data => {
-      Object.defineProperty(this, "fieldData", {
-        value: Object.freeze(data),
-        writable: false,
-        enumerable: true,
-        configurable: true
-      });
-    };
-
-    Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(() 
=> {
-      const currentPageNumber = this._currentPageNumber;
-      const pagesRotation = this._pagesRotation;
+  return matchIndex - totalDiff;
+}
 
-      if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === 
this.fieldData._pagesRotation) {
-        this._updateUI();
+class PDFFindController {
+  constructor({
+    linkService,
+    eventBus
+  }) {
+    this._linkService = linkService;
+    this._eventBus = eventBus;
 
-        return;
-      }
+    this._reset();
 
-      this.pdfDocument.getMetadata().then(({
-        info,
-        metadata,
-        contentDispositionFilename
-      }) => {
-        return Promise.all([info, metadata, contentDispositionFilename || (0, 
_ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(this.maybeFileSize), 
this._parseDate(info.CreationDate), this._parseDate(info.ModDate), 
this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
-          return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
-        }), this._parseLinearization(info.IsLinearized)]);
-      }).then(([info, metadata, fileName, fileSize, creationDate, modDate, pageSize, isLinearized]) => {
-        freezeFieldData({
-          fileName,
-          fileSize,
-          title: info.Title,
-          author: info.Author,
-          subject: info.Subject,
-          keywords: info.Keywords,
-          creationDate,
-          modificationDate: modDate,
-          creator: info.Creator,
-          producer: info.Producer,
-          version: info.PDFFormatVersion,
-          pageCount: this.pdfDocument.numPages,
-          pageSize,
-          linearized: isLinearized,
-          _currentPageNumber: currentPageNumber,
-          _pagesRotation: pagesRotation
-        });
+    eventBus._on("findbarclose", this._onFindBarClose.bind(this));
+  }
 
-        this._updateUI();
+  get highlightMatches() {
+    return this._highlightMatches;
+  }
 
-        return this.pdfDocument.getDownloadInfo();
-      }).then(({
-        length
-      }) => {
-        this.maybeFileSize = length;
-        return this._parseFileSize(length);
-      }).then(fileSize => {
-        if (fileSize === this.fieldData.fileSize) {
-          return;
-        }
+  get pageMatches() {
+    return this._pageMatches;
+  }
 
-        const data = Object.assign(Object.create(null), this.fieldData);
-        data.fileSize = fileSize;
-        freezeFieldData(data);
+  get pageMatchesLength() {
+    return this._pageMatchesLength;
+  }
 
-        this._updateUI();
-      });
-    });
+  get selected() {
+    return this._selected;
   }
 
-  close() {
-    this.overlayManager.close(this.overlayName);
+  get state() {
+    return this._state;
   }
 
-  setDocument(pdfDocument, url = null) {
-    if (this.pdfDocument) {
+  setDocument(pdfDocument) {
+    if (this._pdfDocument) {
       this._reset();
-
-      this._updateUI(true);
     }
 
     if (!pdfDocument) {
       return;
     }
 
-    this.pdfDocument = pdfDocument;
-    this.url = url;
+    this._pdfDocument = pdfDocument;
 
-    this._dataAvailableCapability.resolve();
+    this._firstPageCapability.resolve();
   }
 
-  setFileSize(fileSize) {
-    if (Number.isInteger(fileSize) && fileSize > 0) {
-      this.maybeFileSize = fileSize;
+  executeCommand(cmd, state) {
+    if (!state) {
+      return;
     }
-  }
-
-  _reset() {
-    this.pdfDocument = null;
-    this.url = null;
-    this.maybeFileSize = 0;
-    delete this.fieldData;
-    this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
-    this._currentPageNumber = 1;
-    this._pagesRotation = 0;
-  }
 
-  _updateUI(reset = false) {
-    if (reset || !this.fieldData) {
-      for (const id in this.fields) {
-        this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
-      }
+    const pdfDocument = this._pdfDocument;
 
-      return;
+    if (this._state === null || this._shouldDirtyMatch(cmd, state)) {
+      this._dirtyMatch = true;
     }
 
-    if (this.overlayManager.active !== this.overlayName) {
-      return;
-    }
+    this._state = state;
 
-    for (const id in this.fields) {
-      const content = this.fieldData[id];
-      this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
+    if (cmd !== "findhighlightallchange") {
+      this._updateUIState(FindState.PENDING);
     }
-  }
 
-  async _parseFileSize(fileSize = 0) {
-    const kb = fileSize / 1024;
+    this._firstPageCapability.promise.then(() => {
+      if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) {
+        return;
+      }
 
-    if (!kb) {
-      return undefined;
-    } else if (kb < 1024) {
-      return this.l10n.get("document_properties_kb", {
-        size_kb: (+kb.toPrecision(3)).toLocaleString(),
-        size_b: fileSize.toLocaleString()
-      }, "{{size_kb}} KB ({{size_b}} bytes)");
-    }
+      this._extractText();
 
-    return this.l10n.get("document_properties_mb", {
-      size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
-      size_b: fileSize.toLocaleString()
-    }, "{{size_mb}} MB ({{size_b}} bytes)");
-  }
+      const findbarClosed = !this._highlightMatches;
+      const pendingTimeout = !!this._findTimeout;
 
-  async _parsePageSize(pageSizeInches, pagesRotation) {
-    if (!pageSizeInches) {
-      return undefined;
-    }
+      if (this._findTimeout) {
+        clearTimeout(this._findTimeout);
+        this._findTimeout = null;
+      }
 
-    if (pagesRotation % 180 !== 0) {
-      pageSizeInches = {
-        width: pageSizeInches.height,
-        height: pageSizeInches.width
-      };
-    }
+      if (cmd === "find") {
+        this._findTimeout = setTimeout(() => {
+          this._nextMatch();
 
-    const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);
-    let sizeInches = {
-      width: Math.round(pageSizeInches.width * 100) / 100,
-      height: Math.round(pageSizeInches.height * 100) / 100
+          this._findTimeout = null;
+        }, FIND_TIMEOUT);
+      } else if (this._dirtyMatch) {
+        this._nextMatch();
+      } else if (cmd === "findagain") {
+        this._nextMatch();
+
+        if (findbarClosed && this._state.highlightAll) {
+          this._updateAllPages();
+        }
+      } else if (cmd === "findhighlightallchange") {
+        if (pendingTimeout) {
+          this._nextMatch();
+        } else {
+          this._highlightMatches = true;
+        }
+
+        this._updateAllPages();
+      } else {
+        this._nextMatch();
+      }
+    });
+  }
+
+  scrollMatchIntoView({
+    element = null,
+    pageIndex = -1,
+    matchIndex = -1
+  }) {
+    if (!this._scrollMatches || !element) {
+      return;
+    } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {
+      return;
+    } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {
+      return;
+    }
+
+    this._scrollMatches = false;
+    const spot = {
+      top: MATCH_SCROLL_OFFSET_TOP,
+      left: MATCH_SCROLL_OFFSET_LEFT
     };
-    let sizeMillimeters = {
-      width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,
-      height: Math.round(pageSizeInches.height * 25.4 * 10) / 10
+    (0, _ui_utils.scrollIntoView)(element, spot, true);
+  }
+
+  _reset() {
+    this._highlightMatches = false;
+    this._scrollMatches = false;
+    this._pdfDocument = null;
+    this._pageMatches = [];
+    this._pageMatchesLength = [];
+    this._state = null;
+    this._selected = {
+      pageIdx: -1,
+      matchIdx: -1
     };
-    let pageName = null;
-    let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, 
isPortrait, METRIC_PAGE_NAMES);
+    this._offset = {
+      pageIdx: null,
+      matchIdx: null,
+      wrapped: false
+    };
+    this._extractTextPromises = [];
+    this._pageContents = [];
+    this._pageDiffs = [];
+    this._matchesCountTotal = 0;
+    this._pagesToSearch = null;
+    this._pendingFindMatches = Object.create(null);
+    this._resumePageIdx = null;
+    this._dirtyMatch = false;
+    clearTimeout(this._findTimeout);
+    this._findTimeout = null;
+    this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
+  }
 
-    if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
-      const exactMillimeters = {
-        width: pageSizeInches.width * 25.4,
-        height: pageSizeInches.height * 25.4
-      };
-      const intMillimeters = {
-        width: Math.round(sizeMillimeters.width),
-        height: Math.round(sizeMillimeters.height)
-      };
+  get _query() {
+    if (this._state.query !== this._rawQuery) {
+      this._rawQuery = this._state.query;
+      [this._normalizedQuery] = normalize(this._state.query);
+    }
 
-      if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height 
- intMillimeters.height) < 0.1) {
-        rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);
+    return this._normalizedQuery;
+  }
 
-        if (rawName) {
-          sizeInches = {
-            width: Math.round(intMillimeters.width / 25.4 * 100) / 100,
-            height: Math.round(intMillimeters.height / 25.4 * 100) / 100
-          };
-          sizeMillimeters = intMillimeters;
+  _shouldDirtyMatch(cmd, state) {
+    if (state.query !== this._state.query) {
+      return true;
+    }
+
+    switch (cmd) {
+      case "findagain":
+        const pageNumber = this._selected.pageIdx + 1;
+        const linkService = this._linkService;
+
+        if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && 
!linkService.isPageVisible(pageNumber)) {
+          return true;
         }
-      }
+
+        return false;
+
+      case "findhighlightallchange":
+        return false;
     }
 
-    if (rawName) {
-      pageName = this.l10n.get("document_properties_page_size_name_" + rawName.toLowerCase(), null, rawName);
+    return true;
+  }
+
+  _prepareMatches(matchesWithLength, matches, matchesLength) {
+    function isSubTerm(currentIndex) {
+      const currentElem = matchesWithLength[currentIndex];
+      const nextElem = matchesWithLength[currentIndex + 1];
+
+      if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {
+        currentElem.skipped = true;
+        return true;
+      }
+
+      for (let i = currentIndex - 1; i >= 0; i--) {
+        const prevElem = matchesWithLength[i];
+
+        if (prevElem.skipped) {
+          continue;
+        }
+
+        if (prevElem.match + prevElem.matchLength < currentElem.match) {
+          break;
+        }
+
+        if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {
+          currentElem.skipped = true;
+          return true;
+        }
+      }
+
+      return false;
     }
 
-    return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, 
this.l10n.get("document_properties_page_size_unit_" + (this._isNonMetricLocale ? "inches" : "millimeters"), 
null, this._isNonMetricLocale ? "in" : "mm"), pageName, 
this.l10n.get("document_properties_page_size_orientation_" + (isPortrait ? "portrait" : "landscape"), null, 
isPortrait ? "portrait" : "landscape")]).then(([{
-      width,
-      height
-    }, unit, name, orientation]) => {
-      return this.l10n.get("document_properties_page_size_dimension_" + (name ? "name_" : "") + "string", {
-        width: width.toLocaleString(),
-        height: height.toLocaleString(),
-        unit,
-        name,
-        orientation
-      }, "{{width}} × {{height}} {{unit}} (" + (name ? "{{name}}, " : "") + "{{orientation}})");
+    matchesWithLength.sort(function (a, b) {
+      return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;
     });
+
+    for (let i = 0, len = matchesWithLength.length; i < len; i++) {
+      if (isSubTerm(i)) {
+        continue;
+      }
+
+      matches.push(matchesWithLength[i].match);
+      matchesLength.push(matchesWithLength[i].matchLength);
+    }
   }
 
-  async _parseDate(inputDate) {
-    const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate);
+  _isEntireWord(content, startIdx, length) {
+    if (startIdx > 0) {
+      const first = content.charCodeAt(startIdx);
+      const limit = content.charCodeAt(startIdx - 1);
 
-    if (!dateObject) {
-      return undefined;
+      if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
+        return false;
+      }
     }
 
-    return this.l10n.get("document_properties_date_string", {
-      date: dateObject.toLocaleDateString(),
-      time: dateObject.toLocaleTimeString()
-    }, "{{date}}, {{time}}");
-  }
+    const endIdx = startIdx + length - 1;
 
-  _parseLinearization(isLinearized) {
-    return this.l10n.get("document_properties_linearized_" + (isLinearized ? "yes" : "no"), null, 
isLinearized ? "Yes" : "No");
-  }
+    if (endIdx < content.length - 1) {
+      const last = content.charCodeAt(endIdx);
+      const limit = content.charCodeAt(endIdx + 1);
 
-}
+      if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) {
+        return false;
+      }
+    }
 
-exports.PDFDocumentProperties = PDFDocumentProperties;
+    return true;
+  }
 
-/***/ }),
-/* 15 */
-/***/ (function(module, exports, __webpack_require__) {
+  _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {
+    const matches = [],
+          matchesLength = [];
+    const queryLen = query.length;
+    let matchIdx = -queryLen;
 
-"use strict";
+    while (true) {
+      matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
 
+      if (matchIdx === -1) {
+        break;
+      }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PDFFindBar = void 0;
+      if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {
+        continue;
+      }
 
-var _pdf_find_controller = __webpack_require__(16);
+      const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),
+            matchEnd = matchIdx + queryLen - 1,
+            originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;
+      matches.push(originalMatchIdx);
+      matchesLength.push(originalQueryLen);
+    }
 
-var _ui_utils = __webpack_require__(2);
+    this._pageMatches[pageIndex] = matches;
+    this._pageMatchesLength[pageIndex] = matchesLength;
+  }
 
-const MATCHES_COUNT_LIMIT = 1000;
+  _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {
+    const matchesWithLength = [];
+    const queryArray = query.match(/\S+/g);
 
-class PDFFindBar {
-  constructor(options, eventBus, l10n = _ui_utils.NullL10n) {
-    this.opened = false;
-    this.bar = options.bar || null;
-    this.toggleButton = options.toggleButton || null;
-    this.findField = options.findField || null;
-    this.highlightAll = options.highlightAllCheckbox || null;
-    this.caseSensitive = options.caseSensitiveCheckbox || null;
-    this.entireWord = options.entireWordCheckbox || null;
-    this.findMsg = options.findMsg || null;
-    this.findResultsCount = options.findResultsCount || null;
-    this.findPreviousButton = options.findPreviousButton || null;
-    this.findNextButton = options.findNextButton || null;
-    this.eventBus = eventBus;
-    this.l10n = l10n;
-    this.toggleButton.addEventListener("click", () => {
-      this.toggle();
-    });
-    this.findField.addEventListener("input", () => {
-      this.dispatchEvent("");
-    });
-    this.bar.addEventListener("keydown", e => {
-      switch (e.keyCode) {
-        case 13:
-          if (e.target === this.findField) {
-            this.dispatchEvent("again", e.shiftKey);
-          }
+    for (let i = 0, len = queryArray.length; i < len; i++) {
+      const subquery = queryArray[i];
+      const subqueryLen = subquery.length;
+      let matchIdx = -subqueryLen;
 
-          break;
+      while (true) {
+        matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);
 
-        case 27:
-          this.close();
+        if (matchIdx === -1) {
           break;
+        }
+
+        if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {
+          continue;
+        }
+
+        const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),
+              matchEnd = matchIdx + subqueryLen - 1,
+              originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;
+        matchesWithLength.push({
+          match: originalMatchIdx,
+          matchLength: originalQueryLen,
+          skipped: false
+        });
       }
-    });
-    this.findPreviousButton.addEventListener("click", () => {
-      this.dispatchEvent("again", true);
-    });
-    this.findNextButton.addEventListener("click", () => {
-      this.dispatchEvent("again", false);
-    });
-    this.highlightAll.addEventListener("click", () => {
-      this.dispatchEvent("highlightallchange");
-    });
-    this.caseSensitive.addEventListener("click", () => {
-      this.dispatchEvent("casesensitivitychange");
-    });
-    this.entireWord.addEventListener("click", () => {
-      this.dispatchEvent("entirewordchange");
-    });
+    }
 
-    this.eventBus._on("resize", this._adjustWidth.bind(this));
-  }
+    this._pageMatchesLength[pageIndex] = [];
+    this._pageMatches[pageIndex] = [];
 
-  reset() {
-    this.updateUIState();
+    this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], 
this._pageMatchesLength[pageIndex]);
   }
 
-  dispatchEvent(type, findPrev) {
-    this.eventBus.dispatch("find", {
-      source: this,
-      type,
-      query: this.findField.value,
-      phraseSearch: true,
-      caseSensitive: this.caseSensitive.checked,
-      entireWord: this.entireWord.checked,
-      highlightAll: this.highlightAll.checked,
-      findPrevious: findPrev
-    });
-  }
+  _calculateMatch(pageIndex) {
+    let pageContent = this._pageContents[pageIndex];
+    const pageDiffs = this._pageDiffs[pageIndex];
+    let query = this._query;
+    const {
+      caseSensitive,
+      entireWord,
+      phraseSearch
+    } = this._state;
 
-  updateUIState(state, previous, matchesCount) {
-    let notFound = false;
-    let findMsg = "";
-    let status = "";
+    if (query.length === 0) {
+      return;
+    }
 
-    switch (state) {
-      case _pdf_find_controller.FindState.FOUND:
-        break;
+    if (!caseSensitive) {
+      pageContent = pageContent.toLowerCase();
+      query = query.toLowerCase();
+    }
 
-      case _pdf_find_controller.FindState.PENDING:
-        status = "pending";
-        break;
+    if (phraseSearch) {
+      this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord);
+    } else {
+      this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord);
+    }
 
-      case _pdf_find_controller.FindState.NOT_FOUND:
-        findMsg = this.l10n.get("find_not_found", null, "Phrase not found");
-        notFound = true;
-        break;
+    if (this._state.highlightAll) {
+      this._updatePage(pageIndex);
+    }
 
-      case _pdf_find_controller.FindState.WRAPPED:
-        if (previous) {
-          findMsg = this.l10n.get("find_reached_top", null, "Reached top of document, continued from 
bottom");
-        } else {
-          findMsg = this.l10n.get("find_reached_bottom", null, "Reached end of document, continued from 
top");
-        }
+    if (this._resumePageIdx === pageIndex) {
+      this._resumePageIdx = null;
 
-        break;
+      this._nextPageMatch();
     }
 
-    this.findField.classList.toggle("notFound", notFound);
-    this.findField.setAttribute("data-status", status);
-    Promise.resolve(findMsg).then(msg => {
-      this.findMsg.textContent = msg;
+    const pageMatchesCount = this._pageMatches[pageIndex].length;
+
+    if (pageMatchesCount > 0) {
+      this._matchesCountTotal += pageMatchesCount;
 
-      this._adjustWidth();
-    });
-    this.updateResultsCount(matchesCount);
+      this._updateUIResultsCount();
+    }
   }
 
-  updateResultsCount({
-    current = 0,
-    total = 0
-  } = {}) {
-    if (!this.findResultsCount) {
+  _extractText() {
+    if (this._extractTextPromises.length > 0) {
       return;
     }
 
-    const limit = MATCHES_COUNT_LIMIT;
-    let matchesCountMsg = "";
+    let promise = Promise.resolve();
 
-    if (total > 0) {
-      if (total > limit) {
-        matchesCountMsg = this.l10n.get("find_match_count_limit", {
-          limit
-        }, "More than {{limit}} match" + (limit !== 1 ? "es" : ""));
-      } else {
-        matchesCountMsg = this.l10n.get("find_match_count", {
-          current,
-          total
-        }, "{{current}} of {{total}} match" + (total !== 1 ? "es" : ""));
-      }
-    }
+    for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {
+      const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();
+      this._extractTextPromises[i] = extractTextCapability.promise;
+      promise = promise.then(() => {
+        return this._pdfDocument.getPage(i + 1).then(pdfPage => {
+          return pdfPage.getTextContent({
+            normalizeWhitespace: true
+          });
+        }).then(textContent => {
+          const textItems = textContent.items;
+          const strBuf = [];
 
-    Promise.resolve(matchesCountMsg).then(msg => {
-      this.findResultsCount.textContent = msg;
-      this.findResultsCount.classList.toggle("hidden", !total);
+          for (let j = 0, jj = textItems.length; j < jj; j++) {
+            strBuf.push(textItems[j].str);
+          }
 
-      this._adjustWidth();
-    });
+          [this._pageContents[i], this._pageDiffs[i]] = normalize(strBuf.join(""));
+          extractTextCapability.resolve(i);
+        }, reason => {
+          console.error(`Unable to get text content for page ${i + 1}`, reason);
+          this._pageContents[i] = "";
+          this._pageDiffs[i] = null;
+          extractTextCapability.resolve(i);
+        });
+      });
+    }
   }
 
-  open() {
-    if (!this.opened) {
-      this.opened = true;
-      this.toggleButton.classList.add("toggled");
-      this.bar.classList.remove("hidden");
+  _updatePage(index) {
+    if (this._scrollMatches && this._selected.pageIdx === index) {
+      this._linkService.page = index + 1;
     }
 
-    this.findField.select();
-    this.findField.focus();
-
-    this._adjustWidth();
+    this._eventBus.dispatch("updatetextlayermatches", {
+      source: this,
+      pageIndex: index
+    });
   }
 
-  close() {
-    if (!this.opened) {
-      return;
-    }
-
-    this.opened = false;
-    this.toggleButton.classList.remove("toggled");
-    this.bar.classList.add("hidden");
-    this.eventBus.dispatch("findbarclose", {
-      source: this
+  _updateAllPages() {
+    this._eventBus.dispatch("updatetextlayermatches", {
+      source: this,
+      pageIndex: -1
     });
   }
 
-  toggle() {
-    if (this.opened) {
-      this.close();
-    } else {
-      this.open();
+  _nextMatch() {
+    const previous = this._state.findPrevious;
+    const currentPageIndex = this._linkService.page - 1;
+    const numPages = this._linkService.pagesCount;
+    this._highlightMatches = true;
+
+    if (this._dirtyMatch) {
+      this._dirtyMatch = false;
+      this._selected.pageIdx = this._selected.matchIdx = -1;
+      this._offset.pageIdx = currentPageIndex;
+      this._offset.matchIdx = null;
+      this._offset.wrapped = false;
+      this._resumePageIdx = null;
+      this._pageMatches.length = 0;
+      this._pageMatchesLength.length = 0;
+      this._matchesCountTotal = 0;
+
+      this._updateAllPages();
+
+      for (let i = 0; i < numPages; i++) {
+        if (this._pendingFindMatches[i] === true) {
+          continue;
+        }
+
+        this._pendingFindMatches[i] = true;
+
+        this._extractTextPromises[i].then(pageIdx => {
+          delete this._pendingFindMatches[pageIdx];
+
+          this._calculateMatch(pageIdx);
+        });
+      }
     }
-  }
 
-  _adjustWidth() {
-    if (!this.opened) {
+    if (this._query === "") {
+      this._updateUIState(FindState.FOUND);
+
       return;
     }
 
-    this.bar.classList.remove("wrapContainers");
-    const findbarHeight = this.bar.clientHeight;
-    const inputContainerHeight = this.bar.firstElementChild.clientHeight;
-
-    if (findbarHeight > inputContainerHeight) {
-      this.bar.classList.add("wrapContainers");
+    if (this._resumePageIdx) {
+      return;
     }
-  }
 
-}
+    const offset = this._offset;
+    this._pagesToSearch = numPages;
 
-exports.PDFFindBar = PDFFindBar;
+    if (offset.matchIdx !== null) {
+      const numPageMatches = this._pageMatches[offset.pageIdx].length;
 
-/***/ }),
-/* 16 */
-/***/ (function(module, exports, __webpack_require__) {
+      if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {
+        offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
 
-"use strict";
+        this._updateMatch(true);
 
+        return;
+      }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PDFFindController = exports.FindState = void 0;
+      this._advanceOffsetPage(previous);
+    }
 
-var _pdfjsLib = __webpack_require__(5);
+    this._nextPageMatch();
+  }
 
-var _pdf_find_utils = __webpack_require__(17);
+  _matchesReady(matches) {
+    const offset = this._offset;
+    const numMatches = matches.length;
+    const previous = this._state.findPrevious;
 
-var _ui_utils = __webpack_require__(2);
+    if (numMatches) {
+      offset.matchIdx = previous ? numMatches - 1 : 0;
 
-const FindState = {
-  FOUND: 0,
-  NOT_FOUND: 1,
-  WRAPPED: 2,
-  PENDING: 3
-};
-exports.FindState = FindState;
-const FIND_TIMEOUT = 250;
-const MATCH_SCROLL_OFFSET_TOP = -50;
-const MATCH_SCROLL_OFFSET_LEFT = -400;
-const CHARACTERS_TO_NORMALIZE = {
-  "\u2018": "'",
-  "\u2019": "'",
-  "\u201A": "'",
-  "\u201B": "'",
-  "\u201C": '"',
-  "\u201D": '"',
-  "\u201E": '"',
-  "\u201F": '"',
-  "\u00BC": "1/4",
-  "\u00BD": "1/2",
-  "\u00BE": "3/4"
-};
-let normalizationRegex = null;
+      this._updateMatch(true);
 
-function normalize(text) {
-  if (!normalizationRegex) {
-    const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join("");
-    normalizationRegex = new RegExp(`[${replace}]`, "g");
-  }
+      return true;
+    }
 
-  return text.replace(normalizationRegex, function (ch) {
-    return CHARACTERS_TO_NORMALIZE[ch];
-  });
-}
+    this._advanceOffsetPage(previous);
 
-class PDFFindController {
-  constructor({
-    linkService,
-    eventBus
-  }) {
-    this._linkService = linkService;
-    this._eventBus = eventBus;
+    if (offset.wrapped) {
+      offset.matchIdx = null;
 
-    this._reset();
+      if (this._pagesToSearch < 0) {
+        this._updateMatch(false);
 
-    eventBus._on("findbarclose", this._onFindBarClose.bind(this));
-  }
+        return true;
+      }
+    }
 
-  get highlightMatches() {
-    return this._highlightMatches;
+    return false;
   }
 
-  get pageMatches() {
-    return this._pageMatches;
-  }
+  _nextPageMatch() {
+    if (this._resumePageIdx !== null) {
+      console.error("There can only be one pending page.");
+    }
 
-  get pageMatchesLength() {
-    return this._pageMatchesLength;
+    let matches = null;
+
+    do {
+      const pageIdx = this._offset.pageIdx;
+      matches = this._pageMatches[pageIdx];
+
+      if (!matches) {
+        this._resumePageIdx = pageIdx;
+        break;
+      }
+    } while (!this._matchesReady(matches));
   }
 
-  get selected() {
-    return this._selected;
+  _advanceOffsetPage(previous) {
+    const offset = this._offset;
+    const numPages = this._linkService.pagesCount;
+    offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
+    offset.matchIdx = null;
+    this._pagesToSearch--;
+
+    if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
+      offset.pageIdx = previous ? numPages - 1 : 0;
+      offset.wrapped = true;
+    }
   }
 
-  get state() {
-    return this._state;
-  }
+  _updateMatch(found = false) {
+    let state = FindState.NOT_FOUND;
+    const wrapped = this._offset.wrapped;
+    this._offset.wrapped = false;
 
-  setDocument(pdfDocument) {
-    if (this._pdfDocument) {
-      this._reset();
-    }
+    if (found) {
+      const previousPage = this._selected.pageIdx;
+      this._selected.pageIdx = this._offset.pageIdx;
+      this._selected.matchIdx = this._offset.matchIdx;
+      state = wrapped ? FindState.WRAPPED : FindState.FOUND;
 
-    if (!pdfDocument) {
-      return;
+      if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
+        this._updatePage(previousPage);
+      }
     }
 
-    this._pdfDocument = pdfDocument;
+    this._updateUIState(state, this._state.findPrevious);
 
-    this._firstPageCapability.resolve();
-  }
+    if (this._selected.pageIdx !== -1) {
+      this._scrollMatches = true;
 
-  executeCommand(cmd, state) {
-    if (!state) {
-      return;
+      this._updatePage(this._selected.pageIdx);
     }
+  }
 
+  _onFindBarClose(evt) {
     const pdfDocument = this._pdfDocument;
 
-    if (this._state === null || this._shouldDirtyMatch(cmd, state)) {
-      this._dirtyMatch = true;
-    }
-
-    this._state = state;
-
-    if (cmd !== "findhighlightallchange") {
-      this._updateUIState(FindState.PENDING);
-    }
-
     this._firstPageCapability.promise.then(() => {
       if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) {
         return;
       }
 
-      this._extractText();
-
-      const findbarClosed = !this._highlightMatches;
-      const pendingTimeout = !!this._findTimeout;
-
       if (this._findTimeout) {
         clearTimeout(this._findTimeout);
         this._findTimeout = null;
       }
 
-      if (cmd === "find") {
-        this._findTimeout = setTimeout(() => {
-          this._nextMatch();
+      if (this._resumePageIdx) {
+        this._resumePageIdx = null;
+        this._dirtyMatch = true;
+      }
 
-          this._findTimeout = null;
-        }, FIND_TIMEOUT);
-      } else if (this._dirtyMatch) {
-        this._nextMatch();
-      } else if (cmd === "findagain") {
-        this._nextMatch();
+      this._updateUIState(FindState.FOUND);
 
-        if (findbarClosed && this._state.highlightAll) {
-          this._updateAllPages();
-        }
-      } else if (cmd === "findhighlightallchange") {
-        if (pendingTimeout) {
-          this._nextMatch();
-        } else {
-          this._highlightMatches = true;
-        }
+      this._highlightMatches = false;
 
-        this._updateAllPages();
-      } else {
-        this._nextMatch();
-      }
+      this._updateAllPages();
     });
   }
 
-  scrollMatchIntoView({
-    element = null,
-    pageIndex = -1,
-    matchIndex = -1
-  }) {
-    if (!this._scrollMatches || !element) {
-      return;
-    } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {
-      return;
-    } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {
-      return;
+  _requestMatchesCount() {
+    const {
+      pageIdx,
+      matchIdx
+    } = this._selected;
+    let current = 0,
+        total = this._matchesCountTotal;
+
+    if (matchIdx !== -1) {
+      for (let i = 0; i < pageIdx; i++) {
+        current += this._pageMatches[i] && this._pageMatches[i].length || 0;
+      }
+
+      current += matchIdx + 1;
     }
 
-    this._scrollMatches = false;
-    const spot = {
-      top: MATCH_SCROLL_OFFSET_TOP,
-      left: MATCH_SCROLL_OFFSET_LEFT
-    };
-    (0, _ui_utils.scrollIntoView)(element, spot, true);
-  }
+    if (current < 1 || current > total) {
+      current = total = 0;
+    }
 
-  _reset() {
-    this._highlightMatches = false;
-    this._scrollMatches = false;
-    this._pdfDocument = null;
-    this._pageMatches = [];
-    this._pageMatchesLength = [];
-    this._state = null;
-    this._selected = {
-      pageIdx: -1,
-      matchIdx: -1
-    };
-    this._offset = {
-      pageIdx: null,
-      matchIdx: null,
-      wrapped: false
+    return {
+      current,
+      total
     };
-    this._extractTextPromises = [];
-    this._pageContents = [];
-    this._matchesCountTotal = 0;
-    this._pagesToSearch = null;
-    this._pendingFindMatches = Object.create(null);
-    this._resumePageIdx = null;
-    this._dirtyMatch = false;
-    clearTimeout(this._findTimeout);
-    this._findTimeout = null;
-    this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
   }
 
-  get _query() {
-    if (this._state.query !== this._rawQuery) {
-      this._rawQuery = this._state.query;
-      this._normalizedQuery = normalize(this._state.query);
-    }
+  _updateUIResultsCount() {
+    this._eventBus.dispatch("updatefindmatchescount", {
+      source: this,
+      matchesCount: this._requestMatchesCount()
+    });
+  }
 
-    return this._normalizedQuery;
+  _updateUIState(state, previous) {
+    this._eventBus.dispatch("updatefindcontrolstate", {
+      source: this,
+      state,
+      previous,
+      matchesCount: this._requestMatchesCount(),
+      rawQuery: this._state ? this._state.query : null
+    });
   }
 
-  _shouldDirtyMatch(cmd, state) {
-    if (state.query !== this._state.query) {
-      return true;
+}
+
+exports.PDFFindController = PDFFindController;
+
+/***/ }),
+/* 16 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.getCharacterType = getCharacterType;
+exports.CharacterType = void 0;
+const CharacterType = {
+  SPACE: 0,
+  ALPHA_LETTER: 1,
+  PUNCT: 2,
+  HAN_LETTER: 3,
+  KATAKANA_LETTER: 4,
+  HIRAGANA_LETTER: 5,
+  HALFWIDTH_KATAKANA_LETTER: 6,
+  THAI_LETTER: 7
+};
+exports.CharacterType = CharacterType;
+
+function isAlphabeticalScript(charCode) {
+  return charCode < 0x2e80;
+}
+
+function isAscii(charCode) {
+  return (charCode & 0xff80) === 0;
+}
+
+function isAsciiAlpha(charCode) {
+  return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a;
+}
+
+function isAsciiDigit(charCode) {
+  return charCode >= 0x30 && charCode <= 0x39;
+}
+
+function isAsciiSpace(charCode) {
+  return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a;
+}
+
+function isHan(charCode) {
+  return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff;
+}
+
+function isKatakana(charCode) {
+  return charCode >= 0x30a0 && charCode <= 0x30ff;
+}
+
+function isHiragana(charCode) {
+  return charCode >= 0x3040 && charCode <= 0x309f;
+}
+
+function isHalfwidthKatakana(charCode) {
+  return charCode >= 0xff60 && charCode <= 0xff9f;
+}
+
+function isThai(charCode) {
+  return (charCode & 0xff80) === 0x0e00;
+}
+
+function getCharacterType(charCode) {
+  if (isAlphabeticalScript(charCode)) {
+    if (isAscii(charCode)) {
+      if (isAsciiSpace(charCode)) {
+        return CharacterType.SPACE;
+      } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) {
+        return CharacterType.ALPHA_LETTER;
+      }
+
+      return CharacterType.PUNCT;
+    } else if (isThai(charCode)) {
+      return CharacterType.THAI_LETTER;
+    } else if (charCode === 0xa0) {
+      return CharacterType.SPACE;
     }
 
-    switch (cmd) {
-      case "findagain":
-        const pageNumber = this._selected.pageIdx + 1;
-        const linkService = this._linkService;
+    return CharacterType.ALPHA_LETTER;
+  }
+
+  if (isHan(charCode)) {
+    return CharacterType.HAN_LETTER;
+  } else if (isKatakana(charCode)) {
+    return CharacterType.KATAKANA_LETTER;
+  } else if (isHiragana(charCode)) {
+    return CharacterType.HIRAGANA_LETTER;
+  } else if (isHalfwidthKatakana(charCode)) {
+    return CharacterType.HALFWIDTH_KATAKANA_LETTER;
+  }
 
-        if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && 
!linkService.isPageVisible(pageNumber)) {
-          return true;
-        }
+  return CharacterType.ALPHA_LETTER;
+}
 
-        return false;
+/***/ }),
+/* 17 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-      case "findhighlightallchange":
-        return false;
-    }
 
-    return true;
-  }
 
-  _prepareMatches(matchesWithLength, matches, matchesLength) {
-    function isSubTerm(currentIndex) {
-      const currentElem = matchesWithLength[currentIndex];
-      const nextElem = matchesWithLength[currentIndex + 1];
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.isDestArraysEqual = isDestArraysEqual;
+exports.isDestHashesEqual = isDestHashesEqual;
+exports.PDFHistory = void 0;
 
-      if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {
-        currentElem.skipped = true;
-        return true;
-      }
+var _ui_utils = __webpack_require__(4);
 
-      for (let i = currentIndex - 1; i >= 0; i--) {
-        const prevElem = matchesWithLength[i];
+const HASH_CHANGE_TIMEOUT = 1000;
+const POSITION_UPDATED_THRESHOLD = 50;
+const UPDATE_VIEWAREA_TIMEOUT = 1000;
 
-        if (prevElem.skipped) {
-          continue;
-        }
+function getCurrentHash() {
+  return document.location.hash;
+}
 
-        if (prevElem.match + prevElem.matchLength < currentElem.match) {
-          break;
-        }
+class PDFHistory {
+  constructor({
+    linkService,
+    eventBus
+  }) {
+    this.linkService = linkService;
+    this.eventBus = eventBus;
+    this._initialized = false;
+    this._fingerprint = "";
+    this.reset();
+    this._boundEvents = null;
+    this._isViewerInPresentationMode = false;
 
-        if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {
-          currentElem.skipped = true;
-          return true;
-        }
-      }
+    this.eventBus._on("presentationmodechanged", evt => {
+      this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL;
+    });
 
-      return false;
-    }
+    this.eventBus._on("pagesinit", () => {
+      this._isPagesLoaded = false;
 
-    matchesWithLength.sort(function (a, b) {
-      return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;
+      this.eventBus._on("pagesloaded", evt => {
+        this._isPagesLoaded = !!evt.pagesCount;
+      }, {
+        once: true
+      });
     });
+  }
 
-    for (let i = 0, len = matchesWithLength.length; i < len; i++) {
-      if (isSubTerm(i)) {
-        continue;
-      }
+  initialize({
+    fingerprint,
+    resetHistory = false,
+    updateUrl = false
+  }) {
+    if (!fingerprint || typeof fingerprint !== "string") {
+      console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
+      return;
+    }
 
-      matches.push(matchesWithLength[i].match);
-      matchesLength.push(matchesWithLength[i].matchLength);
+    if (this._initialized) {
+      this.reset();
     }
-  }
 
-  _isEntireWord(content, startIdx, length) {
-    if (startIdx > 0) {
-      const first = content.charCodeAt(startIdx);
-      const limit = content.charCodeAt(startIdx - 1);
+    const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint;
+    this._fingerprint = fingerprint;
+    this._updateUrl = updateUrl === true;
+    this._initialized = true;
 
-      if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
-        return false;
-      }
-    }
+    this._bindEvents();
 
-    const endIdx = startIdx + length - 1;
+    const state = window.history.state;
+    this._popStateInProgress = false;
+    this._blockHashChange = 0;
+    this._currentHash = getCurrentHash();
+    this._numPositionUpdates = 0;
+    this._uid = this._maxUid = 0;
+    this._destination = null;
+    this._position = null;
 
-    if (endIdx < content.length - 1) {
-      const last = content.charCodeAt(endIdx);
-      const limit = content.charCodeAt(endIdx + 1);
+    if (!this._isValidState(state, true) || resetHistory) {
+      const {
+        hash,
+        page,
+        rotation
+      } = this._parseCurrentHash(true);
 
-      if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) {
-        return false;
-      }
-    }
+      if (!hash || reInitialized || resetHistory) {
+        this._pushOrReplaceState(null, true);
 
-    return true;
-  }
+        return;
+      }
 
-  _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) {
-    const matches = [];
-    const queryLen = query.length;
-    let matchIdx = -queryLen;
+      this._pushOrReplaceState({
+        hash,
+        page,
+        rotation
+      }, true);
 
-    while (true) {
-      matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
+      return;
+    }
 
-      if (matchIdx === -1) {
-        break;
-      }
+    const destination = state.destination;
 
-      if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {
-        continue;
-      }
+    this._updateInternalState(destination, state.uid, true);
 
-      matches.push(matchIdx);
+    if (destination.rotation !== undefined) {
+      this._initialRotation = destination.rotation;
     }
 
-    this._pageMatches[pageIndex] = matches;
+    if (destination.dest) {
+      this._initialBookmark = JSON.stringify(destination.dest);
+      this._destination.page = null;
+    } else if (destination.hash) {
+      this._initialBookmark = destination.hash;
+    } else if (destination.page) {
+      this._initialBookmark = `page=${destination.page}`;
+    }
   }
 
-  _calculateWordMatch(query, pageIndex, pageContent, entireWord) {
-    const matchesWithLength = [];
-    const queryArray = query.match(/\S+/g);
+  reset() {
+    if (this._initialized) {
+      this._pageHide();
 
-    for (let i = 0, len = queryArray.length; i < len; i++) {
-      const subquery = queryArray[i];
-      const subqueryLen = subquery.length;
-      let matchIdx = -subqueryLen;
+      this._initialized = false;
 
-      while (true) {
-        matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);
+      this._unbindEvents();
+    }
 
-        if (matchIdx === -1) {
-          break;
-        }
+    if (this._updateViewareaTimeout) {
+      clearTimeout(this._updateViewareaTimeout);
+      this._updateViewareaTimeout = null;
+    }
 
-        if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {
-          continue;
-        }
+    this._initialBookmark = null;
+    this._initialRotation = null;
+  }
 
-        matchesWithLength.push({
-          match: matchIdx,
-          matchLength: subqueryLen,
-          skipped: false
-        });
+  push({
+    namedDest = null,
+    explicitDest,
+    pageNumber
+  }) {
+    if (!this._initialized) {
+      return;
+    }
+
+    if (namedDest && typeof namedDest !== "string") {
+      console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`);
+      return;
+    } else if (!Array.isArray(explicitDest)) {
+      console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`);
+      return;
+    } else if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= 
this.linkService.pagesCount)) {
+      if (pageNumber !== null || this._destination) {
+        console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`);
+        return;
       }
     }
 
-    this._pageMatchesLength[pageIndex] = [];
-    this._pageMatches[pageIndex] = [];
+    const hash = namedDest || JSON.stringify(explicitDest);
 
-    this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], 
this._pageMatchesLength[pageIndex]);
-  }
+    if (!hash) {
+      return;
+    }
 
-  _calculateMatch(pageIndex) {
-    let pageContent = this._pageContents[pageIndex];
-    let query = this._query;
-    const {
-      caseSensitive,
-      entireWord,
-      phraseSearch
-    } = this._state;
+    let forceReplace = false;
 
-    if (query.length === 0) {
+    if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || 
isDestArraysEqual(this._destination.dest, explicitDest))) {
+      if (this._destination.page) {
+        return;
+      }
+
+      forceReplace = true;
+    }
+
+    if (this._popStateInProgress && !forceReplace) {
       return;
     }
 
-    if (!caseSensitive) {
-      pageContent = pageContent.toLowerCase();
-      query = query.toLowerCase();
+    this._pushOrReplaceState({
+      dest: explicitDest,
+      hash,
+      page: pageNumber,
+      rotation: this.linkService.rotation
+    }, forceReplace);
+
+    if (!this._popStateInProgress) {
+      this._popStateInProgress = true;
+      Promise.resolve().then(() => {
+        this._popStateInProgress = false;
+      });
     }
+  }
 
-    if (phraseSearch) {
-      this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord);
-    } else {
-      this._calculateWordMatch(query, pageIndex, pageContent, entireWord);
+  pushPage(pageNumber) {
+    if (!this._initialized) {
+      return;
     }
 
-    if (this._state.highlightAll) {
-      this._updatePage(pageIndex);
+    if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {
+      console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`);
+      return;
     }
 
-    if (this._resumePageIdx === pageIndex) {
-      this._resumePageIdx = null;
-
-      this._nextPageMatch();
+    if (this._destination?.page === pageNumber) {
+      return;
     }
 
-    const pageMatchesCount = this._pageMatches[pageIndex].length;
+    if (this._popStateInProgress) {
+      return;
+    }
 
-    if (pageMatchesCount > 0) {
-      this._matchesCountTotal += pageMatchesCount;
+    this._pushOrReplaceState({
+      hash: `page=${pageNumber}`,
+      page: pageNumber,
+      rotation: this.linkService.rotation
+    });
 
-      this._updateUIResultsCount();
+    if (!this._popStateInProgress) {
+      this._popStateInProgress = true;
+      Promise.resolve().then(() => {
+        this._popStateInProgress = false;
+      });
     }
   }
 
-  _extractText() {
-    if (this._extractTextPromises.length > 0) {
+  pushCurrentPosition() {
+    if (!this._initialized || this._popStateInProgress) {
       return;
     }
 
-    let promise = Promise.resolve();
+    this._tryPushCurrentPosition();
+  }
 
-    for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {
-      const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();
-      this._extractTextPromises[i] = extractTextCapability.promise;
-      promise = promise.then(() => {
-        return this._pdfDocument.getPage(i + 1).then(pdfPage => {
-          return pdfPage.getTextContent({
-            normalizeWhitespace: true
-          });
-        }).then(textContent => {
-          const textItems = textContent.items;
-          const strBuf = [];
+  back() {
+    if (!this._initialized || this._popStateInProgress) {
+      return;
+    }
 
-          for (let j = 0, jj = textItems.length; j < jj; j++) {
-            strBuf.push(textItems[j].str);
-          }
+    const state = window.history.state;
 
-          this._pageContents[i] = normalize(strBuf.join(""));
-          extractTextCapability.resolve(i);
-        }, reason => {
-          console.error(`Unable to get text content for page ${i + 1}`, reason);
-          this._pageContents[i] = "";
-          extractTextCapability.resolve(i);
-        });
-      });
+    if (this._isValidState(state) && state.uid > 0) {
+      window.history.back();
     }
   }
 
-  _updatePage(index) {
-    if (this._scrollMatches && this._selected.pageIdx === index) {
-      this._linkService.page = index + 1;
+  forward() {
+    if (!this._initialized || this._popStateInProgress) {
+      return;
     }
 
-    this._eventBus.dispatch("updatetextlayermatches", {
-      source: this,
-      pageIndex: index
-    });
+    const state = window.history.state;
+
+    if (this._isValidState(state) && state.uid < this._maxUid) {
+      window.history.forward();
+    }
   }
 
-  _updateAllPages() {
-    this._eventBus.dispatch("updatetextlayermatches", {
-      source: this,
-      pageIndex: -1
-    });
+  get popStateInProgress() {
+    return this._initialized && (this._popStateInProgress || this._blockHashChange > 0);
   }
 
-  _nextMatch() {
-    const previous = this._state.findPrevious;
-    const currentPageIndex = this._linkService.page - 1;
-    const numPages = this._linkService.pagesCount;
-    this._highlightMatches = true;
+  get initialBookmark() {
+    return this._initialized ? this._initialBookmark : null;
+  }
 
-    if (this._dirtyMatch) {
-      this._dirtyMatch = false;
-      this._selected.pageIdx = this._selected.matchIdx = -1;
-      this._offset.pageIdx = currentPageIndex;
-      this._offset.matchIdx = null;
-      this._offset.wrapped = false;
-      this._resumePageIdx = null;
-      this._pageMatches.length = 0;
-      this._pageMatchesLength.length = 0;
-      this._matchesCountTotal = 0;
+  get initialRotation() {
+    return this._initialized ? this._initialRotation : null;
+  }
 
-      this._updateAllPages();
+  _pushOrReplaceState(destination, forceReplace = false) {
+    const shouldReplace = forceReplace || !this._destination;
+    const newState = {
+      fingerprint: this._fingerprint,
+      uid: shouldReplace ? this._uid : this._uid + 1,
+      destination
+    };
 
-      for (let i = 0; i < numPages; i++) {
-        if (this._pendingFindMatches[i] === true) {
-          continue;
-        }
+    this._updateInternalState(destination, newState.uid);
 
-        this._pendingFindMatches[i] = true;
+    let newUrl;
 
-        this._extractTextPromises[i].then(pageIdx => {
-          delete this._pendingFindMatches[pageIdx];
+    if (this._updateUrl && destination?.hash) {
+      const baseUrl = document.location.href.split("#")[0];
 
-          this._calculateMatch(pageIdx);
-        });
+      if (!baseUrl.startsWith("file://")) {
+        newUrl = `${baseUrl}#${destination.hash}`;
       }
     }
 
-    if (this._query === "") {
-      this._updateUIState(FindState.FOUND);
+// FIXME: This currently breaks Epiphany due to rewriting history with baseUrl
+return;
+    if (shouldReplace) {
+      window.history.replaceState(newState, "", newUrl);
+    } else {
+      window.history.pushState(newState, "", newUrl);
+    }
+  }
 
+  _tryPushCurrentPosition(temporary = false) {
+    if (!this._position) {
       return;
     }
 
-    if (this._resumePageIdx) {
+    let position = this._position;
+
+    if (temporary) {
+      position = Object.assign(Object.create(null), this._position);
+      position.temporary = true;
+    }
+
+    if (!this._destination) {
+      this._pushOrReplaceState(position);
+
       return;
     }
 
-    const offset = this._offset;
-    this._pagesToSearch = numPages;
+    if (this._destination.temporary) {
+      this._pushOrReplaceState(position, true);
 
-    if (offset.matchIdx !== null) {
-      const numPageMatches = this._pageMatches[offset.pageIdx].length;
+      return;
+    }
 
-      if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {
-        offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
+    if (this._destination.hash === position.hash) {
+      return;
+    }
 
-        this._updateMatch(true);
+    if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= 
POSITION_UPDATED_THRESHOLD)) {
+      return;
+    }
+
+    let forceReplace = false;
 
+    if (this._destination.page >= position.first && this._destination.page <= position.page) {
+      if (this._destination.dest || !this._destination.first) {
         return;
       }
 
-      this._advanceOffsetPage(previous);
+      forceReplace = true;
     }
 
-    this._nextPageMatch();
+    this._pushOrReplaceState(position, forceReplace);
   }
 
-  _matchesReady(matches) {
-    const offset = this._offset;
-    const numMatches = matches.length;
-    const previous = this._state.findPrevious;
+  _isValidState(state, checkReload = false) {
+    if (!state) {
+      return false;
+    }
 
-    if (numMatches) {
-      offset.matchIdx = previous ? numMatches - 1 : 0;
+    if (state.fingerprint !== this._fingerprint) {
+      if (checkReload) {
+        if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) {
+          return false;
+        }
 
-      this._updateMatch(true);
+        const [perfEntry] = performance.getEntriesByType("navigation");
 
-      return true;
+        if (perfEntry?.type !== "reload") {
+          return false;
+        }
+      } else {
+        return false;
+      }
     }
 
-    this._advanceOffsetPage(previous);
-
-    if (offset.wrapped) {
-      offset.matchIdx = null;
-
-      if (this._pagesToSearch < 0) {
-        this._updateMatch(false);
+    if (!Number.isInteger(state.uid) || state.uid < 0) {
+      return false;
+    }
 
-        return true;
-      }
+    if (state.destination === null || typeof state.destination !== "object") {
+      return false;
     }
 
-    return false;
+    return true;
   }
 
-  _nextPageMatch() {
-    if (this._resumePageIdx !== null) {
-      console.error("There can only be one pending page.");
+  _updateInternalState(destination, uid, removeTemporary = false) {
+    if (this._updateViewareaTimeout) {
+      clearTimeout(this._updateViewareaTimeout);
+      this._updateViewareaTimeout = null;
     }
 
-    let matches = null;
-
-    do {
-      const pageIdx = this._offset.pageIdx;
-      matches = this._pageMatches[pageIdx];
+    if (removeTemporary && destination?.temporary) {
+      delete destination.temporary;
+    }
 
-      if (!matches) {
-        this._resumePageIdx = pageIdx;
-        break;
-      }
-    } while (!this._matchesReady(matches));
+    this._destination = destination;
+    this._uid = uid;
+    this._maxUid = Math.max(this._maxUid, uid);
+    this._numPositionUpdates = 0;
   }
 
-  _advanceOffsetPage(previous) {
-    const offset = this._offset;
-    const numPages = this._linkService.pagesCount;
-    offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
-    offset.matchIdx = null;
-    this._pagesToSearch--;
+  _parseCurrentHash(checkNameddest = false) {
+    const hash = unescape(getCurrentHash()).substring(1);
+    const params = (0, _ui_utils.parseQueryString)(hash);
+    const nameddest = params.nameddest || "";
+    let page = params.page | 0;
 
-    if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
-      offset.pageIdx = previous ? numPages - 1 : 0;
-      offset.wrapped = true;
+    if (!(Number.isInteger(page) && page > 0 && page <= this.linkService.pagesCount) || checkNameddest && 
nameddest.length > 0) {
+      page = null;
+    }
+
+    return {
+      hash,
+      page,
+      rotation: this.linkService.rotation
+    };
+  }
+
+  _updateViewarea({
+    location
+  }) {
+    if (this._updateViewareaTimeout) {
+      clearTimeout(this._updateViewareaTimeout);
+      this._updateViewareaTimeout = null;
     }
-  }
-
-  _updateMatch(found = false) {
-    let state = FindState.NOT_FOUND;
-    const wrapped = this._offset.wrapped;
-    this._offset.wrapped = false;
 
-    if (found) {
-      const previousPage = this._selected.pageIdx;
-      this._selected.pageIdx = this._offset.pageIdx;
-      this._selected.matchIdx = this._offset.matchIdx;
-      state = wrapped ? FindState.WRAPPED : FindState.FOUND;
+    this._position = {
+      hash: this._isViewerInPresentationMode ? `page=${location.pageNumber}` : 
location.pdfOpenParams.substring(1),
+      page: this.linkService.page,
+      first: location.pageNumber,
+      rotation: location.rotation
+    };
 
-      if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
-        this._updatePage(previousPage);
-      }
+    if (this._popStateInProgress) {
+      return;
     }
 
-    this._updateUIState(state, this._state.findPrevious);
+    if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && 
!this._destination.page) {
+      this._numPositionUpdates++;
+    }
 
-    if (this._selected.pageIdx !== -1) {
-      this._scrollMatches = true;
+    if (UPDATE_VIEWAREA_TIMEOUT > 0) {
+      this._updateViewareaTimeout = setTimeout(() => {
+        if (!this._popStateInProgress) {
+          this._tryPushCurrentPosition(true);
+        }
 
-      this._updatePage(this._selected.pageIdx);
+        this._updateViewareaTimeout = null;
+      }, UPDATE_VIEWAREA_TIMEOUT);
     }
   }
 
-  _onFindBarClose(evt) {
-    const pdfDocument = this._pdfDocument;
+  _popState({
+    state
+  }) {
+    const newHash = getCurrentHash(),
+          hashChanged = this._currentHash !== newHash;
+    this._currentHash = newHash;
 
-    this._firstPageCapability.promise.then(() => {
-      if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) {
-        return;
-      }
+    if (!state) {
+      this._uid++;
 
-      if (this._findTimeout) {
-        clearTimeout(this._findTimeout);
-        this._findTimeout = null;
-      }
+      const {
+        hash,
+        page,
+        rotation
+      } = this._parseCurrentHash();
 
-      if (this._resumePageIdx) {
-        this._resumePageIdx = null;
-        this._dirtyMatch = true;
-      }
+      this._pushOrReplaceState({
+        hash,
+        page,
+        rotation
+      }, true);
 
-      this._updateUIState(FindState.FOUND);
+      return;
+    }
 
-      this._highlightMatches = false;
+    if (!this._isValidState(state)) {
+      return;
+    }
 
-      this._updateAllPages();
-    });
-  }
+    this._popStateInProgress = true;
 
-  _requestMatchesCount() {
-    const {
-      pageIdx,
-      matchIdx
-    } = this._selected;
-    let current = 0,
-        total = this._matchesCountTotal;
+    if (hashChanged) {
+      this._blockHashChange++;
+      (0, _ui_utils.waitOnEventOrTimeout)({
+        target: window,
+        name: "hashchange",
+        delay: HASH_CHANGE_TIMEOUT
+      }).then(() => {
+        this._blockHashChange--;
+      });
+    }
 
-    if (matchIdx !== -1) {
-      for (let i = 0; i < pageIdx; i++) {
-        current += this._pageMatches[i] && this._pageMatches[i].length || 0;
-      }
+    const destination = state.destination;
 
-      current += matchIdx + 1;
-    }
+    this._updateInternalState(destination, state.uid, true);
 
-    if (current < 1 || current > total) {
-      current = total = 0;
+    if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
+      this.linkService.rotation = destination.rotation;
     }
 
-    return {
-      current,
-      total
-    };
-  }
+    if (destination.dest) {
+      this.linkService.goToDestination(destination.dest);
+    } else if (destination.hash) {
+      this.linkService.setHash(destination.hash);
+    } else if (destination.page) {
+      this.linkService.page = destination.page;
+    }
 
-  _updateUIResultsCount() {
-    this._eventBus.dispatch("updatefindmatchescount", {
-      source: this,
-      matchesCount: this._requestMatchesCount()
+    Promise.resolve().then(() => {
+      this._popStateInProgress = false;
     });
   }
 
-  _updateUIState(state, previous) {
-    this._eventBus.dispatch("updatefindcontrolstate", {
-      source: this,
-      state,
-      previous,
-      matchesCount: this._requestMatchesCount(),
-      rawQuery: this._state ? this._state.query : null
-    });
+  _pageHide() {
+    if (!this._destination || this._destination.temporary) {
+      this._tryPushCurrentPosition();
+    }
   }
 
-}
+  _bindEvents() {
+    if (this._boundEvents) {
+      return;
+    }
 
-exports.PDFFindController = PDFFindController;
+    this._boundEvents = {
+      updateViewarea: this._updateViewarea.bind(this),
+      popState: this._popState.bind(this),
+      pageHide: this._pageHide.bind(this)
+    };
 
-/***/ }),
-/* 17 */
-/***/ (function(module, exports, __webpack_require__) {
+    this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea);
 
-"use strict";
+    window.addEventListener("popstate", this._boundEvents.popState);
+    window.addEventListener("pagehide", this._boundEvents.pageHide);
+  }
 
+  _unbindEvents() {
+    if (!this._boundEvents) {
+      return;
+    }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getCharacterType = getCharacterType;
-exports.CharacterType = void 0;
-const CharacterType = {
-  SPACE: 0,
-  ALPHA_LETTER: 1,
-  PUNCT: 2,
-  HAN_LETTER: 3,
-  KATAKANA_LETTER: 4,
-  HIRAGANA_LETTER: 5,
-  HALFWIDTH_KATAKANA_LETTER: 6,
-  THAI_LETTER: 7
-};
-exports.CharacterType = CharacterType;
+    this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea);
 
-function isAlphabeticalScript(charCode) {
-  return charCode < 0x2e80;
-}
+    window.removeEventListener("popstate", this._boundEvents.popState);
+    window.removeEventListener("pagehide", this._boundEvents.pageHide);
+    this._boundEvents = null;
+  }
 
-function isAscii(charCode) {
-  return (charCode & 0xff80) === 0;
 }
 
-function isAsciiAlpha(charCode) {
-  return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a;
-}
+exports.PDFHistory = PDFHistory;
 
-function isAsciiDigit(charCode) {
-  return charCode >= 0x30 && charCode <= 0x39;
-}
+function isDestHashesEqual(destHash, pushHash) {
+  if (typeof destHash !== "string" || typeof pushHash !== "string") {
+    return false;
+  }
 
-function isAsciiSpace(charCode) {
-  return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a;
-}
+  if (destHash === pushHash) {
+    return true;
+  }
 
-function isHan(charCode) {
-  return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff;
-}
+  const {
+    nameddest
+  } = (0, _ui_utils.parseQueryString)(destHash);
 
-function isKatakana(charCode) {
-  return charCode >= 0x30a0 && charCode <= 0x30ff;
-}
+  if (nameddest === pushHash) {
+    return true;
+  }
 
-function isHiragana(charCode) {
-  return charCode >= 0x3040 && charCode <= 0x309f;
+  return false;
 }
 
-function isHalfwidthKatakana(charCode) {
-  return charCode >= 0xff60 && charCode <= 0xff9f;
-}
+function isDestArraysEqual(firstDest, secondDest) {
+  function isEntryEqual(first, second) {
+    if (typeof first !== typeof second) {
+      return false;
+    }
 
-function isThai(charCode) {
-  return (charCode & 0xff80) === 0x0e00;
-}
+    if (Array.isArray(first) || Array.isArray(second)) {
+      return false;
+    }
 
-function getCharacterType(charCode) {
-  if (isAlphabeticalScript(charCode)) {
-    if (isAscii(charCode)) {
-      if (isAsciiSpace(charCode)) {
-        return CharacterType.SPACE;
-      } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) {
-        return CharacterType.ALPHA_LETTER;
+    if (first !== null && typeof first === "object" && second !== null) {
+      if (Object.keys(first).length !== Object.keys(second).length) {
+        return false;
       }
 
-      return CharacterType.PUNCT;
-    } else if (isThai(charCode)) {
-      return CharacterType.THAI_LETTER;
-    } else if (charCode === 0xa0) {
-      return CharacterType.SPACE;
+      for (const key in first) {
+        if (!isEntryEqual(first[key], second[key])) {
+          return false;
+        }
+      }
+
+      return true;
     }
 
-    return CharacterType.ALPHA_LETTER;
+    return first === second || Number.isNaN(first) && Number.isNaN(second);
+  }
+
+  if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
+    return false;
   }
 
-  if (isHan(charCode)) {
-    return CharacterType.HAN_LETTER;
-  } else if (isKatakana(charCode)) {
-    return CharacterType.KATAKANA_LETTER;
-  } else if (isHiragana(charCode)) {
-    return CharacterType.HIRAGANA_LETTER;
-  } else if (isHalfwidthKatakana(charCode)) {
-    return CharacterType.HALFWIDTH_KATAKANA_LETTER;
+  if (firstDest.length !== secondDest.length) {
+    return false;
   }
 
-  return CharacterType.ALPHA_LETTER;
+  for (let i = 0, ii = firstDest.length; i < ii; i++) {
+    if (!isEntryEqual(firstDest[i], secondDest[i])) {
+      return false;
+    }
+  }
+
+  return true;
 }
 
 /***/ }),
 /* 18 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.isDestHashesEqual = isDestHashesEqual;
-exports.isDestArraysEqual = isDestArraysEqual;
-exports.PDFHistory = void 0;
-
-var _ui_utils = __webpack_require__(2);
-
-const HASH_CHANGE_TIMEOUT = 1000;
-const POSITION_UPDATED_THRESHOLD = 50;
-const UPDATE_VIEWAREA_TIMEOUT = 1000;
-
-function getCurrentHash() {
-  return document.location.hash;
-}
+}));
+exports.PDFLayerViewer = void 0;
 
-class PDFHistory {
-  constructor({
-    linkService,
-    eventBus
-  }) {
-    this.linkService = linkService;
-    this.eventBus = eventBus;
-    this._initialized = false;
-    this._fingerprint = "";
-    this.reset();
-    this._boundEvents = null;
-    this._isViewerInPresentationMode = false;
+var _base_tree_viewer = __webpack_require__(12);
 
-    this.eventBus._on("presentationmodechanged", evt => {
-      this._isViewerInPresentationMode = evt.active || evt.switchInProgress;
-    });
+class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
+  constructor(options) {
+    super(options);
+    this.l10n = options.l10n;
 
-    this.eventBus._on("pagesinit", () => {
-      this._isPagesLoaded = false;
+    this.eventBus._on("resetlayers", this._resetLayers.bind(this));
 
-      const onPagesLoaded = evt => {
-        this.eventBus._off("pagesloaded", onPagesLoaded);
+    this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this));
+  }
 
-        this._isPagesLoaded = !!evt.pagesCount;
-      };
+  reset() {
+    super.reset();
+    this._optionalContentConfig = null;
+  }
 
-      this.eventBus._on("pagesloaded", onPagesLoaded);
+  _dispatchEvent(layersCount) {
+    this.eventBus.dispatch("layersloaded", {
+      source: this,
+      layersCount
     });
   }
 
-  initialize({
-    fingerprint,
-    resetHistory = false,
-    updateUrl = false
+  _bindLink(element, {
+    groupId,
+    input
   }) {
-    if (!fingerprint || typeof fingerprint !== "string") {
-      console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
-      return;
-    }
-
-    if (this._initialized) {
-      this.reset();
-    }
-
-    const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint;
-    this._fingerprint = fingerprint;
-    this._updateUrl = updateUrl === true;
-    this._initialized = true;
-
-    this._bindEvents();
-
-    const state = window.history.state;
-    this._popStateInProgress = false;
-    this._blockHashChange = 0;
-    this._currentHash = getCurrentHash();
-    this._numPositionUpdates = 0;
-    this._uid = this._maxUid = 0;
-    this._destination = null;
-    this._position = null;
-
-    if (!this._isValidState(state, true) || resetHistory) {
-      const {
-        hash,
-        page,
-        rotation
-      } = this._parseCurrentHash(true);
+    const setVisibility = () => {
+      this._optionalContentConfig.setVisibility(groupId, input.checked);
 
-      if (!hash || reInitialized || resetHistory) {
-        this._pushOrReplaceState(null, true);
+      this.eventBus.dispatch("optionalcontentconfig", {
+        source: this,
+        promise: Promise.resolve(this._optionalContentConfig)
+      });
+    };
 
-        return;
+    element.onclick = evt => {
+      if (evt.target === input) {
+        setVisibility();
+        return true;
+      } else if (evt.target !== element) {
+        return true;
       }
 
-      this._pushOrReplaceState({
-        hash,
-        page,
-        rotation
-      }, true);
+      input.checked = !input.checked;
+      setVisibility();
+      return false;
+    };
+  }
 
+  async _setNestedName(element, {
+    name = null
+  }) {
+    if (typeof name === "string") {
+      element.textContent = this._normalizeTextContent(name);
       return;
     }
 
-    const destination = state.destination;
+    element.textContent = await this.l10n.get("additional_layers", null, "Additional Layers");
+    element.style.fontStyle = "italic";
+  }
 
-    this._updateInternalState(destination, state.uid, true);
+  _addToggleButton(div, {
+    name = null
+  }) {
+    super._addToggleButton(div, name === null);
+  }
 
-    if (this._uid > this._maxUid) {
-      this._maxUid = this._uid;
+  _toggleAllTreeItems() {
+    if (!this._optionalContentConfig) {
+      return;
     }
 
-    if (destination.rotation !== undefined) {
-      this._initialRotation = destination.rotation;
-    }
+    super._toggleAllTreeItems();
+  }
 
-    if (destination.dest) {
-      this._initialBookmark = JSON.stringify(destination.dest);
-      this._destination.page = null;
-    } else if (destination.hash) {
-      this._initialBookmark = destination.hash;
-    } else if (destination.page) {
-      this._initialBookmark = `page=${destination.page}`;
+  render({
+    optionalContentConfig,
+    pdfDocument
+  }) {
+    if (this._optionalContentConfig) {
+      this.reset();
     }
-  }
 
-  reset() {
-    if (this._initialized) {
-      this._pageHide();
+    this._optionalContentConfig = optionalContentConfig || null;
+    this._pdfDocument = pdfDocument || null;
+    const groups = optionalContentConfig && optionalContentConfig.getOrder();
 
-      this._initialized = false;
+    if (!groups) {
+      this._dispatchEvent(0);
 
-      this._unbindEvents();
+      return;
     }
 
-    if (this._updateViewareaTimeout) {
-      clearTimeout(this._updateViewareaTimeout);
-      this._updateViewareaTimeout = null;
-    }
+    const fragment = document.createDocumentFragment(),
+          queue = [{
+      parent: fragment,
+      groups
+    }];
+    let layersCount = 0,
+        hasAnyNesting = false;
 
-    this._initialBookmark = null;
-    this._initialRotation = null;
-  }
+    while (queue.length > 0) {
+      const levelData = queue.shift();
 
-  push({
-    namedDest = null,
-    explicitDest,
-    pageNumber
-  }) {
-    if (!this._initialized) {
-      return;
-    }
+      for (const groupId of levelData.groups) {
+        const div = document.createElement("div");
+        div.className = "treeItem";
+        const element = document.createElement("a");
+        div.appendChild(element);
 
-    if (namedDest && typeof namedDest !== "string") {
-      console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`);
-      return;
-    } else if (!Array.isArray(explicitDest)) {
-      console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`);
-      return;
-    } else if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= 
this.linkService.pagesCount)) {
-      if (pageNumber !== null || this._destination) {
-        console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`);
-        return;
-      }
-    }
+        if (typeof groupId === "object") {
+          hasAnyNesting = true;
 
-    const hash = namedDest || JSON.stringify(explicitDest);
+          this._addToggleButton(div, groupId);
 
-    if (!hash) {
-      return;
-    }
+          this._setNestedName(element, groupId);
 
-    let forceReplace = false;
+          const itemsDiv = document.createElement("div");
+          itemsDiv.className = "treeItems";
+          div.appendChild(itemsDiv);
+          queue.push({
+            parent: itemsDiv,
+            groups: groupId.order
+          });
+        } else {
+          const group = optionalContentConfig.getGroup(groupId);
+          const input = document.createElement("input");
 
-    if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || 
isDestArraysEqual(this._destination.dest, explicitDest))) {
-      if (this._destination.page) {
-        return;
-      }
+          this._bindLink(element, {
+            groupId,
+            input
+          });
 
-      forceReplace = true;
-    }
+          input.type = "checkbox";
+          input.id = groupId;
+          input.checked = group.visible;
+          const label = document.createElement("label");
+          label.setAttribute("for", groupId);
+          label.textContent = this._normalizeTextContent(group.name);
+          element.appendChild(input);
+          element.appendChild(label);
+          layersCount++;
+        }
 
-    if (this._popStateInProgress && !forceReplace) {
-      return;
+        levelData.parent.appendChild(div);
+      }
     }
 
-    this._pushOrReplaceState({
-      dest: explicitDest,
-      hash,
-      page: pageNumber,
-      rotation: this.linkService.rotation
-    }, forceReplace);
-
-    if (!this._popStateInProgress) {
-      this._popStateInProgress = true;
-      Promise.resolve().then(() => {
-        this._popStateInProgress = false;
-      });
-    }
+    this._finishRendering(fragment, layersCount, hasAnyNesting);
   }
 
-  pushCurrentPosition() {
-    if (!this._initialized || this._popStateInProgress) {
+  async _resetLayers() {
+    if (!this._optionalContentConfig) {
       return;
     }
 
-    this._tryPushCurrentPosition();
+    const optionalContentConfig = await this._pdfDocument.getOptionalContentConfig();
+    this.eventBus.dispatch("optionalcontentconfig", {
+      source: this,
+      promise: Promise.resolve(optionalContentConfig)
+    });
+    this.render({
+      optionalContentConfig,
+      pdfDocument: this._pdfDocument
+    });
   }
 
-  back() {
-    if (!this._initialized || this._popStateInProgress) {
-      return;
-    }
+}
 
-    const state = window.history.state;
+exports.PDFLayerViewer = PDFLayerViewer;
 
-    if (this._isValidState(state) && state.uid > 0) {
-      window.history.back();
-    }
-  }
+/***/ }),
+/* 19 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-  forward() {
-    if (!this._initialized || this._popStateInProgress) {
-      return;
-    }
 
-    const state = window.history.state;
 
-    if (this._isValidState(state) && state.uid < this._maxUid) {
-      window.history.forward();
-    }
-  }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.SimpleLinkService = exports.PDFLinkService = void 0;
 
-  get popStateInProgress() {
-    return this._initialized && (this._popStateInProgress || this._blockHashChange > 0);
+var _ui_utils = __webpack_require__(4);
+
+class PDFLinkService {
+  constructor({
+    eventBus,
+    externalLinkTarget = null,
+    externalLinkRel = null,
+    externalLinkEnabled = true,
+    ignoreDestinationZoom = false
+  } = {}) {
+    this.eventBus = eventBus;
+    this.externalLinkTarget = externalLinkTarget;
+    this.externalLinkRel = externalLinkRel;
+    this.externalLinkEnabled = externalLinkEnabled;
+    this._ignoreDestinationZoom = ignoreDestinationZoom;
+    this.baseUrl = null;
+    this.pdfDocument = null;
+    this.pdfViewer = null;
+    this.pdfHistory = null;
+    this._pagesRefCache = null;
   }
 
-  get initialBookmark() {
-    return this._initialized ? this._initialBookmark : null;
+  setDocument(pdfDocument, baseUrl = null) {
+    this.baseUrl = baseUrl;
+    this.pdfDocument = pdfDocument;
+    this._pagesRefCache = Object.create(null);
   }
 
-  get initialRotation() {
-    return this._initialized ? this._initialRotation : null;
+  setViewer(pdfViewer) {
+    this.pdfViewer = pdfViewer;
   }
 
-  _pushOrReplaceState(destination, forceReplace = false) {
-    const shouldReplace = forceReplace || !this._destination;
-    const newState = {
-      fingerprint: this._fingerprint,
-      uid: shouldReplace ? this._uid : this._uid + 1,
-      destination
-    };
+  setHistory(pdfHistory) {
+    this.pdfHistory = pdfHistory;
+  }
 
-    this._updateInternalState(destination, newState.uid);
+  get pagesCount() {
+    return this.pdfDocument ? this.pdfDocument.numPages : 0;
+  }
 
-    let newUrl;
+  get page() {
+    return this.pdfViewer.currentPageNumber;
+  }
 
-    if (this._updateUrl && destination && destination.hash) {
-      const baseUrl = document.location.href.split("#")[0];
+  set page(value) {
+    this.pdfViewer.currentPageNumber = value;
+  }
 
-      if (!baseUrl.startsWith("file://")) {
-        newUrl = `${baseUrl}#${destination.hash}`;
-      }
-    }
+  get rotation() {
+    return this.pdfViewer.pagesRotation;
+  }
 
-    // FIXME: This currently breaks Epiphany due to rewriting history with baseUrl
-    return;
-    if (shouldReplace) {
-      window.history.replaceState(newState, "", newUrl);
-    } else {
-      this._maxUid = this._uid;
-      window.history.pushState(newState, "", newUrl);
-    }
+  set rotation(value) {
+    this.pdfViewer.pagesRotation = value;
   }
 
-  _tryPushCurrentPosition(temporary = false) {
-    if (!this._position) {
-      return;
-    }
+  navigateTo(dest) {
+    console.error("Deprecated method: `navigateTo`, use `goToDestination` instead.");
+    this.goToDestination(dest);
+  }
 
-    let position = this._position;
+  _goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
+    const destRef = explicitDest[0];
+    let pageNumber;
 
-    if (temporary) {
-      position = Object.assign(Object.create(null), this._position);
-      position.temporary = true;
-    }
+    if (destRef instanceof Object) {
+      pageNumber = this._cachedPageNumber(destRef);
 
-    if (!this._destination) {
-      this._pushOrReplaceState(position);
+      if (pageNumber === null) {
+        this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
+          this.cachePageRef(pageIndex + 1, destRef);
 
+          this._goToDestinationHelper(rawDest, namedDest, explicitDest);
+        }).catch(() => {
+          console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page 
reference, for dest="${rawDest}".`);
+        });
+        return;
+      }
+    } else if (Number.isInteger(destRef)) {
+      pageNumber = destRef + 1;
+    } else {
+      console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination 
reference, for dest="${rawDest}".`);
       return;
     }
 
-    if (this._destination.temporary) {
-      this._pushOrReplaceState(position, true);
-
+    if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
+      console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, 
for dest="${rawDest}".`);
       return;
     }
 
-    if (this._destination.hash === position.hash) {
-      return;
+    if (this.pdfHistory) {
+      this.pdfHistory.pushCurrentPosition();
+      this.pdfHistory.push({
+        namedDest,
+        explicitDest,
+        pageNumber
+      });
     }
 
-    if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= 
POSITION_UPDATED_THRESHOLD)) {
+    this.pdfViewer.scrollPageIntoView({
+      pageNumber,
+      destArray: explicitDest,
+      ignoreDestinationZoom: this._ignoreDestinationZoom
+    });
+  }
+
+  async goToDestination(dest) {
+    if (!this.pdfDocument) {
       return;
     }
 
-    let forceReplace = false;
+    let namedDest, explicitDest;
 
-    if (this._destination.page >= position.first && this._destination.page <= position.page) {
-      if (this._destination.dest || !this._destination.first) {
-        return;
-      }
+    if (typeof dest === "string") {
+      namedDest = dest;
+      explicitDest = await this.pdfDocument.getDestination(dest);
+    } else {
+      namedDest = null;
+      explicitDest = await dest;
+    }
 
-      forceReplace = true;
+    if (!Array.isArray(explicitDest)) {
+      console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination 
array, for dest="${dest}".`);
+      return;
     }
 
-    this._pushOrReplaceState(position, forceReplace);
+    this._goToDestinationHelper(dest, namedDest, explicitDest);
   }
 
-  _isValidState(state, checkReload = false) {
-    if (!state) {
-      return false;
+  goToPage(val) {
+    if (!this.pdfDocument) {
+      return;
     }
 
-    if (state.fingerprint !== this._fingerprint) {
-      if (checkReload) {
-        if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) {
-          return false;
-        }
-
-        const [perfEntry] = performance.getEntriesByType("navigation");
-
-        if (!perfEntry || perfEntry.type !== "reload") {
-          return false;
-        }
-      } else {
-        return false;
-      }
-    }
+    const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
 
-    if (!Number.isInteger(state.uid) || state.uid < 0) {
-      return false;
+    if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
+      console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
+      return;
     }
 
-    if (state.destination === null || typeof state.destination !== "object") {
-      return false;
+    if (this.pdfHistory) {
+      this.pdfHistory.pushCurrentPosition();
+      this.pdfHistory.pushPage(pageNumber);
     }
 
-    return true;
+    this.pdfViewer.scrollPageIntoView({
+      pageNumber
+    });
   }
 
-  _updateInternalState(destination, uid, removeTemporary = false) {
-    if (this._updateViewareaTimeout) {
-      clearTimeout(this._updateViewareaTimeout);
-      this._updateViewareaTimeout = null;
-    }
+  getDestinationHash(dest) {
+    if (typeof dest === "string") {
+      if (dest.length > 0) {
+        return this.getAnchorUrl("#" + escape(dest));
+      }
+    } else if (Array.isArray(dest)) {
+      const str = JSON.stringify(dest);
 
-    if (removeTemporary && destination && destination.temporary) {
-      delete destination.temporary;
+      if (str.length > 0) {
+        return this.getAnchorUrl("#" + escape(str));
+      }
     }
 
-    this._destination = destination;
-    this._uid = uid;
-    this._numPositionUpdates = 0;
+    return this.getAnchorUrl("");
   }
 
-  _parseCurrentHash(checkNameddest = false) {
-    const hash = unescape(getCurrentHash()).substring(1);
-    const params = (0, _ui_utils.parseQueryString)(hash);
-    const nameddest = params.nameddest || "";
-    let page = params.page | 0;
+  getAnchorUrl(anchor) {
+    return (this.baseUrl || "") + anchor;
+  }
 
-    if (!(Number.isInteger(page) && page > 0 && page <= this.linkService.pagesCount) || checkNameddest && 
nameddest.length > 0) {
-      page = null;
+  setHash(hash) {
+    if (!this.pdfDocument) {
+      return;
     }
 
-    return {
-      hash,
-      page,
-      rotation: this.linkService.rotation
-    };
-  }
+    let pageNumber, dest;
 
-  _updateViewarea({
-    location
-  }) {
-    if (this._updateViewareaTimeout) {
-      clearTimeout(this._updateViewareaTimeout);
-      this._updateViewareaTimeout = null;
-    }
+    if (hash.includes("=")) {
+      const params = (0, _ui_utils.parseQueryString)(hash);
 
-    this._position = {
-      hash: this._isViewerInPresentationMode ? `page=${location.pageNumber}` : 
location.pdfOpenParams.substring(1),
-      page: this.linkService.page,
-      first: location.pageNumber,
-      rotation: location.rotation
-    };
+      if ("search" in params) {
+        this.eventBus.dispatch("findfromurlhash", {
+          source: this,
+          query: params.search.replace(/"/g, ""),
+          phraseSearch: params.phrase === "true"
+        });
+      }
 
-    if (this._popStateInProgress) {
-      return;
-    }
+      if ("page" in params) {
+        pageNumber = params.page | 0 || 1;
+      }
 
-    if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && 
!this._destination.page) {
-      this._numPositionUpdates++;
-    }
+      if ("zoom" in params) {
+        const zoomArgs = params.zoom.split(",");
+        const zoomArg = zoomArgs[0];
+        const zoomArgNumber = parseFloat(zoomArg);
 
-    if (UPDATE_VIEWAREA_TIMEOUT > 0) {
-      this._updateViewareaTimeout = setTimeout(() => {
-        if (!this._popStateInProgress) {
-          this._tryPushCurrentPosition(true);
+        if (!zoomArg.includes("Fit")) {
+          dest = [null, {
+            name: "XYZ"
+          }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, 
zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
+        } else {
+          if (zoomArg === "Fit" || zoomArg === "FitB") {
+            dest = [null, {
+              name: zoomArg
+            }];
+          } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") 
{
+            dest = [null, {
+              name: zoomArg
+            }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
+          } else if (zoomArg === "FitR") {
+            if (zoomArgs.length !== 5) {
+              console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
+            } else {
+              dest = [null, {
+                name: zoomArg
+              }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
+            }
+          } else {
+            console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value.");
+          }
         }
+      }
 
-        this._updateViewareaTimeout = null;
-      }, UPDATE_VIEWAREA_TIMEOUT);
-    }
-  }
+      if (dest) {
+        this.pdfViewer.scrollPageIntoView({
+          pageNumber: pageNumber || this.page,
+          destArray: dest,
+          allowNegativeOffset: true
+        });
+      } else if (pageNumber) {
+        this.page = pageNumber;
+      }
 
-  _popState({
-    state
-  }) {
-    const newHash = getCurrentHash(),
-          hashChanged = this._currentHash !== newHash;
-    this._currentHash = newHash;
+      if ("pagemode" in params) {
+        this.eventBus.dispatch("pagemode", {
+          source: this,
+          mode: params.pagemode
+        });
+      }
 
-    if (!state) {
-      this._uid++;
+      if ("nameddest" in params) {
+        this.goToDestination(params.nameddest);
+      }
+    } else {
+      dest = unescape(hash);
 
-      const {
-        hash,
-        page,
-        rotation
-      } = this._parseCurrentHash();
+      try {
+        dest = JSON.parse(dest);
 
-      this._pushOrReplaceState({
-        hash,
-        page,
-        rotation
-      }, true);
+        if (!Array.isArray(dest)) {
+          dest = dest.toString();
+        }
+      } catch (ex) {}
 
-      return;
-    }
+      if (typeof dest === "string" || isValidExplicitDestination(dest)) {
+        this.goToDestination(dest);
+        return;
+      }
 
-    if (!this._isValidState(state)) {
-      return;
+      console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination.");
     }
+  }
 
-    this._popStateInProgress = true;
+  executeNamedAction(action) {
+    switch (action) {
+      case "GoBack":
+        if (this.pdfHistory) {
+          this.pdfHistory.back();
+        }
 
-    if (hashChanged) {
-      this._blockHashChange++;
-      (0, _ui_utils.waitOnEventOrTimeout)({
-        target: window,
-        name: "hashchange",
-        delay: HASH_CHANGE_TIMEOUT
-      }).then(() => {
-        this._blockHashChange--;
-      });
-    }
+        break;
 
-    const destination = state.destination;
+      case "GoForward":
+        if (this.pdfHistory) {
+          this.pdfHistory.forward();
+        }
 
-    this._updateInternalState(destination, state.uid, true);
+        break;
 
-    if (this._uid > this._maxUid) {
-      this._maxUid = this._uid;
-    }
+      case "NextPage":
+        this.pdfViewer.nextPage();
+        break;
 
-    if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
-      this.linkService.rotation = destination.rotation;
-    }
+      case "PrevPage":
+        this.pdfViewer.previousPage();
+        break;
 
-    if (destination.dest) {
-      this.linkService.navigateTo(destination.dest);
-    } else if (destination.hash) {
-      this.linkService.setHash(destination.hash);
-    } else if (destination.page) {
-      this.linkService.page = destination.page;
-    }
+      case "LastPage":
+        this.page = this.pagesCount;
+        break;
 
-    Promise.resolve().then(() => {
-      this._popStateInProgress = false;
-    });
-  }
+      case "FirstPage":
+        this.page = 1;
+        break;
 
-  _pageHide() {
-    if (!this._destination || this._destination.temporary) {
-      this._tryPushCurrentPosition();
+      default:
+        break;
     }
+
+    this.eventBus.dispatch("namedaction", {
+      source: this,
+      action
+    });
   }
 
-  _bindEvents() {
-    if (this._boundEvents) {
+  cachePageRef(pageNum, pageRef) {
+    if (!pageRef) {
       return;
     }
 
-    this._boundEvents = {
-      updateViewarea: this._updateViewarea.bind(this),
-      popState: this._popState.bind(this),
-      pageHide: this._pageHide.bind(this)
-    };
-
-    this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea);
-
-    window.addEventListener("popstate", this._boundEvents.popState);
-    window.addEventListener("pagehide", this._boundEvents.pageHide);
+    const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
+    this._pagesRefCache[refStr] = pageNum;
   }
 
-  _unbindEvents() {
-    if (!this._boundEvents) {
-      return;
-    }
+  _cachedPageNumber(pageRef) {
+    const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
+    return this._pagesRefCache && this._pagesRefCache[refStr] || null;
+  }
 
-    this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea);
+  isPageVisible(pageNumber) {
+    return this.pdfViewer.isPageVisible(pageNumber);
+  }
 
-    window.removeEventListener("popstate", this._boundEvents.popState);
-    window.removeEventListener("pagehide", this._boundEvents.pageHide);
-    this._boundEvents = null;
+  isPageCached(pageNumber) {
+    return this.pdfViewer.isPageCached(pageNumber);
   }
 
 }
 
-exports.PDFHistory = PDFHistory;
+exports.PDFLinkService = PDFLinkService;
 
-function isDestHashesEqual(destHash, pushHash) {
-  if (typeof destHash !== "string" || typeof pushHash !== "string") {
+function isValidExplicitDestination(dest) {
+  if (!Array.isArray(dest)) {
     return false;
   }
 
-  if (destHash === pushHash) {
-    return true;
+  const destLength = dest.length;
+
+  if (destLength < 2) {
+    return false;
   }
 
-  const {
-    nameddest
-  } = (0, _ui_utils.parseQueryString)(destHash);
+  const page = dest[0];
 
-  if (nameddest === pushHash) {
-    return true;
+  if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && 
!(Number.isInteger(page) && page >= 0)) {
+    return false;
   }
 
-  return false;
-}
+  const zoom = dest[1];
 
-function isDestArraysEqual(firstDest, secondDest) {
-  function isEntryEqual(first, second) {
-    if (typeof first !== typeof second) {
-      return false;
-    }
+  if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
+    return false;
+  }
 
-    if (Array.isArray(first) || Array.isArray(second)) {
-      return false;
-    }
+  let allowNull = true;
 
-    if (first !== null && typeof first === "object" && second !== null) {
-      if (Object.keys(first).length !== Object.keys(second).length) {
+  switch (zoom.name) {
+    case "XYZ":
+      if (destLength !== 5) {
         return false;
       }
 
-      for (const key in first) {
-        if (!isEntryEqual(first[key], second[key])) {
-          return false;
-        }
+      break;
+
+    case "Fit":
+    case "FitB":
+      return destLength === 2;
+
+    case "FitH":
+    case "FitBH":
+    case "FitV":
+    case "FitBV":
+      if (destLength !== 3) {
+        return false;
       }
 
-      return true;
-    }
+      break;
 
-    return first === second || Number.isNaN(first) && Number.isNaN(second);
-  }
+    case "FitR":
+      if (destLength !== 6) {
+        return false;
+      }
+
+      allowNull = false;
+      break;
 
-  if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
-    return false;
+    default:
+      return false;
   }
 
-  if (firstDest.length !== secondDest.length) {
-    return false;
-  }
+  for (let i = 2; i < destLength; i++) {
+    const param = dest[i];
 
-  for (let i = 0, ii = firstDest.length; i < ii; i++) {
-    if (!isEntryEqual(firstDest[i], secondDest[i])) {
+    if (!(typeof param === "number" || allowNull && param === null)) {
       return false;
     }
   }
@@ -7206,1227 +7900,1149 @@ function isDestArraysEqual(firstDest, secondDest) {
   return true;
 }
 
-/***/ }),
-/* 19 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PDFLayerViewer = void 0;
-
-var _base_tree_viewer = __webpack_require__(13);
-
-class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
-  constructor(options) {
-    super(options);
-    this.l10n = options.l10n;
-
-    this.eventBus._on("resetlayers", this._resetLayers.bind(this));
-
-    this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this));
+class SimpleLinkService {
+  constructor() {
+    this.externalLinkTarget = null;
+    this.externalLinkRel = null;
+    this.externalLinkEnabled = true;
+    this._ignoreDestinationZoom = false;
   }
 
-  reset() {
-    super.reset();
-    this._optionalContentConfig = null;
-    this._pdfDocument = null;
+  get pagesCount() {
+    return 0;
   }
 
-  _dispatchEvent(layersCount) {
-    this.eventBus.dispatch("layersloaded", {
-      source: this,
-      layersCount
-    });
+  get page() {
+    return 0;
   }
 
-  _bindLink(element, {
-    groupId,
-    input
-  }) {
-    const setVisibility = () => {
-      this._optionalContentConfig.setVisibility(groupId, input.checked);
-
-      this.eventBus.dispatch("optionalcontentconfig", {
-        source: this,
-        promise: Promise.resolve(this._optionalContentConfig)
-      });
-    };
-
-    element.onclick = evt => {
-      if (evt.target === input) {
-        setVisibility();
-        return true;
-      } else if (evt.target !== element) {
-        return true;
-      }
+  set page(value) {}
 
-      input.checked = !input.checked;
-      setVisibility();
-      return false;
-    };
+  get rotation() {
+    return 0;
   }
 
-  async _setNestedName(element, {
-    name = null
-  }) {
-    if (typeof name === "string") {
-      element.textContent = this._normalizeTextContent(name);
-      return;
-    }
+  set rotation(value) {}
 
-    element.textContent = await this.l10n.get("additional_layers", null, "Additional Layers");
-    element.style.fontStyle = "italic";
-  }
+  async goToDestination(dest) {}
 
-  _addToggleButton(div, {
-    name = null
-  }) {
-    super._addToggleButton(div, name === null);
-  }
+  goToPage(val) {}
 
-  _toggleAllTreeItems() {
-    if (!this._optionalContentConfig) {
-      return;
-    }
+  getDestinationHash(dest) {
+    return "#";
+  }
 
-    super._toggleAllTreeItems();
+  getAnchorUrl(hash) {
+    return "#";
   }
 
-  render({
-    optionalContentConfig,
-    pdfDocument
-  }) {
-    if (this._optionalContentConfig) {
-      this.reset();
-    }
+  setHash(hash) {}
 
-    this._optionalContentConfig = optionalContentConfig || null;
-    this._pdfDocument = pdfDocument || null;
-    const groups = optionalContentConfig && optionalContentConfig.getOrder();
+  executeNamedAction(action) {}
 
-    if (!groups) {
-      this._dispatchEvent(0);
+  cachePageRef(pageNum, pageRef) {}
 
-      return;
-    }
+  isPageVisible(pageNumber) {
+    return true;
+  }
 
-    const fragment = document.createDocumentFragment(),
-          queue = [{
-      parent: fragment,
-      groups
-    }];
-    let layersCount = 0,
-        hasAnyNesting = false;
+  isPageCached(pageNumber) {
+    return true;
+  }
 
-    while (queue.length > 0) {
-      const levelData = queue.shift();
+}
 
-      for (const groupId of levelData.groups) {
-        const div = document.createElement("div");
-        div.className = "treeItem";
-        const element = document.createElement("a");
-        div.appendChild(element);
+exports.SimpleLinkService = SimpleLinkService;
 
-        if (typeof groupId === "object") {
-          hasAnyNesting = true;
+/***/ }),
+/* 20 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-          this._addToggleButton(div, groupId);
 
-          this._setNestedName(element, groupId);
 
-          const itemsDiv = document.createElement("div");
-          itemsDiv.className = "treeItems";
-          div.appendChild(itemsDiv);
-          queue.push({
-            parent: itemsDiv,
-            groups: groupId.order
-          });
-        } else {
-          const group = optionalContentConfig.getGroup(groupId);
-          const input = document.createElement("input");
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFOutlineViewer = void 0;
 
-          this._bindLink(element, {
-            groupId,
-            input
-          });
+var _pdfjsLib = __webpack_require__(5);
 
-          input.type = "checkbox";
-          input.id = groupId;
-          input.checked = group.visible;
-          const label = document.createElement("label");
-          label.setAttribute("for", groupId);
-          label.textContent = this._normalizeTextContent(group.name);
-          element.appendChild(input);
-          element.appendChild(label);
-          layersCount++;
-        }
+var _base_tree_viewer = __webpack_require__(12);
 
-        levelData.parent.appendChild(div);
-      }
-    }
+var _ui_utils = __webpack_require__(4);
 
-    if (hasAnyNesting) {
-      this.container.classList.add("treeWithDeepNesting");
-      this._lastToggleIsShow = fragment.querySelectorAll(".treeItemsHidden").length === 0;
-    }
+class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
+  constructor(options) {
+    super(options);
+    this.linkService = options.linkService;
 
-    this.container.appendChild(fragment);
+    this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this));
 
-    this._dispatchEvent(layersCount);
-  }
+    this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this));
 
-  async _resetLayers() {
-    if (!this._optionalContentConfig) {
-      return;
-    }
+    this.eventBus._on("pagechanging", evt => {
+      this._currentPageNumber = evt.pageNumber;
+    });
 
-    const optionalContentConfig = await this._pdfDocument.getOptionalContentConfig();
-    this.eventBus.dispatch("optionalcontentconfig", {
-      source: this,
-      promise: Promise.resolve(optionalContentConfig)
+    this.eventBus._on("pagesloaded", evt => {
+      this._isPagesLoaded = !!evt.pagesCount;
     });
-    this.render({
-      optionalContentConfig,
-      pdfDocument: this._pdfDocument
+
+    this.eventBus._on("sidebarviewchanged", evt => {
+      this._sidebarView = evt.view;
     });
   }
 
-}
-
-exports.PDFLayerViewer = PDFLayerViewer;
-
-/***/ }),
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.SimpleLinkService = exports.PDFLinkService = void 0;
-
-var _ui_utils = __webpack_require__(2);
-
-class PDFLinkService {
-  constructor({
-    eventBus,
-    externalLinkTarget = null,
-    externalLinkRel = null,
-    externalLinkEnabled = true,
-    ignoreDestinationZoom = false
-  } = {}) {
-    this.eventBus = eventBus;
-    this.externalLinkTarget = externalLinkTarget;
-    this.externalLinkRel = externalLinkRel;
-    this.externalLinkEnabled = externalLinkEnabled;
-    this._ignoreDestinationZoom = ignoreDestinationZoom;
-    this.baseUrl = null;
-    this.pdfDocument = null;
-    this.pdfViewer = null;
-    this.pdfHistory = null;
-    this._pagesRefCache = null;
+  reset() {
+    super.reset();
+    this._outline = null;
+    this._pageNumberToDestHashCapability = null;
+    this._currentPageNumber = 1;
+    this._isPagesLoaded = false;
   }
 
-  setDocument(pdfDocument, baseUrl = null) {
-    this.baseUrl = baseUrl;
-    this.pdfDocument = pdfDocument;
-    this._pagesRefCache = Object.create(null);
+  _dispatchEvent(outlineCount) {
+    this.eventBus.dispatch("outlineloaded", {
+      source: this,
+      outlineCount,
+      enableCurrentOutlineItemButton: outlineCount > 0 && !this._pdfDocument?.loadingParams.disableAutoFetch
+    });
   }
 
-  setViewer(pdfViewer) {
-    this.pdfViewer = pdfViewer;
-  }
+  _bindLink(element, {
+    url,
+    newWindow,
+    dest
+  }) {
+    const {
+      linkService
+    } = this;
 
-  setHistory(pdfHistory) {
-    this.pdfHistory = pdfHistory;
-  }
+    if (url) {
+      (0, _pdfjsLib.addLinkAttributes)(element, {
+        url,
+        target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,
+        rel: linkService.externalLinkRel,
+        enabled: linkService.externalLinkEnabled
+      });
+      return;
+    }
 
-  get pagesCount() {
-    return this.pdfDocument ? this.pdfDocument.numPages : 0;
-  }
+    element.href = linkService.getDestinationHash(dest);
 
-  get page() {
-    return this.pdfViewer.currentPageNumber;
-  }
+    element.onclick = evt => {
+      this._updateCurrentTreeItem(evt.target.parentNode);
 
-  set page(value) {
-    this.pdfViewer.currentPageNumber = value;
-  }
+      if (dest) {
+        linkService.goToDestination(dest);
+      }
 
-  get rotation() {
-    return this.pdfViewer.pagesRotation;
+      return false;
+    };
   }
 
-  set rotation(value) {
-    this.pdfViewer.pagesRotation = value;
+  _setStyles(element, {
+    bold,
+    italic
+  }) {
+    if (bold) {
+      element.style.fontWeight = "bold";
+    }
+
+    if (italic) {
+      element.style.fontStyle = "italic";
+    }
   }
 
-  navigateTo(dest) {
-    const goToDestination = ({
-      namedDest,
-      explicitDest
-    }) => {
-      const destRef = explicitDest[0];
-      let pageNumber;
-
-      if (destRef instanceof Object) {
-        pageNumber = this._cachedPageNumber(destRef);
-
-        if (pageNumber === null) {
-          this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
-            this.cachePageRef(pageIndex + 1, destRef);
-            goToDestination({
-              namedDest,
-              explicitDest
-            });
-          }).catch(() => {
-            console.error(`PDFLinkService.navigateTo: "${destRef}" is not ` + `a valid page reference, for 
dest="${dest}".`);
-          });
-          return;
-        }
-      } else if (Number.isInteger(destRef)) {
-        pageNumber = destRef + 1;
-      } else {
-        console.error(`PDFLinkService.navigateTo: "${destRef}" is not ` + `a valid destination reference, 
for dest="${dest}".`);
-        return;
-      }
+  _addToggleButton(div, {
+    count,
+    items
+  }) {
+    let hidden = false;
 
-      if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
-        console.error(`PDFLinkService.navigateTo: "${pageNumber}" is not ` + `a valid page number, for 
dest="${dest}".`);
-        return;
-      }
+    if (count < 0) {
+      let totalCount = items.length;
 
-      if (this.pdfHistory) {
-        this.pdfHistory.pushCurrentPosition();
-        this.pdfHistory.push({
-          namedDest,
-          explicitDest,
-          pageNumber
-        });
-      }
+      if (totalCount > 0) {
+        const queue = [...items];
 
-      this.pdfViewer.scrollPageIntoView({
-        pageNumber,
-        destArray: explicitDest,
-        ignoreDestinationZoom: this._ignoreDestinationZoom
-      });
-    };
+        while (queue.length > 0) {
+          const {
+            count: nestedCount,
+            items: nestedItems
+          } = queue.shift();
 
-    new Promise((resolve, reject) => {
-      if (typeof dest === "string") {
-        this.pdfDocument.getDestination(dest).then(destArray => {
-          resolve({
-            namedDest: dest,
-            explicitDest: destArray
-          });
-        });
-        return;
+          if (nestedCount > 0 && nestedItems.length > 0) {
+            totalCount += nestedItems.length;
+            queue.push(...nestedItems);
+          }
+        }
       }
 
-      resolve({
-        namedDest: "",
-        explicitDest: dest
-      });
-    }).then(data => {
-      if (!Array.isArray(data.explicitDest)) {
-        console.error(`PDFLinkService.navigateTo: "${data.explicitDest}" is` + ` not a valid destination 
array, for dest="${dest}".`);
-        return;
+      if (Math.abs(count) === totalCount) {
+        hidden = true;
       }
+    }
 
-      goToDestination(data);
-    });
+    super._addToggleButton(div, hidden);
   }
 
-  getDestinationHash(dest) {
-    if (typeof dest === "string") {
-      return this.getAnchorUrl("#" + escape(dest));
-    }
-
-    if (Array.isArray(dest)) {
-      const str = JSON.stringify(dest);
-      return this.getAnchorUrl("#" + escape(str));
+  _toggleAllTreeItems() {
+    if (!this._outline) {
+      return;
     }
 
-    return this.getAnchorUrl("");
+    super._toggleAllTreeItems();
   }
 
-  getAnchorUrl(anchor) {
-    return (this.baseUrl || "") + anchor;
-  }
+  render({
+    outline,
+    pdfDocument
+  }) {
+    if (this._outline) {
+      this.reset();
+    }
 
-  setHash(hash) {
-    let pageNumber, dest;
+    this._outline = outline || null;
+    this._pdfDocument = pdfDocument || null;
 
-    if (hash.includes("=")) {
-      const params = (0, _ui_utils.parseQueryString)(hash);
+    if (!outline) {
+      this._dispatchEvent(0);
 
-      if ("search" in params) {
-        this.eventBus.dispatch("findfromurlhash", {
-          source: this,
-          query: params.search.replace(/"/g, ""),
-          phraseSearch: params.phrase === "true"
-        });
-      }
+      return;
+    }
 
-      if ("page" in params) {
-        pageNumber = params.page | 0 || 1;
-      }
+    const fragment = document.createDocumentFragment();
+    const queue = [{
+      parent: fragment,
+      items: outline
+    }];
+    let outlineCount = 0,
+        hasAnyNesting = false;
 
-      if ("zoom" in params) {
-        const zoomArgs = params.zoom.split(",");
-        const zoomArg = zoomArgs[0];
-        const zoomArgNumber = parseFloat(zoomArg);
+    while (queue.length > 0) {
+      const levelData = queue.shift();
 
-        if (!zoomArg.includes("Fit")) {
-          dest = [null, {
-            name: "XYZ"
-          }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, 
zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
-        } else {
-          if (zoomArg === "Fit" || zoomArg === "FitB") {
-            dest = [null, {
-              name: zoomArg
-            }];
-          } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") 
{
-            dest = [null, {
-              name: zoomArg
-            }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
-          } else if (zoomArg === "FitR") {
-            if (zoomArgs.length !== 5) {
-              console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
-            } else {
-              dest = [null, {
-                name: zoomArg
-              }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
-            }
-          } else {
-            console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value.");
-          }
-        }
-      }
+      for (const item of levelData.items) {
+        const div = document.createElement("div");
+        div.className = "treeItem";
+        const element = document.createElement("a");
 
-      if (dest) {
-        this.pdfViewer.scrollPageIntoView({
-          pageNumber: pageNumber || this.page,
-          destArray: dest,
-          allowNegativeOffset: true
-        });
-      } else if (pageNumber) {
-        this.page = pageNumber;
-      }
+        this._bindLink(element, item);
 
-      if ("pagemode" in params) {
-        this.eventBus.dispatch("pagemode", {
-          source: this,
-          mode: params.pagemode
-        });
-      }
+        this._setStyles(element, item);
 
-      if ("nameddest" in params) {
-        this.navigateTo(params.nameddest);
-      }
-    } else {
-      dest = unescape(hash);
+        element.textContent = this._normalizeTextContent(item.title);
+        div.appendChild(element);
 
-      try {
-        dest = JSON.parse(dest);
+        if (item.items.length > 0) {
+          hasAnyNesting = true;
 
-        if (!Array.isArray(dest)) {
-          dest = dest.toString();
+          this._addToggleButton(div, item);
+
+          const itemsDiv = document.createElement("div");
+          itemsDiv.className = "treeItems";
+          div.appendChild(itemsDiv);
+          queue.push({
+            parent: itemsDiv,
+            items: item.items
+          });
         }
-      } catch (ex) {}
 
-      if (typeof dest === "string" || isValidExplicitDestination(dest)) {
-        this.navigateTo(dest);
-        return;
+        levelData.parent.appendChild(div);
+        outlineCount++;
       }
-
-      console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination.");
     }
+
+    this._finishRendering(fragment, outlineCount, hasAnyNesting);
   }
 
-  executeNamedAction(action) {
-    switch (action) {
-      case "GoBack":
-        if (this.pdfHistory) {
-          this.pdfHistory.back();
-        }
+  async _currentOutlineItem() {
+    if (!this._isPagesLoaded) {
+      throw new Error("_currentOutlineItem: All pages have not been loaded.");
+    }
 
-        break;
+    if (!this._outline || !this._pdfDocument) {
+      return;
+    }
 
-      case "GoForward":
-        if (this.pdfHistory) {
-          this.pdfHistory.forward();
-        }
+    const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument);
 
-        break;
+    if (!pageNumberToDestHash) {
+      return;
+    }
 
-      case "NextPage":
-        if (this.page < this.pagesCount) {
-          this.page++;
-        }
+    this._updateCurrentTreeItem(null);
 
-        break;
+    if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) {
+      return;
+    }
 
-      case "PrevPage":
-        if (this.page > 1) {
-          this.page--;
-        }
+    for (let i = this._currentPageNumber; i > 0; i--) {
+      const destHash = pageNumberToDestHash.get(i);
 
-        break;
+      if (!destHash) {
+        continue;
+      }
 
-      case "LastPage":
-        this.page = this.pagesCount;
-        break;
+      const linkElement = this.container.querySelector(`a[href="${destHash}"]`);
 
-      case "FirstPage":
-        this.page = 1;
-        break;
+      if (!linkElement) {
+        continue;
+      }
 
-      default:
-        break;
-    }
+      this._scrollToCurrentTreeItem(linkElement.parentNode);
 
-    this.eventBus.dispatch("namedaction", {
-      source: this,
-      action
-    });
+      break;
+    }
   }
 
-  cachePageRef(pageNum, pageRef) {
-    if (!pageRef) {
-      return;
+  async _getPageNumberToDestHash(pdfDocument) {
+    if (this._pageNumberToDestHashCapability) {
+      return this._pageNumberToDestHashCapability.promise;
     }
 
-    const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
-    this._pagesRefCache[refStr] = pageNum;
-  }
+    this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)();
+    const pageNumberToDestHash = new Map(),
+          pageNumberNesting = new Map();
+    const queue = [{
+      nesting: 0,
+      items: this._outline
+    }];
+
+    while (queue.length > 0) {
+      const levelData = queue.shift(),
+            currentNesting = levelData.nesting;
+
+      for (const {
+        dest,
+        items
+      } of levelData.items) {
+        let explicitDest, pageNumber;
+
+        if (typeof dest === "string") {
+          explicitDest = await pdfDocument.getDestination(dest);
 
-  _cachedPageNumber(pageRef) {
-    const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
-    return this._pagesRefCache && this._pagesRefCache[refStr] || null;
-  }
+          if (pdfDocument !== this._pdfDocument) {
+            return null;
+          }
+        } else {
+          explicitDest = dest;
+        }
 
-  isPageVisible(pageNumber) {
-    return this.pdfViewer.isPageVisible(pageNumber);
-  }
+        if (Array.isArray(explicitDest)) {
+          const [destRef] = explicitDest;
 
-}
+          if (typeof destRef === "object") {
+            pageNumber = this.linkService._cachedPageNumber(destRef);
 
-exports.PDFLinkService = PDFLinkService;
+            if (!pageNumber) {
+              try {
+                pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;
 
-function isValidExplicitDestination(dest) {
-  if (!Array.isArray(dest)) {
-    return false;
-  }
+                if (pdfDocument !== this._pdfDocument) {
+                  return null;
+                }
 
-  const destLength = dest.length;
+                this.linkService.cachePageRef(pageNumber, destRef);
+              } catch (ex) {}
+            }
+          } else if (Number.isInteger(destRef)) {
+            pageNumber = destRef + 1;
+          }
 
-  if (destLength < 2) {
-    return false;
-  }
+          if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > 
pageNumberNesting.get(pageNumber))) {
+            const destHash = this.linkService.getDestinationHash(dest);
+            pageNumberToDestHash.set(pageNumber, destHash);
+            pageNumberNesting.set(pageNumber, currentNesting);
+          }
+        }
 
-  const page = dest[0];
+        if (items.length > 0) {
+          queue.push({
+            nesting: currentNesting + 1,
+            items
+          });
+        }
+      }
+    }
 
-  if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && 
!(Number.isInteger(page) && page >= 0)) {
-    return false;
+    this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : 
null);
+
+    return this._pageNumberToDestHashCapability.promise;
   }
 
-  const zoom = dest[1];
+}
 
-  if (!(typeof zoom === "object" && typeof zoom.name === "string")) {
-    return false;
-  }
+exports.PDFOutlineViewer = PDFOutlineViewer;
 
-  let allowNull = true;
+/***/ }),
+/* 21 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-  switch (zoom.name) {
-    case "XYZ":
-      if (destLength !== 5) {
-        return false;
-      }
 
-      break;
 
-    case "Fit":
-    case "FitB":
-      return destLength === 2;
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFPresentationMode = void 0;
 
-    case "FitH":
-    case "FitBH":
-    case "FitV":
-    case "FitBV":
-      if (destLength !== 3) {
-        return false;
-      }
+var _ui_utils = __webpack_require__(4);
 
-      break;
+const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;
+const DELAY_BEFORE_HIDING_CONTROLS = 3000;
+const ACTIVE_SELECTOR = "pdfPresentationMode";
+const CONTROLS_SELECTOR = "pdfPresentationModeControls";
+const MOUSE_SCROLL_COOLDOWN_TIME = 50;
+const PAGE_SWITCH_THRESHOLD = 0.1;
+const SWIPE_MIN_DISTANCE_THRESHOLD = 50;
+const SWIPE_ANGLE_THRESHOLD = Math.PI / 6;
 
-    case "FitR":
-      if (destLength !== 6) {
-        return false;
-      }
+class PDFPresentationMode {
+  constructor({
+    container,
+    pdfViewer,
+    eventBus,
+    contextMenuItems = null
+  }) {
+    this.container = container;
+    this.pdfViewer = pdfViewer;
+    this.eventBus = eventBus;
+    this.active = false;
+    this.args = null;
+    this.contextMenuOpen = false;
+    this.mouseScrollTimeStamp = 0;
+    this.mouseScrollDelta = 0;
+    this.touchSwipeState = null;
 
-      allowNull = false;
-      break;
+    if (contextMenuItems) {
+      contextMenuItems.contextFirstPage.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("firstpage", {
+          source: this
+        });
+      });
+      contextMenuItems.contextLastPage.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("lastpage", {
+          source: this
+        });
+      });
+      contextMenuItems.contextPageRotateCw.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("rotatecw", {
+          source: this
+        });
+      });
+      contextMenuItems.contextPageRotateCcw.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("rotateccw", {
+          source: this
+        });
+      });
+    }
+  }
 
-    default:
+  request() {
+    if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) {
       return false;
-  }
+    }
 
-  for (let i = 2; i < destLength; i++) {
-    const param = dest[i];
+    this._addFullscreenChangeListeners();
 
-    if (!(typeof param === "number" || allowNull && param === null)) {
+    this._setSwitchInProgress();
+
+    this._notifyStateChange();
+
+    if (this.container.requestFullscreen) {
+      this.container.requestFullscreen();
+    } else if (this.container.mozRequestFullScreen) {
+      this.container.mozRequestFullScreen();
+    } else if (this.container.webkitRequestFullscreen) {
+      this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
+    } else {
       return false;
     }
+
+    this.args = {
+      page: this.pdfViewer.currentPageNumber,
+      previousScale: this.pdfViewer.currentScaleValue
+    };
+    return true;
   }
 
-  return true;
-}
+  _mouseWheel(evt) {
+    if (!this.active) {
+      return;
+    }
 
-class SimpleLinkService {
-  constructor() {
-    this.externalLinkTarget = null;
-    this.externalLinkRel = null;
-    this.externalLinkEnabled = true;
-    this._ignoreDestinationZoom = false;
-  }
+    evt.preventDefault();
+    const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
+    const currentTime = new Date().getTime();
+    const storedTime = this.mouseScrollTimeStamp;
 
-  get pagesCount() {
-    return 0;
-  }
+    if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
+      return;
+    }
 
-  get page() {
-    return 0;
-  }
+    if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {
+      this._resetMouseScrollState();
+    }
 
-  set page(value) {}
+    this.mouseScrollDelta += delta;
 
-  get rotation() {
-    return 0;
-  }
+    if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
+      const totalDelta = this.mouseScrollDelta;
 
-  set rotation(value) {}
+      this._resetMouseScrollState();
 
-  navigateTo(dest) {}
+      const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage();
 
-  getDestinationHash(dest) {
-    return "#";
+      if (success) {
+        this.mouseScrollTimeStamp = currentTime;
+      }
+    }
   }
 
-  getAnchorUrl(hash) {
-    return "#";
+  get isFullscreen() {
+    return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen);
   }
 
-  setHash(hash) {}
+  _notifyStateChange() {
+    let state = _ui_utils.PresentationModeState.NORMAL;
 
-  executeNamedAction(action) {}
+    if (this.switchInProgress) {
+      state = _ui_utils.PresentationModeState.CHANGING;
+    } else if (this.active) {
+      state = _ui_utils.PresentationModeState.FULLSCREEN;
+    }
 
-  cachePageRef(pageNum, pageRef) {}
+    this.eventBus.dispatch("presentationmodechanged", {
+      source: this,
+      state,
 
-  isPageVisible(pageNumber) {
-    return true;
+      get active() {
+        throw new Error("Deprecated parameter: `active`, please use `state` instead.");
+      },
+
+      get switchInProgress() {
+        throw new Error("Deprecated parameter: `switchInProgress`, please use `state` instead.");
+      }
+
+    });
   }
 
-}
+  _setSwitchInProgress() {
+    if (this.switchInProgress) {
+      clearTimeout(this.switchInProgress);
+    }
 
-exports.SimpleLinkService = SimpleLinkService;
+    this.switchInProgress = setTimeout(() => {
+      this._removeFullscreenChangeListeners();
 
-/***/ }),
-/* 21 */
-/***/ (function(module, exports, __webpack_require__) {
+      delete this.switchInProgress;
+
+      this._notifyStateChange();
+    }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
+  }
+
+  _resetSwitchInProgress() {
+    if (this.switchInProgress) {
+      clearTimeout(this.switchInProgress);
+      delete this.switchInProgress;
+    }
+  }
 
-"use strict";
+  _enter() {
+    this.active = true;
 
+    this._resetSwitchInProgress();
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PDFOutlineViewer = void 0;
+    this._notifyStateChange();
 
-var _pdfjsLib = __webpack_require__(5);
+    this.container.classList.add(ACTIVE_SELECTOR);
+    setTimeout(() => {
+      this.pdfViewer.currentPageNumber = this.args.page;
+      this.pdfViewer.currentScaleValue = "page-fit";
+    }, 0);
 
-var _base_tree_viewer = __webpack_require__(13);
+    this._addWindowListeners();
 
-class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
-  constructor(options) {
-    super(options);
-    this.linkService = options.linkService;
+    this._showControls();
 
-    this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this));
+    this.contextMenuOpen = false;
+    this.container.setAttribute("contextmenu", "viewerContextMenu");
+    window.getSelection().removeAllRanges();
   }
 
-  reset() {
-    super.reset();
-    this._outline = null;
-  }
+  _exit() {
+    const page = this.pdfViewer.currentPageNumber;
+    this.container.classList.remove(ACTIVE_SELECTOR);
+    setTimeout(() => {
+      this.active = false;
+
+      this._removeFullscreenChangeListeners();
 
-  _dispatchEvent(outlineCount) {
-    this.eventBus.dispatch("outlineloaded", {
-      source: this,
-      outlineCount
-    });
-  }
+      this._notifyStateChange();
 
-  _bindLink(element, {
-    url,
-    newWindow,
-    dest
-  }) {
-    const {
-      linkService
-    } = this;
+      this.pdfViewer.currentScaleValue = this.args.previousScale;
+      this.pdfViewer.currentPageNumber = page;
+      this.args = null;
+    }, 0);
 
-    if (url) {
-      (0, _pdfjsLib.addLinkAttributes)(element, {
-        url,
-        target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,
-        rel: linkService.externalLinkRel,
-        enabled: linkService.externalLinkEnabled
-      });
-      return;
-    }
+    this._removeWindowListeners();
 
-    element.href = linkService.getDestinationHash(dest);
+    this._hideControls();
 
-    element.onclick = () => {
-      if (dest) {
-        linkService.navigateTo(dest);
-      }
+    this._resetMouseScrollState();
 
-      return false;
-    };
+    this.container.removeAttribute("contextmenu");
+    this.contextMenuOpen = false;
   }
 
-  _setStyles(element, {
-    bold,
-    italic
-  }) {
-    if (bold) {
-      element.style.fontWeight = "bold";
+  _mouseDown(evt) {
+    if (this.contextMenuOpen) {
+      this.contextMenuOpen = false;
+      evt.preventDefault();
+      return;
     }
 
-    if (italic) {
-      element.style.fontStyle = "italic";
+    if (evt.button === 0) {
+      const isInternalLink = evt.target.href && evt.target.classList.contains("internalLink");
+
+      if (!isInternalLink) {
+        evt.preventDefault();
+
+        if (evt.shiftKey) {
+          this.pdfViewer.previousPage();
+        } else {
+          this.pdfViewer.nextPage();
+        }
+      }
     }
   }
 
-  _addToggleButton(div, {
-    count,
-    items
-  }) {
-    const hidden = count < 0 && Math.abs(count) === items.length;
-
-    super._addToggleButton(div, hidden);
+  _contextMenu() {
+    this.contextMenuOpen = true;
   }
 
-  _toggleAllTreeItems() {
-    if (!this._outline) {
-      return;
+  _showControls() {
+    if (this.controlsTimeout) {
+      clearTimeout(this.controlsTimeout);
+    } else {
+      this.container.classList.add(CONTROLS_SELECTOR);
     }
 
-    super._toggleAllTreeItems();
+    this.controlsTimeout = setTimeout(() => {
+      this.container.classList.remove(CONTROLS_SELECTOR);
+      delete this.controlsTimeout;
+    }, DELAY_BEFORE_HIDING_CONTROLS);
   }
 
-  render({
-    outline
-  }) {
-    if (this._outline) {
-      this.reset();
+  _hideControls() {
+    if (!this.controlsTimeout) {
+      return;
     }
 
-    this._outline = outline || null;
+    clearTimeout(this.controlsTimeout);
+    this.container.classList.remove(CONTROLS_SELECTOR);
+    delete this.controlsTimeout;
+  }
 
-    if (!outline) {
-      this._dispatchEvent(0);
+  _resetMouseScrollState() {
+    this.mouseScrollTimeStamp = 0;
+    this.mouseScrollDelta = 0;
+  }
 
+  _touchSwipe(evt) {
+    if (!this.active) {
       return;
     }
 
-    const fragment = document.createDocumentFragment();
-    const queue = [{
-      parent: fragment,
-      items: outline
-    }];
-    let outlineCount = 0,
-        hasAnyNesting = false;
-
-    while (queue.length > 0) {
-      const levelData = queue.shift();
+    if (evt.touches.length > 1) {
+      this.touchSwipeState = null;
+      return;
+    }
 
-      for (const item of levelData.items) {
-        const div = document.createElement("div");
-        div.className = "treeItem";
-        const element = document.createElement("a");
+    switch (evt.type) {
+      case "touchstart":
+        this.touchSwipeState = {
+          startX: evt.touches[0].pageX,
+          startY: evt.touches[0].pageY,
+          endX: evt.touches[0].pageX,
+          endY: evt.touches[0].pageY
+        };
+        break;
 
-        this._bindLink(element, item);
+      case "touchmove":
+        if (this.touchSwipeState === null) {
+          return;
+        }
 
-        this._setStyles(element, item);
+        this.touchSwipeState.endX = evt.touches[0].pageX;
+        this.touchSwipeState.endY = evt.touches[0].pageY;
+        evt.preventDefault();
+        break;
 
-        element.textContent = this._normalizeTextContent(item.title);
-        div.appendChild(element);
+      case "touchend":
+        if (this.touchSwipeState === null) {
+          return;
+        }
 
-        if (item.items.length > 0) {
-          hasAnyNesting = true;
+        let delta = 0;
+        const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;
+        const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;
+        const absAngle = Math.abs(Math.atan2(dy, dx));
 
-          this._addToggleButton(div, item);
+        if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= 
Math.PI - SWIPE_ANGLE_THRESHOLD)) {
+          delta = dx;
+        } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= 
SWIPE_ANGLE_THRESHOLD) {
+          delta = dy;
+        }
 
-          const itemsDiv = document.createElement("div");
-          itemsDiv.className = "treeItems";
-          div.appendChild(itemsDiv);
-          queue.push({
-            parent: itemsDiv,
-            items: item.items
-          });
+        if (delta > 0) {
+          this.pdfViewer.previousPage();
+        } else if (delta < 0) {
+          this.pdfViewer.nextPage();
         }
 
-        levelData.parent.appendChild(div);
-        outlineCount++;
-      }
+        break;
     }
+  }
 
-    if (hasAnyNesting) {
-      this.container.classList.add("treeWithDeepNesting");
-      this._lastToggleIsShow = fragment.querySelectorAll(".treeItemsHidden").length === 0;
+  _addWindowListeners() {
+    this.showControlsBind = this._showControls.bind(this);
+    this.mouseDownBind = this._mouseDown.bind(this);
+    this.mouseWheelBind = this._mouseWheel.bind(this);
+    this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);
+    this.contextMenuBind = this._contextMenu.bind(this);
+    this.touchSwipeBind = this._touchSwipe.bind(this);
+    window.addEventListener("mousemove", this.showControlsBind);
+    window.addEventListener("mousedown", this.mouseDownBind);
+    window.addEventListener("wheel", this.mouseWheelBind, {
+      passive: false
+    });
+    window.addEventListener("keydown", this.resetMouseScrollStateBind);
+    window.addEventListener("contextmenu", this.contextMenuBind);
+    window.addEventListener("touchstart", this.touchSwipeBind);
+    window.addEventListener("touchmove", this.touchSwipeBind);
+    window.addEventListener("touchend", this.touchSwipeBind);
+  }
+
+  _removeWindowListeners() {
+    window.removeEventListener("mousemove", this.showControlsBind);
+    window.removeEventListener("mousedown", this.mouseDownBind);
+    window.removeEventListener("wheel", this.mouseWheelBind, {
+      passive: false
+    });
+    window.removeEventListener("keydown", this.resetMouseScrollStateBind);
+    window.removeEventListener("contextmenu", this.contextMenuBind);
+    window.removeEventListener("touchstart", this.touchSwipeBind);
+    window.removeEventListener("touchmove", this.touchSwipeBind);
+    window.removeEventListener("touchend", this.touchSwipeBind);
+    delete this.showControlsBind;
+    delete this.mouseDownBind;
+    delete this.mouseWheelBind;
+    delete this.resetMouseScrollStateBind;
+    delete this.contextMenuBind;
+    delete this.touchSwipeBind;
+  }
+
+  _fullscreenChange() {
+    if (this.isFullscreen) {
+      this._enter();
+    } else {
+      this._exit();
     }
+  }
 
-    this.container.appendChild(fragment);
+  _addFullscreenChangeListeners() {
+    this.fullscreenChangeBind = this._fullscreenChange.bind(this);
+    window.addEventListener("fullscreenchange", this.fullscreenChangeBind);
+    window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind);
+    window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
+  }
 
-    this._dispatchEvent(outlineCount);
+  _removeFullscreenChangeListeners() {
+    window.removeEventListener("fullscreenchange", this.fullscreenChangeBind);
+    window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind);
+    window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
+    delete this.fullscreenChangeBind;
   }
 
 }
 
-exports.PDFOutlineViewer = PDFOutlineViewer;
+exports.PDFPresentationMode = PDFPresentationMode;
 
 /***/ }),
 /* 22 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFPresentationMode = void 0;
+}));
+exports.PDFSidebar = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
-const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;
-const DELAY_BEFORE_HIDING_CONTROLS = 3000;
-const ACTIVE_SELECTOR = "pdfPresentationMode";
-const CONTROLS_SELECTOR = "pdfPresentationModeControls";
-const MOUSE_SCROLL_COOLDOWN_TIME = 50;
-const PAGE_SWITCH_THRESHOLD = 0.1;
-const SWIPE_MIN_DISTANCE_THRESHOLD = 50;
-const SWIPE_ANGLE_THRESHOLD = Math.PI / 6;
+var _pdf_rendering_queue = __webpack_require__(8);
 
-class PDFPresentationMode {
+const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
+
+class PDFSidebar {
   constructor({
-    container,
+    elements,
     pdfViewer,
+    pdfThumbnailViewer,
     eventBus,
-    contextMenuItems = null
+    l10n = _ui_utils.NullL10n
   }) {
-    this.container = container;
+    this.isOpen = false;
+    this.active = _ui_utils.SidebarView.THUMBS;
+    this.isInitialViewSet = false;
+    this.onToggled = null;
     this.pdfViewer = pdfViewer;
+    this.pdfThumbnailViewer = pdfThumbnailViewer;
+    this.outerContainer = elements.outerContainer;
+    this.viewerContainer = elements.viewerContainer;
+    this.toggleButton = elements.toggleButton;
+    this.thumbnailButton = elements.thumbnailButton;
+    this.outlineButton = elements.outlineButton;
+    this.attachmentsButton = elements.attachmentsButton;
+    this.layersButton = elements.layersButton;
+    this.thumbnailView = elements.thumbnailView;
+    this.outlineView = elements.outlineView;
+    this.attachmentsView = elements.attachmentsView;
+    this.layersView = elements.layersView;
+    this._outlineOptionsContainer = elements.outlineOptionsContainer;
+    this._currentOutlineItemButton = elements.currentOutlineItemButton;
     this.eventBus = eventBus;
-    this.active = false;
-    this.args = null;
-    this.contextMenuOpen = false;
-    this.mouseScrollTimeStamp = 0;
-    this.mouseScrollDelta = 0;
-    this.touchSwipeState = null;
+    this.l10n = l10n;
 
-    if (contextMenuItems) {
-      contextMenuItems.contextFirstPage.addEventListener("click", () => {
-        this.contextMenuOpen = false;
-        this.eventBus.dispatch("firstpage", {
-          source: this
-        });
-      });
-      contextMenuItems.contextLastPage.addEventListener("click", () => {
-        this.contextMenuOpen = false;
-        this.eventBus.dispatch("lastpage", {
-          source: this
-        });
-      });
-      contextMenuItems.contextPageRotateCw.addEventListener("click", () => {
-        this.contextMenuOpen = false;
-        this.eventBus.dispatch("rotatecw", {
-          source: this
-        });
-      });
-      contextMenuItems.contextPageRotateCcw.addEventListener("click", () => {
-        this.contextMenuOpen = false;
-        this.eventBus.dispatch("rotateccw", {
-          source: this
-        });
-      });
-    }
+    this._addEventListeners();
   }
 
-  request() {
-    if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) {
-      return false;
-    }
+  reset() {
+    this.isInitialViewSet = false;
 
-    this._addFullscreenChangeListeners();
+    this._hideUINotification(true);
 
-    this._setSwitchInProgress();
+    this.switchView(_ui_utils.SidebarView.THUMBS);
+    this.outlineButton.disabled = false;
+    this.attachmentsButton.disabled = false;
+    this.layersButton.disabled = false;
+    this._currentOutlineItemButton.disabled = true;
+  }
 
-    this._notifyStateChange();
+  get visibleView() {
+    return this.isOpen ? this.active : _ui_utils.SidebarView.NONE;
+  }
 
-    if (this.container.requestFullscreen) {
-      this.container.requestFullscreen();
-    } else if (this.container.mozRequestFullScreen) {
-      this.container.mozRequestFullScreen();
-    } else if (this.container.webkitRequestFullscreen) {
-      this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
-    } else if (this.container.msRequestFullscreen) {
-      this.container.msRequestFullscreen();
-    } else {
-      return false;
-    }
+  get isThumbnailViewVisible() {
+    return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS;
+  }
 
-    this.args = {
-      page: this.pdfViewer.currentPageNumber,
-      previousScale: this.pdfViewer.currentScaleValue
-    };
-    return true;
+  get isOutlineViewVisible() {
+    return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE;
   }
 
-  _mouseWheel(evt) {
-    if (!this.active) {
-      return;
-    }
+  get isAttachmentsViewVisible() {
+    return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS;
+  }
 
-    evt.preventDefault();
-    const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
-    const currentTime = new Date().getTime();
-    const storedTime = this.mouseScrollTimeStamp;
+  get isLayersViewVisible() {
+    return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS;
+  }
 
-    if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
+  setInitialView(view = _ui_utils.SidebarView.NONE) {
+    if (this.isInitialViewSet) {
       return;
     }
 
-    if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {
-      this._resetMouseScrollState();
-    }
-
-    this.mouseScrollDelta += delta;
-
-    if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
-      const totalDelta = this.mouseScrollDelta;
+    this.isInitialViewSet = true;
 
-      this._resetMouseScrollState();
+    if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) {
+      this._dispatchEvent();
 
-      const success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage();
+      return;
+    }
 
-      if (success) {
-        this.mouseScrollTimeStamp = currentTime;
-      }
+    if (!this._switchView(view, true)) {
+      this._dispatchEvent();
     }
   }
 
-  get isFullscreen() {
-    return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || 
document.msFullscreenElement);
+  switchView(view, forceOpen = false) {
+    this._switchView(view, forceOpen);
   }
 
-  _goToPreviousPage() {
-    const page = this.pdfViewer.currentPageNumber;
+  _switchView(view, forceOpen = false) {
+    const isViewChanged = view !== this.active;
+    let shouldForceRendering = false;
 
-    if (page <= 1) {
-      return false;
-    }
+    switch (view) {
+      case _ui_utils.SidebarView.NONE:
+        if (this.isOpen) {
+          this.close();
+          return true;
+        }
 
-    this.pdfViewer.currentPageNumber = page - 1;
-    return true;
-  }
+        return false;
 
-  _goToNextPage() {
-    const page = this.pdfViewer.currentPageNumber;
+      case _ui_utils.SidebarView.THUMBS:
+        if (this.isOpen && isViewChanged) {
+          shouldForceRendering = true;
+        }
 
-    if (page >= this.pdfViewer.pagesCount) {
-      return false;
-    }
+        break;
 
-    this.pdfViewer.currentPageNumber = page + 1;
-    return true;
-  }
+      case _ui_utils.SidebarView.OUTLINE:
+        if (this.outlineButton.disabled) {
+          return false;
+        }
 
-  _notifyStateChange() {
-    this.eventBus.dispatch("presentationmodechanged", {
-      source: this,
-      active: this.active,
-      switchInProgress: !!this.switchInProgress
-    });
-  }
+        break;
 
-  _setSwitchInProgress() {
-    if (this.switchInProgress) {
-      clearTimeout(this.switchInProgress);
-    }
+      case _ui_utils.SidebarView.ATTACHMENTS:
+        if (this.attachmentsButton.disabled) {
+          return false;
+        }
 
-    this.switchInProgress = setTimeout(() => {
-      this._removeFullscreenChangeListeners();
+        break;
 
-      delete this.switchInProgress;
+      case _ui_utils.SidebarView.LAYERS:
+        if (this.layersButton.disabled) {
+          return false;
+        }
 
-      this._notifyStateChange();
-    }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
-  }
+        break;
 
-  _resetSwitchInProgress() {
-    if (this.switchInProgress) {
-      clearTimeout(this.switchInProgress);
-      delete this.switchInProgress;
+      default:
+        console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`);
+        return false;
     }
-  }
 
-  _enter() {
-    this.active = true;
+    this.active = view;
+    this.thumbnailButton.classList.toggle("toggled", view === _ui_utils.SidebarView.THUMBS);
+    this.outlineButton.classList.toggle("toggled", view === _ui_utils.SidebarView.OUTLINE);
+    this.attachmentsButton.classList.toggle("toggled", view === _ui_utils.SidebarView.ATTACHMENTS);
+    this.layersButton.classList.toggle("toggled", view === _ui_utils.SidebarView.LAYERS);
+    this.thumbnailView.classList.toggle("hidden", view !== _ui_utils.SidebarView.THUMBS);
+    this.outlineView.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE);
+    this.attachmentsView.classList.toggle("hidden", view !== _ui_utils.SidebarView.ATTACHMENTS);
+    this.layersView.classList.toggle("hidden", view !== _ui_utils.SidebarView.LAYERS);
 
-    this._resetSwitchInProgress();
+    this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE);
 
-    this._notifyStateChange();
+    if (forceOpen && !this.isOpen) {
+      this.open();
+      return true;
+    }
 
-    this.container.classList.add(ACTIVE_SELECTOR);
-    setTimeout(() => {
-      this.pdfViewer.currentPageNumber = this.args.page;
-      this.pdfViewer.currentScaleValue = "page-fit";
-    }, 0);
+    if (shouldForceRendering) {
+      this._updateThumbnailViewer();
 
-    this._addWindowListeners();
+      this._forceRendering();
+    }
 
-    this._showControls();
+    if (isViewChanged) {
+      this._dispatchEvent();
+    }
 
-    this.contextMenuOpen = false;
-    this.container.setAttribute("contextmenu", "viewerContextMenu");
-    window.getSelection().removeAllRanges();
+    return isViewChanged;
   }
 
-  _exit() {
-    const page = this.pdfViewer.currentPageNumber;
-    this.container.classList.remove(ACTIVE_SELECTOR);
-    setTimeout(() => {
-      this.active = false;
-
-      this._removeFullscreenChangeListeners();
-
-      this._notifyStateChange();
+  open() {
+    if (this.isOpen) {
+      return;
+    }
 
-      this.pdfViewer.currentScaleValue = this.args.previousScale;
-      this.pdfViewer.currentPageNumber = page;
-      this.args = null;
-    }, 0);
+    this.isOpen = true;
+    this.toggleButton.classList.add("toggled");
+    this.outerContainer.classList.add("sidebarMoving", "sidebarOpen");
 
-    this._removeWindowListeners();
+    if (this.active === _ui_utils.SidebarView.THUMBS) {
+      this._updateThumbnailViewer();
+    }
 
-    this._hideControls();
+    this._forceRendering();
 
-    this._resetMouseScrollState();
+    this._dispatchEvent();
 
-    this.container.removeAttribute("contextmenu");
-    this.contextMenuOpen = false;
+    this._hideUINotification();
   }
 
-  _mouseDown(evt) {
-    if (this.contextMenuOpen) {
-      this.contextMenuOpen = false;
-      evt.preventDefault();
+  close() {
+    if (!this.isOpen) {
       return;
     }
 
-    if (evt.button === 0) {
-      const isInternalLink = evt.target.href && evt.target.classList.contains("internalLink");
+    this.isOpen = false;
+    this.toggleButton.classList.remove("toggled");
+    this.outerContainer.classList.add("sidebarMoving");
+    this.outerContainer.classList.remove("sidebarOpen");
 
-      if (!isInternalLink) {
-        evt.preventDefault();
+    this._forceRendering();
 
-        if (evt.shiftKey) {
-          this._goToPreviousPage();
-        } else {
-          this._goToNextPage();
-        }
-      }
+    this._dispatchEvent();
+  }
+
+  toggle() {
+    if (this.isOpen) {
+      this.close();
+    } else {
+      this.open();
     }
   }
 
-  _contextMenu() {
-    this.contextMenuOpen = true;
+  _dispatchEvent() {
+    this.eventBus.dispatch("sidebarviewchanged", {
+      source: this,
+      view: this.visibleView
+    });
   }
 
-  _showControls() {
-    if (this.controlsTimeout) {
-      clearTimeout(this.controlsTimeout);
+  _forceRendering() {
+    if (this.onToggled) {
+      this.onToggled();
     } else {
-      this.container.classList.add(CONTROLS_SELECTOR);
+      this.pdfViewer.forceRendering();
+      this.pdfThumbnailViewer.forceRendering();
     }
-
-    this.controlsTimeout = setTimeout(() => {
-      this.container.classList.remove(CONTROLS_SELECTOR);
-      delete this.controlsTimeout;
-    }, DELAY_BEFORE_HIDING_CONTROLS);
   }
 
-  _hideControls() {
-    if (!this.controlsTimeout) {
-      return;
+  _updateThumbnailViewer() {
+    const {
+      pdfViewer,
+      pdfThumbnailViewer
+    } = this;
+    const pagesCount = pdfViewer.pagesCount;
+
+    for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
+      const pageView = pdfViewer.getPageView(pageIndex);
+
+      if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
+        const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);
+        thumbnailView.setImage(pageView);
+      }
     }
 
-    clearTimeout(this.controlsTimeout);
-    this.container.classList.remove(CONTROLS_SELECTOR);
-    delete this.controlsTimeout;
+    pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
   }
 
-  _resetMouseScrollState() {
-    this.mouseScrollTimeStamp = 0;
-    this.mouseScrollDelta = 0;
-  }
+  _showUINotification() {
+    this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains 
outline/attachments/layers)").then(msg => {
+      this.toggleButton.title = msg;
+    });
 
-  _touchSwipe(evt) {
-    if (!this.active) {
-      return;
+    if (!this.isOpen) {
+      this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
     }
+  }
 
-    if (evt.touches.length > 1) {
-      this.touchSwipeState = null;
-      return;
+  _hideUINotification(reset = false) {
+    if (this.isOpen || reset) {
+      this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
     }
 
-    switch (evt.type) {
-      case "touchstart":
-        this.touchSwipeState = {
-          startX: evt.touches[0].pageX,
-          startY: evt.touches[0].pageY,
-          endX: evt.touches[0].pageX,
-          endY: evt.touches[0].pageY
-        };
-        break;
-
-      case "touchmove":
-        if (this.touchSwipeState === null) {
-          return;
-        }
-
-        this.touchSwipeState.endX = evt.touches[0].pageX;
-        this.touchSwipeState.endY = evt.touches[0].pageY;
-        evt.preventDefault();
-        break;
+    if (reset) {
+      this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => {
+        this.toggleButton.title = msg;
+      });
+    }
+  }
 
-      case "touchend":
-        if (this.touchSwipeState === null) {
-          return;
-        }
+  _addEventListeners() {
+    this.viewerContainer.addEventListener("transitionend", evt => {
+      if (evt.target === this.viewerContainer) {
+        this.outerContainer.classList.remove("sidebarMoving");
+      }
+    });
+    this.toggleButton.addEventListener("click", () => {
+      this.toggle();
+    });
+    this.thumbnailButton.addEventListener("click", () => {
+      this.switchView(_ui_utils.SidebarView.THUMBS);
+    });
+    this.outlineButton.addEventListener("click", () => {
+      this.switchView(_ui_utils.SidebarView.OUTLINE);
+    });
+    this.outlineButton.addEventListener("dblclick", () => {
+      this.eventBus.dispatch("toggleoutlinetree", {
+        source: this
+      });
+    });
+    this.attachmentsButton.addEventListener("click", () => {
+      this.switchView(_ui_utils.SidebarView.ATTACHMENTS);
+    });
+    this.layersButton.addEventListener("click", () => {
+      this.switchView(_ui_utils.SidebarView.LAYERS);
+    });
+    this.layersButton.addEventListener("dblclick", () => {
+      this.eventBus.dispatch("resetlayers", {
+        source: this
+      });
+    });
 
-        let delta = 0;
-        const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;
-        const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;
-        const absAngle = Math.abs(Math.atan2(dy, dx));
+    this._currentOutlineItemButton.addEventListener("click", () => {
+      this.eventBus.dispatch("currentoutlineitem", {
+        source: this
+      });
+    });
 
-        if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= 
Math.PI - SWIPE_ANGLE_THRESHOLD)) {
-          delta = dx;
-        } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= 
SWIPE_ANGLE_THRESHOLD) {
-          delta = dy;
-        }
+    const onTreeLoaded = (count, button, view) => {
+      button.disabled = !count;
 
-        if (delta > 0) {
-          this._goToPreviousPage();
-        } else if (delta < 0) {
-          this._goToNextPage();
-        }
+      if (count) {
+        this._showUINotification();
+      } else if (this.active === view) {
+        this.switchView(_ui_utils.SidebarView.THUMBS);
+      }
+    };
 
-        break;
-    }
-  }
+    this.eventBus._on("outlineloaded", evt => {
+      onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE);
 
-  _addWindowListeners() {
-    this.showControlsBind = this._showControls.bind(this);
-    this.mouseDownBind = this._mouseDown.bind(this);
-    this.mouseWheelBind = this._mouseWheel.bind(this);
-    this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);
-    this.contextMenuBind = this._contextMenu.bind(this);
-    this.touchSwipeBind = this._touchSwipe.bind(this);
-    window.addEventListener("mousemove", this.showControlsBind);
-    window.addEventListener("mousedown", this.mouseDownBind);
-    window.addEventListener("wheel", this.mouseWheelBind, {
-      passive: false
+      if (evt.enableCurrentOutlineItemButton) {
+        this.pdfViewer.pagesPromise.then(() => {
+          this._currentOutlineItemButton.disabled = !this.isInitialViewSet;
+        });
+      }
     });
-    window.addEventListener("keydown", this.resetMouseScrollStateBind);
-    window.addEventListener("contextmenu", this.contextMenuBind);
-    window.addEventListener("touchstart", this.touchSwipeBind);
-    window.addEventListener("touchmove", this.touchSwipeBind);
-    window.addEventListener("touchend", this.touchSwipeBind);
-  }
 
-  _removeWindowListeners() {
-    window.removeEventListener("mousemove", this.showControlsBind);
-    window.removeEventListener("mousedown", this.mouseDownBind);
-    window.removeEventListener("wheel", this.mouseWheelBind, {
-      passive: false
+    this.eventBus._on("attachmentsloaded", evt => {
+      onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS);
     });
-    window.removeEventListener("keydown", this.resetMouseScrollStateBind);
-    window.removeEventListener("contextmenu", this.contextMenuBind);
-    window.removeEventListener("touchstart", this.touchSwipeBind);
-    window.removeEventListener("touchmove", this.touchSwipeBind);
-    window.removeEventListener("touchend", this.touchSwipeBind);
-    delete this.showControlsBind;
-    delete this.mouseDownBind;
-    delete this.mouseWheelBind;
-    delete this.resetMouseScrollStateBind;
-    delete this.contextMenuBind;
-    delete this.touchSwipeBind;
-  }
-
-  _fullscreenChange() {
-    if (this.isFullscreen) {
-      this._enter();
-    } else {
-      this._exit();
-    }
-  }
 
-  _addFullscreenChangeListeners() {
-    this.fullscreenChangeBind = this._fullscreenChange.bind(this);
-    window.addEventListener("fullscreenchange", this.fullscreenChangeBind);
-    window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind);
-    window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
-    window.addEventListener("MSFullscreenChange", this.fullscreenChangeBind);
-  }
+    this.eventBus._on("layersloaded", evt => {
+      onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS);
+    });
 
-  _removeFullscreenChangeListeners() {
-    window.removeEventListener("fullscreenchange", this.fullscreenChangeBind);
-    window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind);
-    window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
-    window.removeEventListener("MSFullscreenChange", this.fullscreenChangeBind);
-    delete this.fullscreenChangeBind;
+    this.eventBus._on("presentationmodechanged", evt => {
+      if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.isThumbnailViewVisible) {
+        this._updateThumbnailViewer();
+      }
+    });
   }
 
 }
 
-exports.PDFPresentationMode = PDFPresentationMode;
+exports.PDFSidebar = PDFSidebar;
 
 /***/ }),
 /* 23 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFSidebarResizer = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
 const SIDEBAR_WIDTH_VAR = "--sidebar-width";
 const SIDEBAR_MIN_WIDTH = 200;
@@ -8434,7 +9050,6 @@ const SIDEBAR_RESIZING_CLASS = "sidebarResizing";
 
 class PDFSidebarResizer {
   constructor(options, eventBus, l10n = _ui_utils.NullL10n) {
-    this.enabled = false;
     this.isRTL = false;
     this.sidebarOpen = false;
     this.doc = document.documentElement;
@@ -8444,16 +9059,7 @@ class PDFSidebarResizer {
     this.outerContainer = options.outerContainer;
     this.resizer = options.resizer;
     this.eventBus = eventBus;
-    this.l10n = l10n;
-
-    if (typeof CSS === "undefined" || typeof CSS.supports !== "function" || !CSS.supports(SIDEBAR_WIDTH_VAR, 
`calc(-1 * ${SIDEBAR_MIN_WIDTH}px)`)) {
-      console.warn("PDFSidebarResizer: " + "The browser does not support resizing of the sidebar.");
-      return;
-    }
-
-    this.enabled = true;
-    this.resizer.classList.remove("hidden");
-    this.l10n.getDirection().then(dir => {
+    l10n.getDirection().then(dir => {
       this.isRTL = dir === "rtl";
     });
 
@@ -8469,18 +9075,22 @@ class PDFSidebarResizer {
   }
 
   _updateWidth(width = 0) {
-    if (!this.enabled) {
-      return false;
+    const maxWidth = Math.floor(this.outerContainerWidth / 2);
+
+    if (width > maxWidth) {
+      width = maxWidth;
     }
 
-    const newWidth = (0, _ui_utils.clamp)(width, SIDEBAR_MIN_WIDTH, Math.floor(this.outerContainerWidth / 
2));
+    if (width < SIDEBAR_MIN_WIDTH) {
+      width = SIDEBAR_MIN_WIDTH;
+    }
 
-    if (newWidth === this._width) {
+    if (width === this._width) {
       return false;
     }
 
-    this._width = newWidth;
-    this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${newWidth}px`);
+    this._width = width;
+    this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);
     return true;
   }
 
@@ -8505,10 +9115,6 @@ class PDFSidebarResizer {
   }
 
   _addEventListeners() {
-    if (!this.enabled) {
-      return;
-    }
-
     const _boundEvents = this._boundEvents;
     _boundEvents.mouseMove = this._mouseMove.bind(this);
     _boundEvents.mouseUp = this._mouseUp.bind(this);
@@ -8565,20 +9171,21 @@ exports.PDFSidebarResizer = PDFSidebarResizer;
 
 /***/ }),
 /* 24 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFThumbnailViewer = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
 var _pdf_thumbnail_view = __webpack_require__(25);
 
+var _pdf_rendering_queue = __webpack_require__(8);
+
 const THUMBNAIL_SCROLL_MARGIN = -19;
 const THUMBNAIL_SELECTED_CLASS = "selected";
 
@@ -8612,7 +9219,10 @@ class PDFThumbnailViewer {
   }
 
   _getVisibleThumbs() {
-    return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails);
+    return (0, _ui_utils.getVisibleElements)({
+      scrollEl: this.container,
+      views: this._thumbnails
+    });
   }
 
   scrollThumbnailIntoView(pageNumber) {
@@ -8690,7 +9300,13 @@ class PDFThumbnailViewer {
   }
 
   cleanup() {
-    _pdf_thumbnail_view.PDFThumbnailView.cleanup();
+    for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
+      if (this._thumbnails[i] && this._thumbnails[i].renderingState !== 
_pdf_rendering_queue.RenderingStates.FINISHED) {
+        this._thumbnails[i].reset();
+      }
+    }
+
+    _pdf_thumbnail_view.TempImageFactory.destroyCanvas();
   }
 
   _resetView() {
@@ -8838,19 +9454,18 @@ exports.PDFThumbnailViewer = PDFThumbnailViewer;
 
 /***/ }),
 /* 25 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.PDFThumbnailView = void 0;
+}));
+exports.TempImageFactory = exports.PDFThumbnailView = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _ui_utils = __webpack_require__(4);
 
-var _ui_utils = __webpack_require__(2);
+var _pdfjsLib = __webpack_require__(5);
 
 var _pdf_rendering_queue = __webpack_require__(8);
 
@@ -8896,6 +9511,8 @@ const TempImageFactory = function TempImageFactoryClosure() {
   };
 }();
 
+exports.TempImageFactory = TempImageFactory;
+
 class PDFThumbnailView {
   constructor({
     container,
@@ -8942,7 +9559,7 @@ class PDFThumbnailView {
     });
 
     anchor.onclick = function () {
-      linkService.page = id;
+      linkService.goToPage(id);
       return false;
     };
 
@@ -9027,7 +9644,7 @@ class PDFThumbnailView {
     this.resume = null;
   }
 
-  _getPageDrawContext(noCtxScale = false) {
+  _getPageDrawContext() {
     const canvas = document.createElement("canvas");
     this.canvas = canvas;
     canvas.mozOpaque = true;
@@ -9039,12 +9656,8 @@ class PDFThumbnailView {
     canvas.height = this.canvasHeight * outputScale.sy | 0;
     canvas.style.width = this.canvasWidth + "px";
     canvas.style.height = this.canvasHeight + "px";
-
-    if (!noCtxScale && outputScale.scaled) {
-      ctx.scale(outputScale.sx, outputScale.sy);
-    }
-
-    return ctx;
+    const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;
+    return [ctx, transform];
   }
 
   _convertCanvasToImage() {
@@ -9104,15 +9717,13 @@ class PDFThumbnailView {
     }
 
     this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
-    const renderCapability = (0, _pdfjsLib.createPromiseCapability)();
 
-    const finishRenderTask = error => {
+    const finishRenderTask = async (error = null) => {
       if (renderTask === this.renderTask) {
         this.renderTask = null;
       }
 
       if (error instanceof _pdfjsLib.RenderingCancelledException) {
-        renderCapability.resolve(undefined);
         return;
       }
 
@@ -9120,14 +9731,12 @@ class PDFThumbnailView {
 
       this._convertCanvasToImage();
 
-      if (!error) {
-        renderCapability.resolve(undefined);
-      } else {
-        renderCapability.reject(error);
+      if (error) {
+        throw error;
       }
     };
 
-    const ctx = this._getPageDrawContext();
+    const [ctx, transform] = this._getPageDrawContext();
 
     const drawViewport = this.viewport.clone({
       scale: this.scale
@@ -9150,17 +9759,27 @@ class PDFThumbnailView {
 
     const renderContext = {
       canvasContext: ctx,
+      transform,
       viewport: drawViewport,
       optionalContentConfigPromise: this._optionalContentConfigPromise
     };
     const renderTask = this.renderTask = pdfPage.render(renderContext);
     renderTask.onContinue = renderContinueCallback;
-    renderTask.promise.then(function () {
+    const resultPromise = renderTask.promise.then(function () {
       finishRenderTask(null);
     }, function (error) {
       finishRenderTask(error);
     });
-    return renderCapability.promise;
+    resultPromise.finally(() => {
+      const pageCached = this.linkService.isPageCached(this.id);
+
+      if (pageCached) {
+        return;
+      }
+
+      this.pdfPage?.cleanup();
+    });
+    return resultPromise;
   }
 
   setImage(pageView) {
@@ -9184,7 +9803,7 @@ class PDFThumbnailView {
 
     this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
 
-    const ctx = this._getPageDrawContext(true);
+    const [ctx] = this._getPageDrawContext();
 
     const canvas = ctx.canvas;
 
@@ -9220,18 +9839,14 @@ class PDFThumbnailView {
   }
 
   get _thumbPageTitle() {
-    var _this$pageLabel;
-
     return this.l10n.get("thumb_page_title", {
-      page: (_this$pageLabel = this.pageLabel) != null ? _this$pageLabel : this.id
+      page: this.pageLabel ?? this.id
     }, "Page {{page}}");
   }
 
   get _thumbPageCanvas() {
-    var _this$pageLabel2;
-
     return this.l10n.get("thumb_page_canvas", {
-      page: (_this$pageLabel2 = this.pageLabel) != null ? _this$pageLabel2 : this.id
+      page: this.pageLabel ?? this.id
     }, "Thumbnail of Page {{page}}");
   }
 
@@ -9255,26 +9870,23 @@ class PDFThumbnailView {
     });
   }
 
-  static cleanup() {
-    TempImageFactory.destroyCanvas();
-  }
-
 }
 
 exports.PDFThumbnailView = PDFThumbnailView;
 
 /***/ }),
 /* 26 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFViewer = void 0;
 
+var _ui_utils = __webpack_require__(4);
+
 var _base_viewer = __webpack_require__(27);
 
 var _pdfjsLib = __webpack_require__(5);
@@ -9333,7 +9945,7 @@ class PDFViewer extends _base_viewer.BaseViewer {
         break;
       }
 
-      if (page.id === currentId) {
+      if (page.id === currentId && this._scrollMode === _ui_utils.ScrollMode.VERTICAL && this._spreadMode 
=== _ui_utils.SpreadMode.NONE) {
         stillFullyVisible = true;
         break;
       }
@@ -9352,27 +9964,26 @@ exports.PDFViewer = PDFViewer;
 
 /***/ }),
 /* 27 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.BaseViewer = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _pdfjsLib = __webpack_require__(5);
+
+var _ui_utils = __webpack_require__(4);
 
 var _pdf_rendering_queue = __webpack_require__(8);
 
 var _annotation_layer_builder = __webpack_require__(28);
 
-var _pdfjsLib = __webpack_require__(5);
-
 var _pdf_page_view = __webpack_require__(29);
 
-var _pdf_link_service = __webpack_require__(20);
+var _pdf_link_service = __webpack_require__(19);
 
 var _text_layer_builder = __webpack_require__(30);
 
@@ -9414,6 +10025,10 @@ function PDFPageViewBuffer(size) {
       data.shift().destroy();
     }
   };
+
+  this.has = function (view) {
+    return data.includes(view);
+  };
 }
 
 function isSameScale(oldScale, newScale) {
@@ -9434,14 +10049,24 @@ class BaseViewer {
       throw new Error("Cannot initialize BaseViewer.");
     }
 
+    const viewerVersion = '2.7.570';
+
+    if (_pdfjsLib.version !== viewerVersion) {
+      throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version 
"${viewerVersion}".`);
+    }
+
     this._name = this.constructor.name;
     this.container = options.container;
     this.viewer = options.viewer || options.container.firstElementChild;
 
-    if (!(this.container instanceof HTMLDivElement && this.viewer instanceof HTMLDivElement)) {
+    if (!(this.container?.tagName.toUpperCase() === "DIV" && this.viewer?.tagName.toUpperCase() === "DIV")) {
       throw new Error("Invalid `container` and/or `viewer` option.");
     }
 
+    if (getComputedStyle(this.container).position !== "absolute") {
+      throw new Error("The `container` must be absolutely positioned.");
+    }
+
     this.eventBus = options.eventBus;
     this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
     this.downloadManager = options.downloadManager || null;
@@ -9456,6 +10081,8 @@ class BaseViewer {
     this.useOnlyCssZoom = options.useOnlyCssZoom || false;
     this.maxCanvasPixels = options.maxCanvasPixels;
     this.l10n = options.l10n || _ui_utils.NullL10n;
+    this.enableScripting = options.enableScripting || false;
+    this._mouseState = options.mouseState || null;
     this.defaultRenderingQueue = !options.renderingQueue;
 
     if (this.defaultRenderingQueue) {
@@ -9531,11 +10158,13 @@ class BaseViewer {
       return false;
     }
 
+    const previous = this._currentPageNumber;
     this._currentPageNumber = val;
     this.eventBus.dispatch("pagechanging", {
       source: this,
       pageNumber: val,
-      pageLabel: this._pageLabels && this._pageLabels[val - 1]
+      pageLabel: this._pageLabels && this._pageLabels[val - 1],
+      previous
     });
 
     if (resetCurrentPageView) {
@@ -9663,6 +10292,10 @@ class BaseViewer {
 
   setDocument(pdfDocument) {
     if (this.pdfDocument) {
+      this.eventBus.dispatch("pagesdestroy", {
+        source: this
+      });
+
       this._cancelRendering();
 
       this._resetView();
@@ -9680,7 +10313,6 @@ class BaseViewer {
 
     const pagesCount = pdfDocument.numPages;
     const firstPagePromise = pdfDocument.getPage(1);
-    const annotationStorage = pdfDocument.annotationStorage;
     const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
 
     this._pagesCapability.promise.then(() => {
@@ -9733,7 +10365,6 @@ class BaseViewer {
           id: pageNum,
           scale,
           defaultViewport: viewport.clone(),
-          annotationStorage,
           optionalContentConfigPromise,
           renderingQueue: this.renderingQueue,
           textLayerFactory,
@@ -9745,7 +10376,8 @@ class BaseViewer {
           enableWebGL: this.enableWebGL,
           useOnlyCssZoom: this.useOnlyCssZoom,
           maxCanvasPixels: this.maxCanvasPixels,
-          l10n: this.l10n
+          l10n: this.l10n,
+          enableScripting: this.enableScripting
         });
 
         this._pages.push(pageView);
@@ -9866,6 +10498,8 @@ class BaseViewer {
       this._onAfterDraw = null;
     }
 
+    this._resetScriptingEvents();
+
     this.viewer.textContent = "";
 
     this._updateScrollMode();
@@ -9937,6 +10571,14 @@ class BaseViewer {
     }
   }
 
+  get _pageWidthScaleFactor() {
+    if (this.spreadMode !== _ui_utils.SpreadMode.NONE && this.scrollMode !== _ui_utils.ScrollMode.HORIZONTAL 
&& !this.isInPresentationMode) {
+      return 2;
+    }
+
+    return 1;
+  }
+
   _setScale(value, noScroll = false) {
     let scale = parseFloat(value);
 
@@ -9957,7 +10599,7 @@ class BaseViewer {
         [hPadding, vPadding] = [vPadding, hPadding];
       }
 
-      const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;
+      const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale 
/ this._pageWidthScaleFactor;
       const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * 
currentPage.scale;
 
       switch (value) {
@@ -10003,6 +10645,20 @@ class BaseViewer {
     });
   }
 
+  pageLabelToPageNumber(label) {
+    if (!this._pageLabels) {
+      return null;
+    }
+
+    const i = this._pageLabels.indexOf(label);
+
+    if (i < 0) {
+      return null;
+    }
+
+    return i + 1;
+  }
+
   scrollPageIntoView({
     pageNumber,
     destArray = null,
@@ -10059,6 +10715,8 @@ class BaseViewer {
         if (y === null && this._location) {
           x = this._location.left;
           y = this._location.top;
+        } else if (typeof y !== "number") {
+          y = pageHeight;
         }
 
         break;
@@ -10189,6 +10847,10 @@ class BaseViewer {
     return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL;
   }
 
+  get _isContainerRtl() {
+    return getComputedStyle(this.container).direction === "rtl";
+  }
+
   get isInPresentationMode() {
     return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
   }
@@ -10228,7 +10890,13 @@ class BaseViewer {
   }
 
   _getVisiblePages() {
-    return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, 
this._isScrollModeHorizontal);
+    return (0, _ui_utils.getVisibleElements)({
+      scrollEl: this.container,
+      views: this._pages,
+      sortByVisibility: true,
+      horizontal: this._isScrollModeHorizontal,
+      rtl: this._isScrollModeHorizontal && this._isContainerRtl
+    });
   }
 
   isPageVisible(pageNumber) {
@@ -10236,8 +10904,8 @@ class BaseViewer {
       return false;
     }
 
-    if (pageNumber < 1 || pageNumber > this.pagesCount) {
-      console.error(`${this._name}.isPageVisible: "${pageNumber}" is out of bounds.`);
+    if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
+      console.error(`${this._name}.isPageVisible: "${pageNumber}" is not a valid page.`);
       return false;
     }
 
@@ -10246,6 +10914,25 @@ class BaseViewer {
     });
   }
 
+  isPageCached(pageNumber) {
+    if (!this.pdfDocument || !this._buffer) {
+      return false;
+    }
+
+    if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
+      console.error(`${this._name}.isPageCached: "${pageNumber}" is not a valid page.`);
+      return false;
+    }
+
+    const pageView = this._pages[pageNumber - 1];
+
+    if (!pageView) {
+      return false;
+    }
+
+    return this._buffer.has(pageView);
+  }
+
   cleanup() {
     for (let i = 0, ii = this._pages.length; i < ii; i++) {
       if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) 
{
@@ -10318,16 +11005,19 @@ class BaseViewer {
     });
   }
 
-  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = false, l10n = _ui_utils.NullL10n) {
+  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = false, l10n = _ui_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
     return new _annotation_layer_builder.AnnotationLayerBuilder({
       pageDiv,
       pdfPage,
-      annotationStorage,
+      annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage,
       imageResourcesPath,
       renderInteractiveForms,
       linkService: this.linkService,
       downloadManager: this.downloadManager,
-      l10n
+      l10n,
+      enableScripting,
+      hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(),
+      mouseState: mouseState || this._mouseState
     });
   }
 
@@ -10510,32 +11200,288 @@ class BaseViewer {
       return;
     }
 
+    if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
+      this._setScale(this._currentScaleValue, true);
+    }
+
     this._setCurrentPageNumber(pageNumber, true);
 
     this.update();
   }
 
+  _getPageAdvance(currentPageNumber, previous = false) {
+    if (this.isInPresentationMode) {
+      return 1;
+    }
+
+    switch (this._scrollMode) {
+      case _ui_utils.ScrollMode.WRAPPED:
+        {
+          const {
+            views
+          } = this._getVisiblePages(),
+                pageLayout = new Map();
+
+          for (const {
+            id,
+            y,
+            percent,
+            widthPercent
+          } of views) {
+            if (percent === 0 || widthPercent < 100) {
+              continue;
+            }
+
+            let yArray = pageLayout.get(y);
+
+            if (!yArray) {
+              pageLayout.set(y, yArray || (yArray = []));
+            }
+
+            yArray.push(id);
+          }
+
+          for (const yArray of pageLayout.values()) {
+            const currentIndex = yArray.indexOf(currentPageNumber);
+
+            if (currentIndex === -1) {
+              continue;
+            }
+
+            const numPages = yArray.length;
+
+            if (numPages === 1) {
+              break;
+            }
+
+            if (previous) {
+              for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {
+                const currentId = yArray[i],
+                      expectedId = yArray[i + 1] - 1;
+
+                if (currentId < expectedId) {
+                  return currentPageNumber - expectedId;
+                }
+              }
+            } else {
+              for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {
+                const currentId = yArray[i],
+                      expectedId = yArray[i - 1] + 1;
+
+                if (currentId > expectedId) {
+                  return expectedId - currentPageNumber;
+                }
+              }
+            }
+
+            if (previous) {
+              const firstId = yArray[0];
+
+              if (firstId < currentPageNumber) {
+                return currentPageNumber - firstId + 1;
+              }
+            } else {
+              const lastId = yArray[numPages - 1];
+
+              if (lastId > currentPageNumber) {
+                return lastId - currentPageNumber + 1;
+              }
+            }
+
+            break;
+          }
+
+          break;
+        }
+
+      case _ui_utils.ScrollMode.HORIZONTAL:
+        {
+          break;
+        }
+
+      case _ui_utils.ScrollMode.VERTICAL:
+        {
+          if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
+            break;
+          }
+
+          const parity = this._spreadMode - 1;
+
+          if (previous && currentPageNumber % 2 !== parity) {
+            break;
+          } else if (!previous && currentPageNumber % 2 === parity) {
+            break;
+          }
+
+          const {
+            views
+          } = this._getVisiblePages(),
+                expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;
+
+          for (const {
+            id,
+            percent,
+            widthPercent
+          } of views) {
+            if (id !== expectedId) {
+              continue;
+            }
+
+            if (percent > 0 && widthPercent === 100) {
+              return 2;
+            }
+
+            break;
+          }
+
+          break;
+        }
+    }
+
+    return 1;
+  }
+
+  nextPage() {
+    const currentPageNumber = this._currentPageNumber,
+          pagesCount = this.pagesCount;
+
+    if (currentPageNumber >= pagesCount) {
+      return false;
+    }
+
+    const advance = this._getPageAdvance(currentPageNumber, false) || 1;
+    this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);
+    return true;
+  }
+
+  previousPage() {
+    const currentPageNumber = this._currentPageNumber;
+
+    if (currentPageNumber <= 1) {
+      return false;
+    }
+
+    const advance = this._getPageAdvance(currentPageNumber, true) || 1;
+    this.currentPageNumber = Math.max(currentPageNumber - advance, 1);
+    return true;
+  }
+
+  initializeScriptingEvents() {
+    if (!this.enableScripting || this._pageOpenPendingSet) {
+      return;
+    }
+
+    const eventBus = this.eventBus,
+          pageOpenPendingSet = this._pageOpenPendingSet = new Set(),
+          scriptingEvents = this._scriptingEvents || (this._scriptingEvents = Object.create(null));
+
+    const dispatchPageClose = pageNumber => {
+      if (pageOpenPendingSet.has(pageNumber)) {
+        return;
+      }
+
+      eventBus.dispatch("pageclose", {
+        source: this,
+        pageNumber
+      });
+    };
+
+    const dispatchPageOpen = pageNumber => {
+      const pageView = this._pages[pageNumber - 1];
+
+      if (pageView?.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
+        pageOpenPendingSet.delete(pageNumber);
+        eventBus.dispatch("pageopen", {
+          source: this,
+          pageNumber,
+          actionsPromise: pageView.pdfPage?.getJSActions()
+        });
+      } else {
+        pageOpenPendingSet.add(pageNumber);
+      }
+    };
+
+    scriptingEvents.onPageChanging = ({
+      pageNumber,
+      previous
+    }) => {
+      if (pageNumber === previous) {
+        return;
+      }
+
+      dispatchPageClose(previous);
+      dispatchPageOpen(pageNumber);
+    };
+
+    eventBus._on("pagechanging", scriptingEvents.onPageChanging);
+
+    scriptingEvents.onPageRendered = ({
+      pageNumber
+    }) => {
+      if (!pageOpenPendingSet.has(pageNumber)) {
+        return;
+      }
+
+      if (pageNumber !== this._currentPageNumber) {
+        return;
+      }
+
+      dispatchPageOpen(pageNumber);
+    };
+
+    eventBus._on("pagerendered", scriptingEvents.onPageRendered);
+
+    scriptingEvents.onPagesDestroy = () => {
+      dispatchPageClose(this._currentPageNumber);
+    };
+
+    eventBus._on("pagesdestroy", scriptingEvents.onPagesDestroy);
+
+    dispatchPageOpen(this._currentPageNumber);
+  }
+
+  _resetScriptingEvents() {
+    if (!this.enableScripting || !this._pageOpenPendingSet) {
+      return;
+    }
+
+    const eventBus = this.eventBus,
+          scriptingEvents = this._scriptingEvents;
+
+    eventBus._off("pagechanging", scriptingEvents.onPageChanging);
+
+    scriptingEvents.onPageChanging = null;
+
+    eventBus._off("pagerendered", scriptingEvents.onPageRendered);
+
+    scriptingEvents.onPageRendered = null;
+
+    eventBus._off("pagesdestroy", scriptingEvents.onPagesDestroy);
+
+    scriptingEvents.onPagesDestroy = null;
+    this._pageOpenPendingSet = null;
+  }
+
 }
 
 exports.BaseViewer = BaseViewer;
 
 /***/ }),
 /* 28 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
-var _pdf_link_service = __webpack_require__(20);
+var _pdf_link_service = __webpack_require__(19);
 
 class AnnotationLayerBuilder {
   constructor({
@@ -10546,7 +11492,10 @@ class AnnotationLayerBuilder {
     annotationStorage = null,
     imageResourcesPath = "",
     renderInteractiveForms = true,
-    l10n = _ui_utils.NullL10n
+    l10n = _ui_utils.NullL10n,
+    enableScripting = false,
+    hasJSActionsPromise = null,
+    mouseState = null
   }) {
     this.pageDiv = pageDiv;
     this.pdfPage = pdfPage;
@@ -10556,14 +11505,17 @@ class AnnotationLayerBuilder {
     this.renderInteractiveForms = renderInteractiveForms;
     this.l10n = l10n;
     this.annotationStorage = annotationStorage;
+    this.enableScripting = enableScripting;
+    this._hasJSActionsPromise = hasJSActionsPromise;
+    this._mouseState = mouseState;
     this.div = null;
     this._cancelled = false;
   }
 
   render(viewport, intent = "display") {
-    return this.pdfPage.getAnnotations({
+    return Promise.all([this.pdfPage.getAnnotations({
       intent
-    }).then(annotations => {
+    }), this._hasJSActionsPromise]).then(([annotations, hasJSActions = false]) => {
       if (this._cancelled) {
         return;
       }
@@ -10583,7 +11535,10 @@ class AnnotationLayerBuilder {
         renderInteractiveForms: this.renderInteractiveForms,
         linkService: this.linkService,
         downloadManager: this.downloadManager,
-        annotationStorage: this.annotationStorage
+        annotationStorage: this.annotationStorage,
+        enableScripting: this.enableScripting,
+        hasJSActions,
+        mouseState: this._mouseState
       };
 
       if (this.div) {
@@ -10618,7 +11573,7 @@ class AnnotationLayerBuilder {
 exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
 
 class DefaultAnnotationLayerFactory {
-  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = true, l10n = _ui_utils.NullL10n) {
+  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = true, l10n = _ui_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
     return new AnnotationLayerBuilder({
       pageDiv,
       pdfPage,
@@ -10626,7 +11581,10 @@ class DefaultAnnotationLayerFactory {
       renderInteractiveForms,
       linkService: new _pdf_link_service.SimpleLinkService(),
       l10n,
-      annotationStorage
+      annotationStorage,
+      enableScripting,
+      hasJSActionsPromise,
+      mouseState
     });
   }
 
@@ -10636,23 +11594,22 @@ exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
 
 /***/ }),
 /* 29 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFPageView = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
 var _pdfjsLib = __webpack_require__(5);
 
 var _pdf_rendering_queue = __webpack_require__(8);
 
-var _viewer_compatibility = __webpack_require__(4);
+var _viewer_compatibility = __webpack_require__(2);
 
 const MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216;
 
@@ -10668,7 +11625,6 @@ class PDFPageView {
     this.scale = options.scale || _ui_utils.DEFAULT_SCALE;
     this.viewport = defaultViewport;
     this.pdfPageRotate = defaultViewport.rotation;
-    this._annotationStorage = options.annotationStorage || null;
     this._optionalContentConfigPromise = options.optionalContentConfigPromise || null;
     this.hasRestrictedScaling = false;
     this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : 
_ui_utils.TextLayerMode.ENABLE;
@@ -10683,11 +11639,12 @@ class PDFPageView {
     this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
     this.enableWebGL = options.enableWebGL || false;
     this.l10n = options.l10n || _ui_utils.NullL10n;
+    this.enableScripting = options.enableScripting || false;
     this.paintTask = null;
     this.paintedViewportMap = new WeakMap();
     this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
     this.resume = null;
-    this.error = null;
+    this._renderError = null;
     this.annotationLayer = null;
     this.textLayer = null;
     this.zoomLayer = null;
@@ -10708,7 +11665,6 @@ class PDFPageView {
       scale: this.scale * _ui_utils.CSS_UNITS,
       rotation: totalRotation
     });
-    this.stats = pdfPage.stats;
     this.reset();
   }
 
@@ -10826,7 +11782,8 @@ class PDFPageView {
         source: this,
         pageNumber: this.id,
         cssTransform: true,
-        timestamp: performance.now()
+        timestamp: performance.now(),
+        error: this._renderError
       });
       return;
     }
@@ -10848,7 +11805,8 @@ class PDFPageView {
           source: this,
           pageNumber: this.id,
           cssTransform: true,
-          timestamp: performance.now()
+          timestamp: performance.now(),
+          error: this._renderError
         });
         return;
       }
@@ -10901,8 +11859,7 @@ class PDFPageView {
       scaleY = width / height;
     }
 
-    const cssTransform = "rotate(" + relativeRotation + "deg) " + "scale(" + scaleX + "," + scaleY + ")";
-    target.style.transform = cssTransform;
+    target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;
 
     if (this.textLayer) {
       const textLayerViewport = this.textLayer.viewport;
@@ -10942,7 +11899,7 @@ class PDFPageView {
           break;
       }
 
-      textLayerDiv.style.transform = "rotate(" + textAbsRotation + "deg) " + "scale(" + scale + ", " + scale 
+ ") " + "translate(" + transX + ", " + transY + ")";
+      textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + 
`translate(${transX}, ${transY})`;
       textLayerDiv.style.transformOrigin = "0% 0%";
     }
 
@@ -11034,16 +11991,17 @@ class PDFPageView {
       };
     }
 
-    const finishPaintTask = async error => {
+    const finishPaintTask = async (error = null) => {
       if (paintTask === this.paintTask) {
         this.paintTask = null;
       }
 
       if (error instanceof _pdfjsLib.RenderingCancelledException) {
-        this.error = null;
+        this._renderError = null;
         return;
       }
 
+      this._renderError = error;
       this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
 
       if (this.loadingIconDiv) {
@@ -11053,13 +12011,12 @@ class PDFPageView {
 
       this._resetZoomLayer(true);
 
-      this.error = error;
-      this.stats = pdfPage.stats;
       this.eventBus.dispatch("pagerendered", {
         source: this,
         pageNumber: this.id,
         cssTransform: false,
-        timestamp: performance.now()
+        timestamp: performance.now(),
+        error: this._renderError
       });
 
       if (error) {
@@ -11086,7 +12043,7 @@ class PDFPageView {
 
     if (this.annotationLayerFactory) {
       if (!this.annotationLayer) {
-        this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, 
this._annotationStorage, this.imageResourcesPath, this.renderInteractiveForms, this.l10n);
+        this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, 
this.imageResourcesPath, this.renderInteractiveForms, this.l10n, this.enableScripting, null, null);
       }
 
       this._renderAnnotationLayer();
@@ -11257,15 +12214,14 @@ exports.PDFPageView = PDFPageView;
 
 /***/ }),
 /* 30 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
-exports.DefaultTextLayerFactory = exports.TextLayerBuilder = void 0;
+}));
+exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
@@ -11381,13 +12337,11 @@ class TextLayerBuilder {
     }
 
     const {
-      findController,
       textContentItemsStr
     } = this;
     let i = 0,
         iIndex = 0;
     const end = textContentItemsStr.length - 1;
-    const queryLen = findController.state.query.length;
     const result = [];
 
     for (let m = 0, mm = matches.length; m < mm; m++) {
@@ -11408,12 +12362,7 @@ class TextLayerBuilder {
           offset: matchIdx - iIndex
         }
       };
-
-      if (matchesLength) {
-        matchIdx += matchesLength[m];
-      } else {
-        matchIdx += queryLen;
-      }
+      matchIdx += matchesLength[m];
 
       while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {
         iIndex += textContentItemsStr[i].length;
@@ -11641,17 +12590,16 @@ exports.DefaultTextLayerFactory = DefaultTextLayerFactory;
 
 /***/ }),
 /* 31 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.SecondaryToolbar = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
 var _pdf_cursor_tools = __webpack_require__(6);
 
@@ -11959,14 +12907,13 @@ exports.SecondaryToolbar = SecondaryToolbar;
 
 /***/ }),
 /* 32 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.PDFSinglePageViewer = void 0;
 
 var _base_viewer = __webpack_require__(27);
@@ -11986,6 +12933,10 @@ class PDFSinglePageViewer extends _base_viewer.BaseViewer {
     return (0, _pdfjsLib.shadow)(this, "_viewerElement", this._shadowViewer);
   }
 
+  get _pageWidthScaleFactor() {
+    return 1;
+  }
+
   _resetView() {
     super._resetView();
 
@@ -12075,23 +13026,26 @@ class PDFSinglePageViewer extends _base_viewer.BaseViewer {
 
   _updateSpreadMode() {}
 
+  _getPageAdvance() {
+    return 1;
+  }
+
 }
 
 exports.PDFSinglePageViewer = PDFSinglePageViewer;
 
 /***/ }),
 /* 33 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.Toolbar = void 0;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
 const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading";
 const SCALE_SELECT_CONTAINER_WIDTH = 140;
@@ -12351,14 +13305,13 @@ exports.Toolbar = Toolbar;
 
 /***/ }),
 /* 34 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.ViewHistory = void 0;
 const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;
 
@@ -12447,17 +13400,16 @@ exports.ViewHistory = ViewHistory;
 
 /***/ }),
 /* 35 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.GenericCom = void 0;
 
-var _app = __webpack_require__(1);
+var _app = __webpack_require__(3);
 
 var _preferences = __webpack_require__(36);
 
@@ -12465,6 +13417,8 @@ var _download_manager = __webpack_require__(37);
 
 var _genericl10n = __webpack_require__(38);
 
+var _generic_scripting = __webpack_require__(40);
+
 ;
 const GenericCom = {};
 exports.GenericCom = GenericCom;
@@ -12482,7 +13436,7 @@ class GenericPreferences extends _preferences.BasePreferences {
 
 class GenericExternalServices extends _app.DefaultExternalServices {
   static createDownloadManager(options) {
-    return new _download_manager.DownloadManager(options);
+    return new _download_manager.DownloadManager();
   }
 
   static createPreferences() {
@@ -12495,56 +13449,28 @@ class GenericExternalServices extends _app.DefaultExternalServices {
     return new _genericl10n.GenericL10n(locale);
   }
 
+  static createScripting({
+    sandboxBundleSrc
+  }) {
+    return new _generic_scripting.GenericScripting(sandboxBundleSrc);
+  }
+
 }
 
 _app.PDFViewerApplication.externalServices = GenericExternalServices;
 
 /***/ }),
 /* 36 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.BasePreferences = void 0;
 
-var _app_options = __webpack_require__(3);
-
-let defaultPreferences = null;
-
-function getDefaultPreferences() {
-  if (!defaultPreferences) {
-    defaultPreferences = Promise.resolve({
-      "cursorToolOnLoad": 0,
-      "defaultZoomValue": "",
-      "disablePageLabels": false,
-      "enablePermissions": false,
-      "enablePrintAutoRotate": false,
-      "enableWebGL": false,
-      "externalLinkTarget": 0,
-      "historyUpdateUrl": false,
-      "ignoreDestinationZoom": false,
-      "pdfBugEnabled": false,
-      "renderer": "canvas",
-      "renderInteractiveForms": true,
-      "sidebarViewOnLoad": -1,
-      "scrollModeOnLoad": -1,
-      "spreadModeOnLoad": -1,
-      "textLayerMode": 1,
-      "useOnlyCssZoom": false,
-      "viewOnLoad": 0,
-      "disableAutoFetch": false,
-      "disableFontFace": false,
-      "disableRange": false,
-      "disableStream": false
-    });
-  }
-
-  return defaultPreferences;
-}
+var _app_options = __webpack_require__(1);
 
 class BasePreferences {
   constructor() {
@@ -12552,17 +13478,39 @@ class BasePreferences {
       throw new Error("Cannot initialize BasePreferences.");
     }
 
-    this.prefs = null;
-    this._initializedPromise = getDefaultPreferences().then(defaults => {
-      Object.defineProperty(this, "defaults", {
-        value: Object.freeze(defaults),
-        writable: false,
-        enumerable: true,
-        configurable: false
-      });
-      this.prefs = Object.assign(Object.create(null), defaults);
-      return this._readFromStorage(defaults);
-    }).then(prefs => {
+    Object.defineProperty(this, "defaults", {
+      value: Object.freeze({
+        "cursorToolOnLoad": 0,
+        "defaultZoomValue": "",
+        "disablePageLabels": false,
+        "enablePermissions": false,
+        "enablePrintAutoRotate": false,
+        "enableScripting": false,
+        "enableWebGL": false,
+        "externalLinkTarget": 0,
+        "historyUpdateUrl": false,
+        "ignoreDestinationZoom": false,
+        "pdfBugEnabled": false,
+        "renderer": "canvas",
+        "renderInteractiveForms": true,
+        "sidebarViewOnLoad": -1,
+        "scrollModeOnLoad": -1,
+        "spreadModeOnLoad": -1,
+        "textLayerMode": 1,
+        "useOnlyCssZoom": false,
+        "viewerCssTheme": 0,
+        "viewOnLoad": 0,
+        "disableAutoFetch": false,
+        "disableFontFace": false,
+        "disableRange": false,
+        "disableStream": false
+      }),
+      writable: false,
+      enumerable: true,
+      configurable: false
+    });
+    this.prefs = Object.assign(Object.create(null), this.defaults);
+    this._initializedPromise = this._readFromStorage(this.defaults).then(prefs => {
       if (!prefs) {
         return;
       }
@@ -12651,19 +13599,18 @@ exports.BasePreferences = BasePreferences;
 
 /***/ }),
 /* 37 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.DownloadManager = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
-var _viewer_compatibility = __webpack_require__(4);
+var _viewer_compatibility = __webpack_require__(2);
 
 ;
 
@@ -12696,26 +13643,11 @@ class DownloadManager {
   }
 
   downloadData(data, filename, contentType) {
-    if (navigator.msSaveBlob) {
-      navigator.msSaveBlob(new Blob([data], {
-        type: contentType
-      }), filename);
-      return;
-    }
-
     const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, 
_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL);
     download(blobUrl, filename);
   }
 
   download(blob, url, filename, sourceEventType = "download") {
-    if (navigator.msSaveBlob) {
-      if (!navigator.msSaveBlob(blob, filename)) {
-        this.downloadUrl(url, filename);
-      }
-
-      return;
-    }
-
     if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
       this.downloadUrl(url, filename);
       return;
@@ -12731,14 +13663,13 @@ exports.DownloadManager = DownloadManager;
 
 /***/ }),
 /* 38 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
 exports.GenericL10n = void 0;
 
 __webpack_require__(39);
@@ -12781,9 +13712,8 @@ exports.GenericL10n = GenericL10n;
 
 /***/ }),
 /* 39 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ (() => {
 
-"use strict";
 
 
 document.webL10n = function (window, document, undefined) {
@@ -13604,21 +14534,59 @@ document.webL10n = function (window, document, undefined) {
 
 /***/ }),
 /* 40 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
-"use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
   value: true
-});
+}));
+exports.GenericScripting = void 0;
+
+var _pdfjsLib = __webpack_require__(5);
+
+class GenericScripting {
+  constructor(sandboxBundleSrc) {
+    this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => {
+      return window.pdfjsSandbox.QuickJSSandbox();
+    });
+  }
+
+  async createSandbox(data) {
+    const sandbox = await this._ready;
+    sandbox.create(data);
+  }
+
+  async dispatchEventInSandbox(event) {
+    const sandbox = await this._ready;
+    sandbox.dispatchEvent(event);
+  }
+
+  async destroySandbox() {
+    const sandbox = await this._ready;
+    sandbox.nukeSandbox();
+  }
+
+}
+
+exports.GenericScripting = GenericScripting;
+
+/***/ }),
+/* 41 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
 exports.PDFPrintService = PDFPrintService;
 
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
 
-var _app = __webpack_require__(1);
+var _app = __webpack_require__(3);
 
-var _viewer_compatibility = __webpack_require__(4);
+var _viewer_compatibility = __webpack_require__(2);
 
 let activeService = null;
 let overlayManager = null;
@@ -13904,5 +14872,36 @@ _app.PDFPrintServiceFactory.instance = {
 };
 
 /***/ })
-/******/ ]);
+/******/       ]);
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/       
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       // no module.id needed
+/******/                       // no module.loaded needed
+/******/                       exports: {}
+/******/               };
+/******/       
+/******/               // Execute the module function
+/******/               __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/       
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/       
+/************************************************************************/
+/******/       // startup
+/******/       // Load entry module
+/******/       __webpack_require__(0);
+/******/       // This entry module used 'exports' so it can't be inlined
+/******/ })()
+;
 //# sourceMappingURL=viewer.js.map


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]