summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Catanzaro <mcatanzaro@gnome.org>2021-04-05 15:23:42 -0500
committerMichael Catanzaro <mcatanzaro@gnome.org>2021-04-05 16:26:27 -0500
commita654a92578726f6512acb4149bbd3a92ee89697a (patch)
tree30b988ba25462c4ac84b3f026c868c48786210b5
parenteb1aa52ff40fe274df2ae87a888de09d97c3f382 (diff)
downloadepiphany-mcatanzaro/pdfjs-2.7.tar.gz
Update to PDF.js v2.7.570mcatanzaro/pdfjs-2.7
This does not actually work because all icons are blocked by CORS.
-rw-r--r--third-party/pdfjs/README.epiphany.md10
-rw-r--r--third-party/pdfjs/build/pdf.js3129
-rw-r--r--third-party/pdfjs/build/pdf.sandbox.js312
-rw-r--r--third-party/pdfjs/build/pdf.worker.js22549
-rw-r--r--third-party/pdfjs/epiphany-pdfjs-changes.patch53
-rw-r--r--third-party/pdfjs/pdfjs.gresource.xml566
-rw-r--r--third-party/pdfjs/web/debugger.js3
-rw-r--r--third-party/pdfjs/web/images/findbarButton-next-dark.svg6
-rw-r--r--third-party/pdfjs/web/images/findbarButton-previous-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg16
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg1
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-download-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg1
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg8
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg13
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-print-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-search-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg1
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg5
-rw-r--r--third-party/pdfjs/web/images/treeitem-collapsed-dark.svg2
-rw-r--r--third-party/pdfjs/web/images/treeitem-expanded-dark.svg2
-rw-r--r--third-party/pdfjs/web/locale/an/viewer.properties70
-rw-r--r--third-party/pdfjs/web/locale/ar/viewer.properties18
-rw-r--r--third-party/pdfjs/web/locale/az/viewer.properties8
-rw-r--r--third-party/pdfjs/web/locale/be/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/br/viewer.properties42
-rw-r--r--third-party/pdfjs/web/locale/ca/viewer.properties2
-rw-r--r--third-party/pdfjs/web/locale/cak/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/ckb/viewer.properties130
-rw-r--r--third-party/pdfjs/web/locale/cs/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/cy/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/da/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/de/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/dsb/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/el/viewer.properties12
-rw-r--r--third-party/pdfjs/web/locale/en-CA/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/en-GB/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/en-US/viewer.properties2
-rw-r--r--third-party/pdfjs/web/locale/eo/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/es-AR/viewer.properties5
-rw-r--r--third-party/pdfjs/web/locale/es-CL/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/es-ES/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/es-MX/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/eu/viewer.properties2
-rw-r--r--third-party/pdfjs/web/locale/fi/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/fr/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/fy-NL/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/gd/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/gl/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/gn/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/he/viewer.properties12
-rw-r--r--third-party/pdfjs/web/locale/hr/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/hsb/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/hu/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/hye/viewer.properties11
-rw-r--r--third-party/pdfjs/web/locale/ia/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/id/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/it/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/ja/viewer.properties5
-rw-r--r--third-party/pdfjs/web/locale/ka/viewer.properties18
-rw-r--r--third-party/pdfjs/web/locale/kab/viewer.properties8
-rw-r--r--third-party/pdfjs/web/locale/kk/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/km/viewer.properties33
-rw-r--r--third-party/pdfjs/web/locale/ko/viewer.properties26
-rw-r--r--third-party/pdfjs/web/locale/lt/viewer.properties16
-rw-r--r--third-party/pdfjs/web/locale/nb-NO/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/nl/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/nn-NO/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/oc/viewer.properties10
-rw-r--r--third-party/pdfjs/web/locale/pa-IN/viewer.properties8
-rw-r--r--third-party/pdfjs/web/locale/pl/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/pt-BR/viewer.properties20
-rw-r--r--third-party/pdfjs/web/locale/pt-PT/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/rm/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/ru/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/sk/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/sl/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/sq/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/sr/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/sv-SE/viewer.properties7
-rw-r--r--third-party/pdfjs/web/locale/szl/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/te/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/th/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/tl/viewer.properties142
-rw-r--r--third-party/pdfjs/web/locale/tr/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/uk/viewer.properties8
-rw-r--r--third-party/pdfjs/web/locale/vi/viewer.properties4
-rw-r--r--third-party/pdfjs/web/locale/zh-CN/viewer.properties6
-rw-r--r--third-party/pdfjs/web/locale/zh-TW/viewer.properties8
-rw-r--r--third-party/pdfjs/web/viewer.css1173
-rw-r--r--third-party/pdfjs/web/viewer.html42
-rw-r--r--third-party/pdfjs/web/viewer.js4183
113 files changed, 21592 insertions, 11391 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 {
});
}
+ _getSequence(entry) {
+ const name = entry.nodeName;
+
+ if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") {
+ return null;
+ }
+
+ return entry.childNodes.filter(node => node.nodeName === "rdf:li");
+ }
+
+ _getCreators(entry) {
+ if (entry.nodeName !== "dc:creator") {
+ return false;
+ }
+
+ 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.toLowerCase() !== "rdf:rdf") {
+ if (rdf.nodeName !== "rdf:rdf") {
rdf = rdf.firstChild;
- while (rdf && rdf.nodeName.toLowerCase() !== "rdf:rdf") {
+ while (rdf && rdf.nodeName !== "rdf:rdf") {
rdf = rdf.nextSibling;
}
}
- const nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
-
- if (!rdf || nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
+ if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
return;
}
- const children = rdf.childNodes;
-
- for (let i = 0, ii = children.length; i < ii; i++) {
- const desc = children[i];
-
- 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 = \'f2c7338b0\';\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 globalEval,\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 Proxy(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 globalThis.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.getOwnPropertyDescriptor(_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.GlobalConstants = 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: "SplitHorizontalIn",\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.fileSelect = 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 valueAsString(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 return 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 === colorArray2[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 return "#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._emailRegex = 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.printf(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 !== "number") {\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 return;\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._dateFormats[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.GlobalConstants.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_Calculate(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](values);\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 case 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 eMailValidate(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._runtimeHighlight = 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 _cleanTimeout({\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 return 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 return 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 loadPolicyFile() {}\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 this.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.wrapped.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\nexports.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 = Thermometer;\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 static 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.filename || "";\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)(data.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(dirty) {\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 noautocomplete() {\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 pageNum() {\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 return 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 command: "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 getPrintParams() {\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 === "number") {\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_module, 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._expandos[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 & PLUS) {\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.findIndex(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 = parseInt(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((action, 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 module.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,void 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 Uint32Array(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/fn5/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/fnwB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BCACNgIMIANBAyABIAJBABC/BSADIAMoAhApA3ggACgCDCAAKAIIIAAoAkAiAAR/IAAoAmhBAEdBAXQFQQALEL0CIARBEGokAAsmAQF/IwBBEGsiAyQAIAMgAjYCDCAAQQQgASACEPsBIANBEGokAAs3AQF+QoCAgIDAfiAAvSIBQoCAgIDA/v+DgH98IAFC////////////AINCgICAgICAgPj/AFYbCw8AIAAoAkBBgAJqIAEQMAsrACABEPABRQRAIAAoAhAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABCwsAIAAoAhAgARAgCykAIAAgASACIANCgICAgDBCgICAgDAgBEGAzgByEHUhAiAAIAMQCyACCw8AIAAgACgCACABEBgQOQtKACAAEOgCRQRAQX8PCyACQX9MBEAgABA1IQILIAAgAUH/AXEQDSAAIAIQOSAAKAJAKAKkAiACQRRsaiIAIAAoAgBBAWo2AgAgAgsoAQF/IwBBEGsiAiQAIAIgATYCDCAAIAJBDGpBBBCUARogAkEQaiQACzEAIAFBAE4EQCAAQbQBEA0gACABEDkgACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLGAEBfiABKQMAIQMgASACNwMAIAAgAxALCxEAIABBEGogASAAKAIEEQMACwsAIABC/////29WCxgAIAFCIIinQX5PBEAgACABpyACEQMACwsXACAAIAEgAkKAgICAMCADIARBAhDfAQuCBAEDfyACQYAETwRAIAAgASACEAQaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAtIAQN/IANBACADQQBKGyEDA0AgAyAERkUEQCAAIAEgACACIARBBHRqIgUoAgAQmQUiBiAFEKcIIAAgBhASIARBAWohBAwBCwsLMgEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBf2o2AgAgAkEBSg0AIAAgARD3BAsLCwAgAEGUF0EAEBULBwAgAEEwagufAQEBfgJAAkACQAJAAkACQAJAIAEQU0EIag4QBQMAAAAAAAECBAAAAAABAgALIABBgM4AQQAQFUKAgICA4AAPCyABEA4PCyAAQQQQoAEhAgwDCyAAIABBBRCgASICQTAgAacpAgRC/////weDQQAQGhoMAgsgAEEGEKABIQIMAQsgAEEHEKABIQILIAIQDEUEQCAAIAIgARAOEOgBCyACCxIAIABCgICAgHCDQoCAgIAgUQuzBAELfyMAQRBrIggkACAAKAIAIQUgCCACNgIMQX8hCQJAA0ACQCAIIAIiA0EEaiICNgIMIAMoAgAiB0F/Rg0AIAAoAgQhCgNAIAEiBCAKTg0DIAQgBCAFaiILLQAAIgZBAnQiDEGQMWotAABqIgEgCkoNAyAGQcABRgRAIAsoAAEhCQwBCwsgBiAHRwRAIAZFIAdBgAJJciAHQf8BcSAGRiAHQQh2Qf8BcSAGRnIgB0EQdkH/AXEgBkZyRUEAIAdBGHYgBkcbcg0DIAAgBjYCEAsgBEEBaiEEAkACQAJAAkACQAJAAkACQCAMQZMxai0AAEF7ag4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LCwAgACABQQAQkQQLvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARALIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCyACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEoiBUQAAAAAAAAAAGIgBb1C////////////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/AGoiBhB7IAVBIGogBCALIAYQeyAFQRBqIAEgAiAHEM8CIAUgBCALIAcQzwIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhASAFKQMoIAUpAxiEIQIgBSkDACEEIAUpAwgMAQsgC0L///////8/gyAGrUIwhoQLIAqEIQogAVAgAkJ/VSACQoCAgICAgICAgH9RG0UEQCAKIARCAXwiASAEVK18IQoMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAogBCAEQgGDfCIBIARUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/EMADCyEAIAAgASACQoCAgIAwIAMgBEECEN8BIQIgACABEAsgAgsZACABBEAgACABQXBqrUKAgICAkH+EEAsLC+sBAgJ/AX5CgICAgOAAIQMgACgCFAR+QoCAgIDgAAUgACgCBCEBIAAoAggiAkUEQCAAKAIAIAEQGSAAQQA2AgQgACgCAEEvEDIPCyACIAAoAgxIBEAgACgCACgCECABIAIgACgCECIBdCABa0ERahDjASIBRQRAIAAoAgQhAQsgACABNgIECyABIAAoAhAiAgR/IAIFIAEgACgCCGpBADoAECAAKAIQC0EfdK0gASkCBEL/////d4OEIgM3AgQgASADQoCAgIB4gyAANQIIQv////8Hg4Q3AgQgAEEANgIEIAGtQoCAgICQf4QLCw8AIAAoAkBBgAJqIAEQHQtyAQF/AkAgAUIgiKciAkF4RwRAIAINASABpyICQQBIDQEgAhCRAQ8LIAAgACgCECABpxDMAhAYDwtBACECIAAgARCHBCIBEAwEf0EABSABQoCAgIBwg0KAgICAgH9RBEAgACABEJcCDwsgACABpxCVBAsLSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALC3IBAX8CfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABEMsCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQC0EACwsQACAAIAAoAigpAwhBARBQCxQBAX4gACABECwhAiAAIAEQCyACCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDQAhogA0EQaiQACygAIAAgAkEwIAJBABATIgIQDARAIAFCADcDAEF/DwsgACABIAIQrQELKAEBfwJAIABCgICAgHBUDQAgASAApyIBLwEGRw0AIAEoAiAhAgsgAgsNACAAIAEgAkEAEJ8DC5ABAQN/IAAhAQJAAkAgAEEDcUUNACAALQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANB//37d2pxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLJgEBfyMAQRBrIgMkACADIAI2AgwgAEEGIAEgAhD7ASADQRBqJAALFQAgACgCACAAKAIEEBkgAEEANgIECwoAIABBUGpBCkkLIwECfyAAKAIAIgEgACgCBCICNgIEIAIgATYCACAAQgA3AgALDAAgACABIAIQDhBZCxEAIAAgASACIANBgIABEJYCCxEAIABCgICAgMCBgPz/AHy/CwwAIAAgASAAIAFKGwvzAgICfwF+AkAgAkUNACAAIAJqIgNBf2ogAToAACAAIAE6AAAgAkEDSQ0AIANBfmogAToAACAAIAE6AAEgA0F9aiABOgAAIAAgAToAAiACQQdJDQAgA0F8aiABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrSIFQiCGIAWEIQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALDgAgACABKAIAIAEQgwULEQAgACAAKAIkEJ4CQQIQxAULJgEBfwJAIAAoAhBBg39HDQAgACgCICABRw0AIAAoAiRFIQILIAILQgECfwJAIAAoAhAgARDXBCIDEPIIIgQEQCAEEJ4CIQMMAQsgACADQQIQ1gQiAw0AQoCAgIDgAA8LIAAgAyACEMQFCwoAIAAgAUEBEFALHQAgACABKQMQEAsgACABKQMYEAsgACABKQMIEAsLFwEBf0EHIABCIIinIgEgAUELakERSxsLKgEBfyMAQRBrIgQkACAEIAM2AgwgACABIAIgAxDQAiEAIARBEGokACAACxcAIAAoAgwgACgCCEEAIAAoAhARAAAaC40BAQJ/IAEoAnwiBEGAgAROBEAgAEHG+gBBABBEQX8PC0F/IQMgACABQfQAakEQIAFB+ABqIARBAWoQfAR/QX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAYNgIAIAMgAygCDEGA////B3I2AgwgASgCfEF/agsLQgEBfyADIAJLBH8gASgCBEF/TARAIAAgASACQQF0akEQaiADIAJrEN8HDwsgACABIAJqQRBqIAMgAmsQmgIFQQALCxEAIAAgARAOIAIQDkEBENsBCz4BAX8gAkIgiKciA0ECTQRAIAEgAqe3OQMAQQAPCyADQQtqQRJPBEAgASACEEo5AwBBAA8LIAAgASACENcIC7AEAgN/AX4CQAJAAkACQAJAA0AgAigCECIFIAUoAhggA3FBf3NBAnRqKAIAIQQgBRAoIQYDQCAERQ0EIAMgBiAEQX9qQQN0IgRqIgUoAgRHBEAgBSgCAEH///8fcSEEDAELCyACKAIUIARqIQQgBSgCACEGIAFFDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFCgICAgDA3AwggASAGQRp2QQdxIgY2AgACQAJAAkACQCAFKAIAQR52QQFrDgMAAQIDCyABIAZBEHI2AgAgBCgCACIABEAgASAArUKAgICAcIQQDjcDEAtBASEFIAQoAgQiAEUNByABIACtQoCAgIBwhBAONwMYQQEPCyAEKAIAKAIQKQMAIgcQgwENBCABIAcQDjcDCEEBDwsgACACIAMgBCAFEMcCRQ0BDAYLCyABIAQpAwAQDjcDCEEBDwtBASEFIAZBgICAgHxxQYCAgIB4Rw0CIAQoAgAoAhApAwAQgwFFDQILIAAgAxDeAQwCC0EAIQUgAi0ABSIEQQRxRQ0AIARBCHEEQCADEF1FDQEgAxB5IgMgAigCKCIESSEFIAFFIAMgBE9yDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFBBzYCACABIAAgAq1CgICAgHCEIAMQeDcDCEEBDwsgACgCECgCRCACLwEGQRhsaigCFCIERQ0AIAQoAgAiBEUNACAAIAEgAq1CgICAgHCEIAMgBBEYACEFCyAFDwtBfwuvAQIDfwF+AkACQCAAKQNwIgRQRQRAIAApA3ggBFkNAQsgABCQCSIDQX9KDQELIABBADYCaEF/DwsgAAJ/IAAoAggiASAAKQNwIgRQDQAaIAEgBCAAKQN4Qn+FfCIEIAEgACgCBCICa6xZDQAaIAIgBKdqCzYCaCAAKAIEIQIgAQRAIAAgACkDeCABIAJrQQFqrHw3A3gLIAJBf2oiAC0AACADRwRAIAAgAzoAAAsgAwsJACAAIAE2AAALBwAgAEEfdgsJACAAQQEQuQELLQAgAUKAgICAYINCgICAgCBRBEAgAEGBzABBABAVQoCAgIDgAA8LIAAgARAsC0wBAX8CQAJAIAAgASACEA4QsgUiBQ0AIAEoAgAiAEEASA0BIAAgA0wNACABIAM2AgALIAUPCyABQQAgACAEaiIAIABBAEgbNgIAQQALGAAgAC0AAEEgcUUEQCABIAIgABCYBBoLCwwAIAAgAUH/AXEQDwvdAQEGfyAAQQFqIQYgAC0AACIDQRh0QRh1IgVBAE4EQCACIAY2AgAgAw8LQX8hAwJAIAVBQGsiBEH/AXFBPUsNACAEQRh0QRh1QQJ0QZTdAWooAgAiBCABTg0AIARBf2ohByAAIARqQQFqIQggBSAEQevcAWotAABxIQFBACEAA0AgACAERwRAIAYsAAAiBUF/SiAFQf8BcUG/AUtyDQIgBUE/cSABQQZ0ciEBIABBAWohACAGQQFqIQYMAQsLIAEgB0ECdEGA3QFqKAIASQ0AIAIgCDYCACABIQMLIAMLCwAgACABQQAQxgULrgIAAkACQAJAAkAgAkEDTARAAkACQAJAAkACQAJAAkACQAJAIAFBqH9qDgkAAQIDBAUGBwgKCyAAIAJBQ2pB/wFxEA8PCyAAIAJBR2pB/wFxEA8PCyAAIAJBS2pB/wFxEA8PCyAAIAJBT2pB/wFxEA8PCyAAIAJBU2pB/wFxEA8PCyAAIAJBV2pB/wFxEA8PCyAAIAJBW2pB/wFxEA8PCyAAIAJBX2pB/wFxEA8PCyAAIAJBY2pB/wFxEA8PCyACQf8BSg0BAkACQAJAIAFBqH9qDgMAAQIECyAAQcABEA8MBQsgAEHBARAPDAQLIABBwgEQDwwDCyABQSJGDQELIAAgAUH/AXEQDyAAIAJB//8DcRAwDwsgACACQWxqQf8BcRAPDwsgACACQf8BcRAPCxwBAX8gACABEDsEf0EABSAAQY/EAEEAEBVBfwsLGQEBfyABIAIQQSIDRQRAIAAgAhCRAwsgAwszAQF/IAEEQANAIAIgA0ZFBEAgACABIANBA3RqKAIEEBIgA0EBaiEDDAELCyAAIAEQGQsLJgEBfyMAQRBrIgIkACACQQA2AgwgAEEBIAFBABD7ASACQRBqJAALGQAgACgCECABEJsCIgFFBEAgABDHAQsgAQsPACAAKAJAQYACaiABEA8LbwIBfwF+IAAhAwJAAkAgARARDQAgACABQTsgAUEAEBMiBBAMBEAgBA8LIAQQIQ0BIAAgBBALIAAgARCDAyIDDQBCgICAgOAADwsgAygCKCACQQN0aikDABAOIQQLIAAgBCACEFAhASAAIAQQCyABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFgsgA0GHgAEQwwILEAAgACAANgIEIAAgADYCAAtjAAJAAkAgAUEASA0AIAAoAqwCIAFMDQAgACgCpAIgAUEUbGoiACAAKAIAIAJqIgA2AgAgAEF/TA0BIAAPC0GdigFBoQ1B6qcBQcKKARAAAAtBz4oBQaENQe2nAUHCigEQAAALDAAgAEG80AFBABAVC0UBAX8gAkL/////B1gEQCAAIAEgAhCdAQ8LIAAgAhCSAyIDRQRAQoCAgIDgAA8LIAAgASADIAFBABATIQEgACADEBIgAQsNACAAIAEgARBDEPwBC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxBMGiABRQRAA0AgACAFQYACEGEgAkGAfmoiAkH/AUsNAAsLIAAgBSACEGELIAVBgAJqJAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkF/aiICDQEMAgsLIAQgBWshAwsgAwv9DAEIfyMAQRBrIgokAAJAAkAgAUL/////b1gEQCAAECcMAQsgBkGAwABxIQwgBkGAMHEhDiABpyEJAkACQAJAAkACQANAIAkoAhAiByAHKAIYIAJxQX9zQQJ0aigCACELIAcQKCEIAkADQCALRQ0BIAIgCCALQX9qQQN0IgtqIgcoAgRHBEAgBygCAEH///8fcSELDAELCyAJKAIUIAtqIQggCiAHNgIMAn8gDEUgBygCACILQYCAgIACcUVyRQRAIAAgCkEIaiADEA5BABDEAg0JAn4gCigCCCIHQQBOBEAgB60MAQsgB7gQFgshAyAJKAIQIgggCCgCGCACcUF/c0ECdGooAgAhByAIECghCAJAA0AgBwRAIAggB0F/akEDdCILaiIHKAIEIAJGDQIgBygCAEH///8fcSEHDAELC0G7F0GhDUGqxgBBxxcQAAALIAkoAhQgC2ohCCAKIAc2AgwgBygCACELCyALQRp2Ig0LIAYQlgNFDQYgDUEwcSINQTBGBEAgACAJIAIgCCAHEMcCRQ0CDAgLIAZBgPQAcUUNBSAOBEAgBKdBACAAIAQQOxshAiAFp0EAIAAgBRA7GyEMAkAgC0GAgICAfHFBgICAgARHBEBBfyEHIAAgCSAKQQxqEOABDQsCQCAKKAIMKAIAQYCAgIB8cUGAgICAeEYEQCAAKAIQIAgoAgAQ9wEMAQsgACAIKQMAEAsLIAooAgwiByAHKAIAQf///78BcUGAgICABHI2AgAgCEIANwMADAELIAtBgICAIHENACAGQYAQcQRAIAIgCCgCAEcNCQsgBkGAIHFFDQAgDCAIKAIERw0ICyAGQYAQcQRAIAgoAgAiBwRAIAAgB61CgICAgHCEEAsLIAIEQCAEEA4aCyAIIAI2AgALIAZBgCBxRQ0GIAgoAgQiAgRAIAAgAq1CgICAgHCEEAsLIAwEQCAFEA4aCyAIIAw2AgQMBgsgDUEgRg0EIA1BEEYEQEF/IQcgACAJIApBDGoQ4AENCSAIKAIAIgIEQCAAIAKtQoCAgIBwhBALCyAIKAIEIgIEQCAAIAKtQoCAgIBwhBALCyAKKAIMIgIgAigCAEH///+/A3E2AgAgCEKAgICAMDcDACAKKAIMKAIAIQsMBQsgDEUgC0GAgIDgAHFyDQRBASEHIAAgAyAIKQMAEFhFDQYMCAsgCkEANgIMIAktAAVBCHFFDQIgCS8BBiIHQQJHDQEgAhBdRQ0CIAIQeSIIIAkoAihPDQIgDkVBACAGQQcQggRBB0YbRQRAIAAgCRCVA0UNAQwHCwtBASEHIAxFDQYgACAJKAIkIAhBA3RqIAMQDhAfDAYLIAdBa2pB//8DcUEISw0AAkACQCACEF1FBEAgACACELoFIgEQEQ0DQX8hByABEAwNCCAAIAEQtwUiAkF/TARAIAAgARALDAkLIAJFBEAgACABEAsgACAGQfYXEHYhBwwJCyABEOAIIQIgACABEAsgAkUNASAAIAZBlxgQdiEHDAgLIAIQeSICIAkQgQRJDQELIAAgBkG1GBB2IQcMBgsgDkVBACAGQQcQggRBB0YbRQRAIAAgBkHXGBB2IQcMBgtBASEHIAxFDQUgACABIAKtIAMQDiAGEN0BIQcMBQsgACAJIAIgAyAEIAUgBhCFBCEHDAQLIAtBgICAgHxxQYCAgIB4RgRAIAwEQCAJLwEGQQtGBEAgACADIAgoAgAoAhApAwAQWEUNBAsgACAIKAIAKAIQIAMQDhAfCyAGQYIEcUGABEcNAUF/IQcgACAJIApBDGoQ4AENBCAIKAIAKAIQKQMAEA4hASAAKAIQIAgoAgAQ9wEgCCABNwMAIAooAgwiAiACKAIAQf///78DcTYCAAwBCyALQYCAgIACcQRAQQEhAiAMBEAgACAJIAMQDiAGELkFIQILIAZBggRxQYAERgRAIAogCSgCEBAoIgY2AgxBfyEHIAAgCSAKQQxqIAYoAgBBGnZBPXEQlAMNBQsgAiEHDAQLIAwEQCAAIAgpAwAQCyAIIAMQDjcDAAsgBkGABHFFDQBBfyEHIAAgCSAKQQxqIAooAgwoAgBBGnZBPXEgBkECcXIQlAMNAwtBf0EBIAAgCSAKQQxqIAZBCHZBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCUAxshBwwCCyAAIAZB2RcQdiEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD4AUUNAQsgA0EANgIMIABBBCACQQAQ+wFBfyEECyADQRBqJAAgBAvMAQECfwJAAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQRQ0AIAAgA61CgICAgHCEEA4iASACIAQoAhAREgAhAiAAIAEQCyACDwsgA61CgICAgHCEEA4hASAAQQAgAyACEFohBCAAIAEQCyAEDQIgAy8BBkFrakH//wNxQQhNBEAgACACEJkDIgQNBAsgAygCECgCLCIDDQALC0EAIQQLIAQPCyAEQR91CxoAIAAgASACQQBOBH4gAq0FIAK4EBYLEJ0BCwsAIABB/////wdxC9MJAgR/BH4jAEHwAGsiBSQAIARC////////////AIMhCgJAAkAgAUJ/fCILQn9RIAJC////////////AIMiCSALIAFUrXxCf3wiC0L///////+///8AViALQv///////7///wBRG0UEQCADQn98IgtCf1IgCiALIANUrXxCf3wiC0L///////+///8AVCALQv///////7///wBRGw0BCyABUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAJQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBhshBEIAIAEgBhshAwwCCyADIApCgICAgICAwP//AIWEUA0BIAEgCYRQBEAgAyAKhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAKhFBFDQAgASEDIAIhBAwBCyADIAEgAyABViAKIAlWIAkgClEbIgcbIQogBCACIAcbIgtC////////P4MhCSACIAQgBxsiAkIwiKdB//8BcSEIIAtCMIinQf//AXEiBkUEQCAFQeAAaiAKIAkgCiAJIAlQIgYbeSAGQQZ0rXynIgZBcWoQeyAFKQNoIQkgBSkDYCEKQRAgBmshBgsgASADIAcbIQMgAkL///////8/gyEEIAhFBEAgBUHQAGogAyAEIAMgBCAEUCIHG3kgB0EGdK18pyIHQXFqEHtBECAHayEIIAUpA1ghBCAFKQNQ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AxAAAAtBzuMDQezjA0GACkGG5AMQAAALQc7jA0Hs4wNB+QlBhuQDEAAAC0HO4wNB7OMDQfIJQYbkAxAAAAsgBEHgAGokACABC2kBAn8CfyAAKAIAIgNBAmoiBCAAKAIESgRAQX8gACAEEKoDDQEaIAAoAgAhAwsgACADQQFqNgIAIAAoAggiBCADQQJ0aiABNgIAIAAgACgCACIAQQFqNgIAIAQgAEECdGogAjYCAEEACwulAgEGfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASICIAEoAsQBIgRIBEAgASgCzAEhAyACDAELIAJBAWogBEEDbEECbRBLIQQgACgCACEDAkAgASgCzAEiBiABQdABakYEQCADQQAgBEEDdCAFQQxqELQBIgNFDQMgAyABKALMASABKALIAUEDdBAkGgwBCyADIAYgBEEDdCAFQQxqELQBIgNFDQILIAUoAgwhBiABIAM2AswBIAEgBkEDdiAEajYCxAEgASgCyAELQQFqNgLIASADIAJBA3RqIgQgASgCvAE2AgAgBCABKALAATYCBCAAQbIBEA0gACACQf//A3EQFyABIAI2ArwBDAELQX8hAgsgBUEQaiQAIAILEwAgAEKAgICAcINCgICAgMAAUQtJAQJ/IAJBKRBBIgQtABEEQCAAEMECQQAPCyAAIAQpAwgiAiADIAJBABATIgIQDAR/QQAFIAFCgICAgDAgAiACECobNwMAIAQLCywBAX8jAEEQayICJAAgAiAAKAI4NgIMIAJBDGogARCuCCEAIAJBEGokACAAC58BAQJ/AkACQCACQv////8HWARAIAAgASACpxCRARB3IgRBAUgNAUF/IAQgACABIAIQnQEiAhAMGyEEDAILIAAgAhCSAyIFRQRAQX8hBAwBCwJAIAAgASAFEHciBEEBSARAQoCAgIAwIQIMAQtBfyAEIAAgASAFIAFBABATIgIQDBshBAsgACAFEBIMAQtCgICAgDAhAgsgAyACNwMAIAQLFgAgAEKAgICAcFoEQCAApyABNgIgCwsNACAAIAEgARBDEJoCC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECwiARAMBEAgABD9AkF/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAo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AigCgAIgA2pBAWogACgCACABEBgQXCACQX82ApgCCw8LQdaFAUGhDUH1rwFB3owBEAAACzIAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFgsgAyAEQQdyEMMCCxAAIAAoAiAoAgwoAiAtAAQLqQEBAn8jAEEQayIEJAACQAJAIAAgASACQQBBACAEQQxqEPgEIgEQDA0AIAQoAgwiBUECRwRAIAMgBTYCACABIQIMAgsgACABQekAIAFBABATIgIQDA0AIAMgACACEC0iAzYCAEKAgICAMCECIANFBEAgACABQcAAIAFBABATIQILIAAgARALDAELIAAgARALIANBADYCAEKAgICA4AAhAgsgBEEQaiQAIAILIQAgACABIAJCAEL/////////D0IAEH0hASAAIAIQCyABC7YHAgd/AX4jAEEQayICJAAgACAAQRBqIgQQjgIgACAAKAI4IgE2AjQgAiABNgIMIAAgACgCFDYCBAJ/A0ACQCAAIAE2AhggACAAKAIIIgY2AhRBIiEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLAAAIgdB/wFxIgUOewAJCQkJCQkJCQYEBQUDCQkJCQkJCQkJCQkJCQkJCQkJBgkCCQ4JCQEJCQkLCQoJBwgMDAwMDAwMDAwJCQkJCQkJDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4JCQkJDgkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkLIAEgACgCPEkNDCAEQap/NgIADA4LQSchAyAAKAJMRQ0LCyAAIANBASABQQFqIAQgAkEMahCGAw0ODAwLIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCDCAAIAZBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgwMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIMA0ACQAJAAkACQCABLQAAIgNBdmoOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNAyAAQcDUAEEAEBQMDwsgAS0AAUEvRw0CIAIgAUECaiIBNgIMDA8LIAAgACgCCEEBajYCCAwBCyADQRh0QRh1QX9KDQAgAUEGIAJBDGoQYyEDIAIoAgwhASADQX9HDQELCyABQQFqIQEMAAsACyABLQABEEZFDQMMBAsgB0F/Sg0DIABB2tQAQQAQFAwHCyABLQABEEZFDQIMAQsgACgCTEUNASABLQABEEZFDQELIAAoAgAgASACQQxqQQBBCiAAKAJMIgEbIAFBAEdBAnQQugIiCBAMDQQgAEGAfzYCECAAIAg3AyAMAgsgBCAFNgIAIAIgAUEBajYCDAwBCyACIAFBAWo2AgwgACACQQxqIAUQpQgiAUUNAiAAQYN/NgIQIABCADcCJCAAIAE2AiALIAAgAigCDDYCOEEADAMLIAFBAmohAQNAIAIgATYCDANAAkACQCABLQAAIgMEQCADQXZqDgQGAQEGAQsgASAAKAI8Tw0FDAELIANBGHRBGHVBf0oNACABQQYgAkEMahBjIgNBfnFBqMAARgRAIAIoAgwhAQwFCyACKAIMIQEgA0F/Rw0BCwsgAUEBaiEBDAALAAsLIARBqH82AgBBfwshASACQRBqJAAgAQsRACAAIAEgASACIANBAhD8AwuqAQICfwJ+An8gAkUEQEKAgICAMCEGQQAMAQsgACgCECIDKQN4IQYgA0KAgICAIDcDeEF/CyEDQX8hBAJAIAAgAUEGIAFBABATIgUQDA0AAkAgBRARDQAgBRAqDQAgACAFIAFBAEEAEDYhAQJ/IAMgAg0AGkF/IAEQDA0AGiADIAEQIQ0AGiAAECdBfwshBCAAIAEQCwwBCyADIQQLIAIEQCAAIAYQkAELIAQLDAAgACABIAAgAUgbCx0AIABCgICAgHBaBH8gAKctAAVBBHZBAXEFQQALC64BAQF/IwBBEGsiAyQAAkACQCACEF0EQCABIAIQeTYCAEEBIQIMAQsgACgCECIAKAIsIAJNDQECfwJAIAAoAjggAkECdGooAgAiACkCBEKAgICAgICAgECDQoCAgICAgICAwABSDQAgA0EMaiAAEMsFRQ0AQQEgAygCDCIAQX9HDQEaC0EAIQBBAAshAiABIAA2AgALIANBEGokACACDwtByi9BoQ1BqxhBwj8QAAALRQAgACgCECABIAIQ4wEiASACRXJFBEAgABDHASABDwsgAwRAIANBACAAKAIQIAEQlgQiACACayICIAIgAEsbNgIACyABC2kBA34gACACQiCIIgMgAUIgiCIEfiACQv////8PgyICIAFC/////w+DIgF+IgVCIIggAiAEfnwiAkIgiHwgASADfiACQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAv5AQICfwN+IwBBEGsiAiQAAn4gAb0iBUL///////////8AgyIEQoCAgICAgIB4fEL/////////7/8AWARAIARCPIYhBiAEQgSIQoCAgICAgICAPHwMAQsgBEKAgICAgICA+P8AWgRAIAVCPIYhBiAFQgSIQoCAgICAgMD//wCEDAELIARQBEBCAAwBCyACIARCACAFp2dBIGogBEIgiKdnIARCgICAgBBUGyIDQTFqEHsgAikDACEGIAIpAwhCgICAgICAwACFQYz4ACADa61CMIaECyEEIAAgBjcDACAAIAQgBUKAgICAgICAgIB/g4Q3AwggAkEQaiQACyoBAX8jAEEQayIDJAAgAyACNgIMIAAgASACQe4CQQAQnQQaIANBEGokAAsNACAAQQAgAUEAEJIEC8cKAQZ/IwBBIGsiAiQAAkACQAJAAkACQAJAAkACfyAAKAIQIgNBg39HBEBBACADQVdHDQEaIAAoAkAiAy0AbEEBcUUEQCAAQeKGAUEAEBQMAwsgAygCZEUEQCAAQf2GAUEAEBQMAwtBfyEDIAAQEA0IAkACQAJAAkAgACgCECIFQVdqDgQCAQECAAsgBUHdAEYgBUFGakECSXIgBUH9AEZyDQELIAAoAjANACAFQSpGBEAgABAQDQtBASEECyAAIAEQuQFFDQEMCgsgAEEGEA0LIAAoAkAtAGwhASAEBEAgABA1IQQgABA1IQMgAEH+AEH9ACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBBAeIABBhQEQDSABQQNHIgdFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQeoAQX8QHCEFIAAgAxAeQYkBIQYgACAHBH9BiQEFIABBwQAQDSAAQcAAEBsgAEGLARANQYoBCxANIABBERANIABB6gBBfxAcIQYgAEEOEA0gAEHrACAEEBwaIAAgBhAeIABBARANIABBAhA5IABBqwEQDSAAQeoAQX8QHCEEIAFBA0ciBkUEQCAAQYsBEA0LIABBhgEQDSAAQQAQayAAQeoAQX8QHCEHIAZFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQekA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QXhqIggpAwAiATcDACAIIAdBcGoiCCkDADcDACAIIAEQDjcDACAHQQhqIQgMwwELIAcgB0F4aiIIKQMAIgE3AwAgB0FwaiILKQMAISUgCyAHQWhqIgspAwA3AwAgCCAlNwMAIAsgARAONwMAIAdBCGohCAzCAQsgByAHQXhqIggpAwAiATcDACAHQXBqIgspAwAhJSALIAdBaGoiCykDADcDACAIICU3AwAgCyAHQWBqIggpAwA3AwAgCCABEA43AwAgB0EIaiEIDMEBCyAHQXBqIggpAwAhASAIIAdBaGoiCCkDADcDACAIIAE3AwAMvwELIAdBaGoiCCkDACEBIAggB0FwaiIIKQMANwMAIAdBeGoiCykDACElIAsgATcDACAIICU3AwAMvgELIAdBYGoiCCkDACEBIAggB0FoaiIIKQMANwMAIAdBcGoiCykDACElIAsgB0F4aiILKQMANwMAIAggJTcDACALIAE3AwAMvQELIAdBWGoiCCkDACEBIAggB0FgaiIIKQMANwMAIAdBaGoiCykDACElIAsgB0FwaiILKQMANwMAIAggJTcDACALIAdBeGoiCCkDADcDACAIIAE3AwAMvAELIAdBeGoiCCkDACEBIAggB0FwaiIIKQMANwMAIAdBaGoiCykDACElIAsgATcDACAIICU3AwAMuwELIAdBcGoiCCkDACEBIAggB0FoaiIIKQMANwMAIAdBYGoiCykDACElIAsgATcDACAIICU3AwAMugELIAdBcGoiCCkDACEBIAggB0FoaiIIKQMANwMAIAdBYGoiCykDACElIAsgB0FYaiILKQMANwMAIAggJTcDACALIAE3AwAMuQELIAdBeGoiCCkDACEBIAggB0FwaiIIKQMANwMAIAggATcDAAy4AQsgB0FgaiIIKQMAIQEgCCAHQXBqIggpAwA3AwAgB0F4aiILKQMAISUgCyAHQWhqIgspAwA3AwAgCCABNwMAIAsgJTcDAAy3AQsgByAGIA4oAjQgCSgAAEEDdGopAwAQDiAQIBIQ/QMiATcDACAHQQhqIQggC0EFaiEJIAEQDEUNtwEMuQELIAxBlH5qIQoMAQsgCS8AACEKIAtBA2ohCQsgEiAJNgIgIAYgByAKQQN0ayIIQXhqKQMAQoCAgIAwQoCAgIAwIAogCEEAEN8BIgEQDA24ASAMQSNGDbsBQX8hCyAKQX8gCkF/ShshDANAIAsgDEcEQCAGIAggC0EDdGopAwAQCyALQQFqIQsMAQsLIAcgCkF/c0EDdGoiByABNwMAIAdBCGohCAy0AQsgCS8AACEIIBIgC0EDaiIJNgIgIAYgByAIQQN0ayIKQXBqKQMAIApBeGopAwAgCCAKQQAQ/AMiARAMDbcBQX4hCyAIQX4gCEF+ShshDANAIAsgDEcEQCAGIAogC0EDdGopAwAQCyALQQFqIQsMAQsLIAdBfiAIa0EDdGoiByABNwMAIAdBCGohCAyzAQsgCS8AACEIIBIgC0EDaiIJNgIgIAYgByAIQQN0ayIKQXhqKQMAIApBcGopAwBCgICAgDAgCCAKQQAQ3wEiARAMDbYBIAxBJUYNuQFBfiELIAhBfiAIQX5KGyEMA0AgCyAMRwRAIAYgCiALQQN0aikDABALIAtBAWohCwwBCwsgB0F+IAhrQQN0aiIHIAE3AwAgB0EIaiEIDLIBCyALQQNqIQogCS8AACEIAkAgBhBOIgEQDEUEQEEAIQkgCEEAIAhBAEsbIQwgByAIQQN0ayEIA0AgCSAMRg0CIAYgASAJEJEBIAggCUEDdGoiDykDAEGHgAEQGiEWIA9CgICAgDA3AwAgCUEBaiEJIBZBf0oNAAsgBiABEAsLIAohCQy2AQsgCCABNwMAIAhBCGohCCAKIQkMsQELIAtBA2ohCiAGIAdBaGoiDCkDAEECIAdBcGoiCCAJLwAAEI8DIgEQDARAIAohCQy1AQsgBiAMKQMAEAsgBiAIKQMAEAsgBiAHQXhqKQMAEAsgDCABNwMAIAohCQywAQtCgICAgBAhJQJAIAdBeGopAwAiARAhDQBCgYCAgBAhJSABEBENACAAQZ7EAEEAEBUMtAELIAcgJTcDACAHQQhqIQgMrwELIAMQEUUNrQEgAEHbxABBABAVDLIBCyAHIQggBiAHQXBqKQMAIAdBeGopAwAQzwhBAE4NrQEMsQELIAYgB0FwaiIIKQMAIAdBeGoiCikDABDOCEEASA2wASAGIAgpAwAQCyAGIAopAwAQCwysAQsgBiAHQXhqIgcpAwAQkAEMrwELIAkoAAAhCCALQQZqIQkCQAJAAkACQAJAAkAgCy0ABSIKDgUAAQIDBAULIAZBgIABIAgQ3AEaDLMBCyAGIAgQrgUMsgELIAYgCBDeAQyxAQsgBkGJxQBBABDIAgywAQsgBkGqxQBBABAVDK8BCyANIAo2AhAgBkHQxQAgDUEQahBEDK4BCyAJLwAAIQggCy8AAyEMIBIgC0EFaiIJNgIgAn4gBiAHIAhBA3RrIgpBeGoiDykDACAGKQO4ARBYBEAgBkKAgICAMCAIQQFPBH4gCikDAAVCgICAgDALQQIgDEF/ahCOAwwBCyAGIA8pAwBCgICAgDBCgICAgDAgCCAKQQAQ3wELIgEQDA2tAUF/IQsgCEF/IAhBf0obIQwDQCALIAxHBEAgBiAKIAtBA3RqKQMAEAsgC0EBaiELDAELCyAHIAhBf3NBA3RqIgcgATcDACAHQQhqIQgMqQELIAtBA2ohCiAJLwAAIRYCQCAGIA1BGGogB0F4aiIIKQMAEPsDIgkEQAJ+IAYgB0FwaiIMKQMAIAYpA7gBEFgEQCAGQoCAgIAwIA0oAhgiDwR+IAkpAwAFQoCAgIAwC0ECIBZBf2oQjgMMAQsgBiAMKQMAQoCAgIAwIA0oAhgiDyAJECMLIQEgBiAJIA8QjQMgARAMRQ0BCyAKIQkMrQELIAYgDCkDABALIAYgCCkDABALIAwgATcDACAKIQkMqAELIAdBcGoiCCAGQoCAgIAwIAgpAwAgB0F4aiIIKQMAEK0FNwMADKcBCyAGIAdBeGoiCCkDABD5ASIBEAwNqgEgBiAIKQMAEAsgCCABNwMADKUBCyAGIAdBeGoiCCkDABDNCCIBEAwNqQEgBiAIKQMAEAsgCCABNwMADKQBCyALQQVqIQogBiAJKAAAEMwIIghBAEgEQCAKIQkMqQELIAcgCEEAR61CgICAgBCENwMAIAdBCGohCCAKIQkMpAELIAtBBWohCiAGIAkoAAAgDEFJahDLCCIBEAwEQCAKIQkMqAELIAcgATcDACAHQQhqIQggCiEJDKMBCyAJKAAAIQggC0EFaiEJIAYgCCAHQXhqIggpAwAgDEFHahCsBUF/Sg2iAQykAQsgC0EFaiEKIAkoAAAhDCAHQXBqIggoAgBFBEAgBiAMEMYCIAohCQymAQsgCiEJIAYgDCAHQXhqKQMAQQIQrAVBf0oNoQEgCCEHDKUBCyAJKAAAIQwgByEIIAtBBmoiCiEJIAYgDCALLQAFEMoIRQ2gASAKIQkMpAELIAkoAAAhDCAHIQggC0EGaiIKIQkgBiAMIAstAAUQyAhFDZ8BIAohCQyjAQsgC0EGaiEKIAYgCSgAACAHQXhqIggpAwAgCy0ABRDHCARAIAohCQyjAQsgBiAIKQMAEAsgCiEJDJ4BCyAHIBEgCS8AAEEDdGopAwAQDjcDACALQQNqIQkgB0EIaiEIDJ0BCyAGIBEgCS8AAEEDdGogB0F4aiIIKQMAEB8gC0EDaiEJDJwBCyAGIBEgCS8AAEEDdGogB0F4aikDABAOEB8gC0EDaiEJDJoBCyAHIBMgCS8AAEEDdGopAwAQDjcDACALQQNqIQkgB0EIaiEIDJoBCyAGIBMgCS8AAEEDdGogB0F4aiIIKQMAEB8gC0EDaiEJDJkBCyAGIBMgCS8AAEEDdGogB0F4aikDABAOEB8gC0EDaiEJDJcBCyAHIBEgCy0AAUEDdGopAwAQDjcDACALQQJqIQkgB0EIaiEIDJcBCyAGIBEgCy0AAUEDdGogB0F4aiIIKQMAEB8gC0ECaiEJDJYBCyAGIBEgCy0AAUEDdGogB0F4aikDABAOEB8gC0ECaiEJDJQBCyAHIBEpAwAQDjcDACAHQQhqIQgMlAELIAcgGSkDABAONwMAIAdBCGohCAyTAQsgByAaKQMAEA43AwAgB0EIaiEIDJIBCyAHIBspAwAQDjcDACAHQQhqIQgMkQELIAYgESAHQXhqIggpAwAQHwyQAQsgBiAZIAdBeGoiCCkDABAfDI8BCyAGIBogB0F4aiIIKQMAEB8MjgELIAYgGyAHQXhqIggpAwAQHwyNAQsgBiARIAdBeGopAwAQDhAfIAchCAyMAQsgBiAZIAdBeGopAwAQDhAfIAchCAyLAQsgBiAaIAdBeGopAwAQDhAfIAchCAyKAQsgBiAbIAdBeGopAwAQDhAfIAchCAyJAQsgByATKQMAEA43AwAgB0EIaiEIDIgBCyAHIBwpAwAQDjcDACAHQQhqIQgMhwELIAcgHSkDABAONwMAIAdBCGohCAyGAQsgByAeKQMAEA43AwAgB0EIaiEIDIUBCyAGIBMgB0F4aiIIKQMAEB8MhAELIAYgHCAHQXhqIggpAwAQHwyDAQsgBiAdIAdBeGoiCCkDABAfDIIBCyAGIB4gB0F4aiIIKQMAEB8MgQELIAYgEyAHQXhqKQMAEA4QHyAHIQgMgAELIAYgHCAHQXhqKQMAEA4QHyAHIQgMfwsgBiAdIAdBeGopAwAQDhAfIAchCAx+CyAGIB4gB0F4aikDABAOEB8gByEIDH0LIAcgECgCACgCECkDABAONwMAIAdBCGohCAx8CyAHIBAoAgQoAhApAwAQDjcDACAHQQhqIQgMewsgByAQKAIIKAIQKQMAEA43AwAgB0EIaiEIDHoLIAcgECgCDCgCECkDABAONwMAIAdBCGohCAx5CyAGIBAoAgAoAhAgB0F4aiIIKQMAEB8MeAsgBiAQKAIEKAIQIAdBeGoiCCkDABAfDHcLIAYgECgCCCgCECAHQXhqIggpAwAQHwx2CyAGIBAoAgwoAhAgB0F4aiIIKQMAEB8MdQsgBiAQKAIAKAIQIAdBeGopAwAQDhAfIAchCAx0CyAGIBAoAgQoAhAgB0F4aikDABAOEB8gByEIDHMLIAYgECgCCCgCECAHQXhqKQMAEA4QHyAHIQgMcgsgBiAQKAIMKAIQIAdBeGopAwAQDhAfIAchCAxxCyAHIBAgCS8AAEECdGooAgAoAhApAwAQDjcDACALQQNqIQkgB0EIaiEIDHALIAYgECAJLwAAQQJ0aigCACgCECAHQXhqIggpAwAQHyALQQNqIQkMbwsgBiAQIAkvAABBAnRqKAIAKAIQIAdBeGopAwAQDhAfIAtBA2ohCSAHIQgMbgsgC0EDaiEKIBAgCS8AACIIQQJ0aigCACgCECkDACIBEIMBRQRAIAcgARAONwMAIAdBCGohCCAKIQkMbgsgBiAOIAhBARDAAiAKIQkMcQsgC0EDaiEKIBAgCS8AACIIQQJ0aigCACgCECIJKQMAEIMBRQRAIAYgCSAHQXhqIggpAwAQHyAKIQkMbQsgBiAOIAhBARDAAiAKIQkMcAsgC0EDaiEKIBAgCS8AACIIQQJ0aigCACgCECIJKQMAEIMBRQRAIAYgDiAIQQEQwAIgCiEJDHALIAYgCSAHQXhqIggpAwAQHyAKIQkMawsgBiARIAkvAABBA3RqQoCAgIDAABAfIAtBA2ohCSAHIQgMagsgC0EDaiEKIBEgCS8AACIIQQN0aikDACIBEIMBRQRAIAcgARAONwMAIAdBCGohCCAKIQkMagsgBiAOIAhBABDAAiAKIQkMbQsgC0EDaiEKIBEgCS8AACIIQQN0aiIJKQMAEIMBRQRAIAYgCSAHQXhqIggpAwAQHyAKIQkMaQsgBiAOIAhBABDAAiAKIQkMbAsgC0EDaiEKIBEgCS8AAEEDdGoiCCkDABCDAUUEQCAGQerFAEEAEMgCIAohCQxsCyAGIAggB0F4aiIIKQMAEB8gCiEJDGcLIAYgEiAJLwAAEMYIIAtBA2ohCSAHIQgMZgsgCSgAACEPIAsvAAUhCiAHIAZCgICAgCAQUSIBNwMAIAdBCGohCCALQQdqIQkCQAJAIAEQDA0AAkAgDEH6AEYEQCAQIApBAnRqKAIAIgogCigCAEEBajYCAAwBCyAGIBIgCiAMQfkARhD6AyIKRQ0BCyAGIAcoAgAgD0EiEH4iDA0BIBUgChD3AQsgCCEHDGoLIAwgCjYCACAHIAYgDxBkNwMIIAdBEGohCAxlCyALQQVqIQogBiAJKAAAIAcQxQgEQCAKIQkMaQsgB0EQaiEIIAohCQxkCyAJIAkoAABqIQkgByEIIAYQjgFFDWMMZwsgCSAJLgAAaiEJIAchCCAGEI4BRQ1iDGYLIAkgCSwAAGohCSAHIQggBhCOAUUNYQxlCwJ/IAtBBWoiCgJ/IAdBeGoiCCkDACIBQiCIp0EDTQRAIAGnDAELIAYgARAtC0UNABogCiAJKAAAakF8agshCSAGEI4BRQ1gDGILAn8gC0EFaiIKAn8gB0F4aiIIKQMAIgFCIIinQQNNBEAgAacMAQsgBiABEC0LDQAaIAogCSgAAGpBfGoLIQkgBhCOAUUNXwxhCwJ/IAtBAmoiCgJ/IAdBeGoiCCkDACIBQiCIp0EDTQRAIAGnDAELIAYgARAtC0UNABogCSwAACAKakF/agshCSAGEI4BRQ1eDGALAn8gC0ECaiIKAn8gB0F4aiIIKQMAIgFCIIinQQNNBEAgAacMAQsgBiABEC0LDQAaIAksAAAgCmpBf2oLIQkgBhCOAUUNXQxfCyAHIAkgCSgAAGogDigCFGutQoCAgIDQAIQ3AwAgC0EFaiEJIAdBCGohCAxcCyAJKAAAIQggByALIA4oAhRrQQVqrTcDACAIIAlqIQkgB0EIaiEIDFsLAkAgB0F4aiIIKQMAIgFC/////w9WDQAgDigCGCABpyIKTQ0AIA4oAhQgCmohCQxbCyAGQY7GAEEAEEQMXgsgByEIIAYgBxDECEUNWQxdCyAGIAcQwwgNXCAHQRBqIQgMWAsgBiAHQQAQjAMNWyAHQoCAgIDQADcDCCAHQRBqIQgMVwsgC0ECaiEJIAYgB0F9IAstAAFrEMIIDVogB0EQaiEIDFYLIAYgB0EBEIwDDVkgB0KAgICA0AA3AwggB0EQaiEIDFULIAYgBxDACA1YIAdBCGohCAxUCyAHQXhqKQMAECENUiAGQaDGAEEAEBUMVwsgBiAHQXBqIgopAwAQCyAHQWhqIggpAwAiARARDVIgBiABQQAQsAEEQCAKIQcMVwsgBiAIKQMAEAsMUgsgB0F4aiIHKQMAIQEDQAJAIAcgGE0NACAHQXhqIggpAwAiJUKAgICAcINCgICAgNAAUQ0AIAYgJRALIAghBwwBCwsgByAgSQRAIAZBv8YAQQAQRCAGIAEQCwxWCyAHIAdBeGoiCCkDADcDACAHQXBqIgspAwAhJSALIAdBaGoiCykDADcDACAIICU3AwAgCyABNwMAIAdBCGohCAxRCyAGIAdBaGopAwAgB0FgaikDAEEBIAdBeGoiCBAjIgEQDA1UIAYgCCkDABALIAggATcDACAHIQgMUAsgC0ECaiEJIAYgB0FgaiIIKQMAIgFBF0EGIAstAAEiCkEBcRsgAUEAEBMiJRAMDVNCgYCAgBAhAQJAICUQEQ0AICUQKg0AIAgpAwAhAQJ+IApBAnEEQCAGICUgAUEAQQAQNgwBCyAGICUgAUEBIAdBeGoQNgsiARAMDVQgBiAHQXhqIggpAwAQCyAIIAE3AwBCgICAgBAhAQsgByABNwMAIAdBCGohCAxPCwJ/IAdBeGoiCCkDACIBQiCIp0EDTQRAIAGnQQBHDAELIAYgARAtCyELIAggC0WtQoCAgIAQhDcDACAHIQgMTgsgC0EFaiEKIAYgB0F4aiIIKQMAIgEgCSgAACABQQAQEyIBEAwEQCAKIQkMUgsgBiAIKQMAEAsgCCABNwMAIAchCCAKIQkMTQsgC0EFaiEKIAYgB0F4aikDACIBIAkoAAAgAUEAEBMiARAMBEAgCiEJDFELIAcgATcDACAHQQhqIQggCiEJDEwLIAYgB0FwaiIIKQMAIAkoAAAgB0F4aikDAEGAgAIQlgIhByAGIAgpAwAQCyALQQVqIQkgB0F/Sg1LDE0LIAtBBWohCiAGIAkoAAAQqwUiARAMBEAgCiEJDE8LIAcgATcDACAHQQhqIQggCiEJDEoLIAYgB0FwaiIKKQMAIAdBeGoiCCkDABC/CCEBIAYgCCkDABALIAYgCikDABALIAogATcDACABEAxFDUkMSwsgBiAHQWhqIggpAwAgB0F4aiIKKQMAIAdBcGopAwAQvgghByAGIAgpAwAQCyAGIAopAwAQCyAHQX9KDUgMSgsgBiAHQWhqKQMAIAdBcGoiCCkDACAHQXhqKQMAEL0IIQcgBiAIKQMAEAsgB0F/Sg1HDEkLIAkoAAAhCCALQQVqIQkgBiAHQXBqKQMAIAggB0F4aiIIKQMAQYeAARAaQX9KDUYMSAsgCSgAACEMIAchCCALQQVqIgohCSAGIAdBeGopAwAgDBCqBUF/Sg1FIAohCQxJCyAHIQggBiAHQXhqKQMAIAdBcGopAwAQqQVBf0oNRAxICwJAIAdBeGoiCCkDACIBECFFBEAgARAqRQ0BCyAGIAdBcGopAwAgAUEBEJgCQQBIDUgLIAYgARALDEMLIAYgB0F4aikDACAHQXBqKQMAEPkDIAchCAxCCwJ/IAxB1QBGBEBBfSAGIAdBcGopAwAQOiIIDQEaDEcLIAkoAAAhCCALQQVqIQlBfgshCiAJLQAAIg9BBHEhFiAHIApBA3RqKQMAIScCfgJ+AkACQAJAIA9BA3EOAgABAgtBg84BIQogB0F4aikDACIBISZCgICAgDAMAgtCgICAgDAhJkGBmgEhCkKAgICAMCElIAdBeGopAwAiAQwCC0KAgICAMCEmQYGqASEKIAdBeGopAwAiAQshJUKAgICAMAshKCAGIAEgCCAKIBZyIg8gJxC8CCIKQQBOBEAgBiAnIAggJiAoICUgDxB1IQoLIAYgB0F4aikDABALIAlBAWohCSAHIAxB1QBGBH8gBiAIEBIgBiAHQXBqKQMAEAtBfgVBfwtBA3RqIQggCkF/Sg1BDEMLIAkoAAAhDyAHIQggC0EGaiIKIQkgBiAHIA8gCy0ABSAQIBIgDEHXAEYQuwhBAE4NQCAKIQkMRAsgBiAHQXBqIgopAwAgB0F4aiIIKQMAEJ0BIQEgBiAKKQMAEAsgCiABNwMAIAEQDEUNPwxBCyAHQXhqIgggBiAHQXBqKQMAIAgpAwAQnQEiATcDACAHIQggARAMRQ0+DEILIAdBeGopAwAhASAHQXBqKQMAIiUQEQRAIAYgARA6IghFDUIgBiAIEMYCIAYgCBASDEILIAYgJSABEA4QnQEiARAMDUEgByABNwMAIAdBCGohCAw9CyAGIAdBeGoiDykDABA6IgpFDUAgBiAHQXBqIggpAwAgCiAHQWhqIgwpAwBBABATIQEgBiAKEBIgARAMDUAgBiAPKQMAEAsgBiAIKQMAEAsgBiAMKQMAEAsgDCABNwMADDwLIAYgB0FoaiIIKQMAIAdBcGopAwAgB0F4aikDAEGAgAIQ3QEhByAGIAgpAwAQCyAHQX9KDTsMPQsgB0FoaiIIKQMAIiUQESEMIAYQ+AEhCgJ/IAwEQCAKBEAgBiAHQXBqKQMAEDoiCEUNQSAGIAgQxgIgBiAIEBIMQQsgCCAGKQPAARAOIiU3AwBBgIACDAELQYCABkGAgAIgChsLIQogBiAlIAdBcGopAwAgB0F4aikDACAKEN0BIQcgBiAIKQMAEAsgB0F/Sg06DDwLIAdBaGoiCikDAEL/////b1gEQCAGECcMPgsgBiAHQXBqIg8pAwAQOiIMRQ09IAYgCigCACAMIAdBeGopAwAgB0FgaiIIKQMAQYCAAhD4AyEHIAYgDBASIAYgCCkDABALIAYgCikDABALIAYgDykDABALIAdBAE4NOSAHQR52QQJxDDoLIAYgB0FoaikDACAHQXBqKQMAEA4gB0F4aiIIKQMAQYeAARDDAkF/Sg04DDoLIAYgBxC6CA07IAYgB0F4aiIIKQMAEAsMNwsgC0ECaiEJIAchCCAGIAcgCy0AASIKQX9zQQN0QWByaikDACAHIApBAnZBf3NBA3RBQHJqKQMAIAcgCkEFdkF/c0EDdGopAwBBABCoBUUNNgw6CwJAIAdBeGoiCCkDACIBQiCIIiYgB0FwaiIKKQMAIiVCIIgiJ4RQBEAgAaciDEEASCAMICWnIg9qIgwgD0hzDQEgCiAMrTcDAAw3CyAnp0ELakESSSAmp0ELakESSXINACAKICUQSiABEEqgEBY3AwAMNgsgBiAHEKcFRQ01DDkLIAtBAmohCQJAIBEgCy0AAUEDdGoiCCkDACIBQiCIIiYgB0F4aiIHKQMAIiVCIIiEUARAICWnIgpBAEggCiABpyIMaiIKIAxIcw0BIAggCq03AwAgByEIDDYLICZC+f///w9SDQAgBiAlQQIQwQEiARAMDTkgBiAIKQMAEA4gARC/AiIBEAwNOSAGIAggARAfIAchCAw1CyANIAEQDjcDICANIAcpAwA3AyggBiAjEKcFDTggBiAIIA0pAyAQHyAHIQgMNAsgB0F4aiIIKQMAIgFCIIgiJiAHQXBqIgopAwAiJUIgiCInhFAEQCAlQiCGQiCHIAFCIIZCIId9IgFCgICAgAh8Qv////8PVg0EIAogAUL/////D4M3AwAMNAsgJ6dBC2pBEkkgJqdBC2pBEklyDQMgCiAlEEogARBKoRAWNwMADDMLAnwgB0F4aiIIKQMAIgFCIIgiJiAHQXBqIgopAwAiJUIgiCInhFAEQCABQiCGQiCHICVCIIZCIId+IiZCgICAgAh8QoCAgIAQWgRAICa5DAILRAAAAAAAAACAICZQRSABICWEp0F/SnJFDQEaIAogJkL/////D4M3AwAMNAsgJ6dBC2pBEkkgJqdBC2pBEklyDQMgJRBKIAEQSqILISkgCiApEBY3AwAMMgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PVg0BIBItAChBBHENASAKAn4gJae3IAGnt6MiKb0CfyApmUQAAAAAAADgQWMEQCApqgwBC0GAgICAeAsiB7e9UQRAIAetDAELICkQFgs3AwAMMQsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PVg0AICWnIg9BH3YgAaciFkEBSHINACAKIA8gFm+tNwMADDALIAYgByAMELkIDTMgB0F4aiEIDC8LIAdBfGooAgAiCEUgCEELakERS3INLSAHIQggBiAHQY0BEJECRQ0uDDILAkACfCAHQXhqIggpAwAiAUIgiKciCkUEQEQAAAAAAAAAgCABpyILRQ0BGkQAAAAAAADgQSALQYCAgIB4Rg0BGiAIQgAgAX1C/////w+DNwMAIAchCAwwCyAKQQtqQRJJDQEgARBKmgshKSAIICkQFjcDACAHIQgMLgsgByEIIAYgB0GMARCRAkUNLQwxCyAHQXhqIggpAwAiAUL/////D1YgAadB/////wdGckUEQCAIIAFCAXxC/////w+DNwMAIAchCAwtCyAHIQggBiAHQY8BEJECRQ0sDDALIAdBeGoiCCkDACIBQv////8PViABp0GAgICAeEZyRQRAIAggAUJ/fEL/////D4M3AwAgByEIDCwLIAchCCAGIAdBjgEQkQJFDSsMLwsgBiAHIAwQuAgNLiAHQQhqIQgMKgsgC0ECaiEJIBEgCy0AAUEDdGoiCCkDACIBQv////8PViABp0H/////B0ZyRQRAIAggAUIBfEL/////D4M3AwAMKQsgDSABEA43AxggBiAfQY8BEJECDS0gBiAIIA0pAxgQHwwoCyALQQJqIQkgESALLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQn98Qv////8PgzcDAAwoCyANIAEQDjcDGCAGIB9BjgEQkQINLCAGIAggDSkDGBAfDCcLIAdBeGoiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCAGIAcQtwhFDScMKwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAad0rTcDAAwnCyAGIAdBoAEQvgJFDSYMKgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAoCfiAlpyABp3YiB0EATgRAIAetDAELIAe4EBYLNwMADCYLIAYgBxC2CEUNJQwpCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp3WtNwMADCULIAYgB0GhARC+AkUNJAwoCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiABICWDNwMADCQLIAYgB0GtARC+AkUNIwwnCyAHQXhqIggpAwAgB0FwaiIKKQMAhCIBQv////8PWARAIAogATcDAAwjCyAGIAdBrwEQvgJFDSIMJgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogASAlhUL/////D4M3AwAMIgsgBiAHQa4BEL4CRQ0hDCULIAdBeGoiCCkDACIBIAdBcGoiCikDACIlhEL/////D1gEQCAKICWnIAGnSK1CgICAgBCENwMADCELIAYgB0GjARCLA0UNIAwkCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0ytQoCAgIAQhDcDAAwgCyAGIAdBpAEQiwNFDR8MIwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAadKrUKAgICAEIQ3AwAMHwsgBiAHQaUBEIsDRQ0eDCILIAdBeGoiCCkDACIB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IgQgAkGAAkhyRQRAIAAgARDcAyEDDAMLIAAoAgAgACgCBCABIAR0IARrQRFqIAVBDGoQtAEiAg0BCyAAEP0CDAELIAAoAhAhAyAFKAIMIQQgACACNgIEIAAgBCADdiABakH/////AxCxATYCDEEAIQMLIAVBEGokACADC4ABAgJ/AX4CQCABKQIEIgRC//////////+/f1YEQCABKAIMIQAMAQsgACgCNCAEQiCIpyAAKAIkQX9qcUECdGohAiAAKAI4IQMDQCADIAIoAgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQZkwQaENQeQUQYjAABAAAAsgAAvxBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQzAIiAxDwAUUNBSABIAEoAgBBf2o2AgAgAw8LIAAoAjQgACgCJEF/aiABIAIQyQVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQyAUNACADEPABDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEsiBEH/////A0sNASAAIAAoAjggBEECdBDjASIGRQ0BIAAoAiwiAkUEQCAAQRAQmwIiAkUEQCAAIAYQIAwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBf2ohBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEMcFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJB/////wdxIAJBH3YiAnQgAmtBEWoQ5wEiAkUEQEEAIQMMBAsgAkEBNgIAIAIgAikCBEL/////d4MgASkCBEKAgICACIOEIgk3AgQgAiAJQoCAgIB4gyABKQIEQv////8Hg4Q3AgQgAkEQaiABQRBqIAEoAgQi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IABrCzMBAX4CfiABKQNAIgIQEQRAQoCAgIDgACAAIAEQ8AciAhAMDQEaIAEgAjcDQAsgAhAOCwt/AQN/IAAoAhAhBSAAIAJBA3RBGGoQLiIERQRADwsgBCACNgIQIAQgATYCDCAEIAA2AghBACEAIAJBACACQQBKGyEBIARBGGohAgNAIAAgAUcEQCACIABBA3QiBmogAyAGaikDABAONwMAIABBAWohAAwBCwsgBCAFQZgBahBNCyMAIAAoAgAgACgCBBAZIABBADYCDCAAQgA3AgQgAEF/NgIUC3YBAn8gACABQRBqEKQFAkAgASgCICICBEAgASgCPCIDRQ0BA0AgAiADT0UEQCAAIAIpAwAQJiACQQhqIQIgASgCPCEDDAELCyAAIAEoAiAQIAsgACABKQMYECYgACABKQMAECYPC0GzH0GhDUGrkwFBxh8QAAALDQAgACABIAJBExDjAwvoAwEDfyABQRBqIQMgASgCFCECA0AgAiADRkUEQCACQWhqIQQgAigCBCECIAAgBBCAAwwBCwsgACgCECABKAKAAiABKAKEAiABKAKgAhCGBSABQYACahCiASAAIAEoAswCEBkgACABKAKkAhAZIAAgASgC2AIQGUEAIQIDQCACIAEoArgCTkUEQCAAIAEoArQCIAJBA3RqKQMAEAsgAkEBaiECDAELCyAAIAEoArQCEBkgACABKAJwEBJBACECA0AgAiABKAJ8TkUEQCAAIAEoAnQgAkEEdGooAgAQEiACQQFqIQIMAQsLIAAgASgCdBAZQQAhAgNAIAIgASgCiAFORQRAIAAgASgCgAEgAkEEdGooAgAQEiACQQFqIQIMAQsLIAAgASgCgAEQGUEAIQIDQCACIAEoAvQBTkUEQCAAIAEoAvwBIAJBBHRqKAIMEBIgAkEBaiECDAELCyAAIAEoAvwBEBlBACECA0AgAiABKALAAk5FBEAgACABKALIAiACQQN0aigCBBASIAJBAWohAgwBCwsgACABKALIAhAZIAEoAswBIgIgAUHQAWpHBEAgACACEBkLIAAgASgC7AIQEiABQfQCahCiASAAIAEoAowDEBkgASgCBARAIAFBGGoQRwsgACABEBkL5QIDA38BfgJ8An8gACsDCCIGRAAAAAAAAChAENQFIgeZRAAAAAAAAOBBYwRAIAeqDAELQYCAgIB4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QQAgACACQRBqEHIiARAMDQAaIAAoAhAgAadBARDNAgshACACQTBqJAAgAAs8AQF/IAEgACgCzAEgASgCFCAAKALAARDKAkECdGoiAigCADYCKCACIAE2AgAgACAAKALIAUEBajYCyAELQwACf0EAIAIoAgAoAgBBGnYgA0YNABpBfyAAIAEgAhDgAQ0AGiACKAIAIgAgACgCAEH///8fcSADQRp0cjYCAEEACwuqAQEEf0F/IQICQCAAIAFBABDgAQ0AIAEoAigiBCABKAIQIgMoAiBqIgUgAygCHEsEQCAAIAFBEGogASAFELUFDQELIAEoAiQhA0EAIQIDQCACIARGRQRAIAAgASACEJEBQQcQfiADKQMANwMAIAJBAWohAiADQQhqIQMMAQsLIAAgASgCJBAZQQAhAiABQQA2AiggAUIANwMgIAEgAS0ABUH3AXE6AAULIAILfQEDfwJAAkAgAEEBcSICDQAgAUGBAnFBgQJGDQEgAUGACHFFDQAgACABc0EEcQ0BCwJAIAFBgPQAcUUgAnINACAAQTBxIgJBEEYgAUGAMHEiBEEAR3MNASAAQQJxIAFBggRxQYIER3IgAkEQRnINACAERQ0BC0EBIQMLIAMLlAEBAX8jAEEQayIFJAAgBSADNwMIAkAgAQRAIAAgAa1CgICAgHCEEA4gAkEBIAVBCGoQNiECIAAgBSkDCBALQX8hASACEAwNASAAIAIQC0EBIQEMAQsgACADEAsgBEGAgAFxRQRAQQAhASAEQYCAAnFFDQEgABD4AUUNAQsgAEGrwABBABAVQX8hAQsgBUEQaiQAIAELYAIBfwF+AkAgARBdDQACQAJAAkAgACgCECgCOCABQQJ0aigCACkCBCIDQj6Ip0F/ag4DAwIAAQtBASECAkAgA0IgiKdB/////wNxDgIDAAELQQIPCxABAAtBASECCyACCygBAX4Cf0EAIAAgARC6BSICEBENABpBfyACEAwNABogACACEAtBAQsLTgIBfwF+IwBBEGsiAiQAAn4gAUH/AU0EQCACIAE6AA8gACACQQ9qQQEQzgIMAQsgAiABOwEMIAAgAkEMakEBEIwECyEDIAJBEGokACADCyIAIAAgAkEBahAuIgAEQCAAIAEgAhAkIAJqQQA6AAALIAALKQECfwJAIABCgICAgHBUDQAgAKciAi8BBhD1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IARBAmoLIQQgA0EBaiEDDAALAAsgACAGQQNsQQAQ+gEiB0UNAUEAIQUgB0EQaiILIQQDQCAFIgggBk4NASAIQQFqIQUgCiAIQQF0ai8BECIJQf8ATQRAIAQgCToAACAEQQFqIQQFAkAgCUGA+ANxQYCwA0cgA3IgBSAGTnINACAKIAVBAXRqLwEQIgxBgPgDcUGAuANHDQAgCUEKdEGA+D9xIAxB/wdxckGAgARqIQkgCEECaiEFCyAEIAkQsAMgBGohBAsMAAsACyAEQQA6AAAgByAEIAdrQXBqQf////8Hca0gBykCBEKAgICAeIOENwIEIAAgAhALIAEEQCABIAcoAgRB/////wdxNgIACyALDwsgAUUEQEEADwtBACEFIAFBADYCAAsgBQslAgF/AX4gACABEDIiAxAMRQRAIAAgAxC4ASECIAAgAxALCyACCz0BAX8gASABKAIAIgJBf2o2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQoAMPCyAAIAEQIAsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDLBUUNACACKAIMIgNBAEgNACAAIAEQlAQgAxCRAQwBCyAAIAFBARDNAgshASACQRBqJAAgAQsMACABIAAoAgwRBAALXAEDfyAAQeABaiEEIAAoAuQBIQMDQCAEIAMiAkcEQCACKAIEIQMCQAJAAkAgAQ4DAgABBAsgAiwATA0DDAELIAIpAkxCIIZCOIenDQILIAAgAkF4ahDNBQwBCwsLwQEBA38CQCACKAIQIgMEfyADBSACENIFDQEgAigCEAsgAigCFCIFayABSQRAIAIgACABIAIoAiQRAAAPCwJAIAIsAEtBAEgEQEEAIQMMAQsgASEEA0AgBCIDRQRAQQAhAwwCCyAAIANBf2oiBGotAABBCkcNAAsgAiAAIAMgAigCJBEAACIEIANJDQEgACADaiEAIAEgA2shASACKAIUIQULIAUgACABECQaIAIgAigCFCABajYCFCABIANqIQQLIAQLQAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQeiAAIAUpAwA3AwAgACAFKQMINwMIIAVBEGokAAslAQF/IABCADcDcCAAIAAoAggiASAAKAIEa6w3A3ggACABNgJoCxAAIAAgASACQQBB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IAJKGyICQQAgAkEAShshAgNAIAIgBUcEQCAAIAZBCGogAyAFQQN0aikDABBIDQMgBisDCCILvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0CIAZBEGogBSAHakEDdGogC505AwAgBUEBaiEFDAELCyAGQRBqIAgQgQMhCgsgACABIAoQ4wQhCQsgBkHgAGokACAJC3oBAX8CQCABQoCAgIBwVA0AIAGnIgMvAQZBCkcNACAAIAMpAyAQCyADAn4gAr0CfyACmUQAAAAAAADgQWMEQCACqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAIQFgsiATcDICABEA4PCyAAQZD1AEEAEBVCgICAgOAAC4ABAQN/IwBBEGsiBCQAIAQgATcDCCADQQF0IQZBACEDA0ACQAJAIANBAkYNACAAQTdBASADIAZqQQEgBEEIahDiASIBEAxFDQFBfyEFIANBAUcNACAAIAIpAwAQCwsgBEEQaiQAIAUPCyACIANBA3RqIAE3AwAgA0EBaiEDDAALAAtxAQF/IwBBEGsiBCQAIAQgAjcDCCABKAJMIgEQRyAAIAAgAUEgaiADQQN0aikDAEKAgICAMEEBIARBCGoQIxALIAAgASkDEBALIAAgASkDGBALIAAgASkDIBALIAAgASkDKBALIAAgARAZIARBEGokAAvpAwIEfwJ+IAFBCGohAyABQcgAaiEEAkACQAJAA0AgBBDhAw0CIAEoAkwhAgJAAkACfwJAAkACQAJAIAEoAgQOBgACAgUJAQYLIAIoAghFDQIgACABENADDAYLAkACQCACKAIIDgIIAAELIAFBBDYCBCAAIAEgAikDEBCKBw8LIAAgASACKQMQEM8DDwsgAikDEBAOIQYCQCACKAIIIgVBAkcNACABKAIEQQFHDQAgACAGEJABQQEMAgsgASgCRCICIAWtNwMAIAJBeGogBjcDACABIAJBCGo2AkQLQQALIQIgAUEDNgIEIAEgAjYCFAsgACADELkCIgcQDARAIAAQjwEhBiAAIAEQ0AMgACABIAYQzwMgACAGEAsMAgsgB0L/////D1gEQCABKAJEQXhqIgIpAwAhBiACQoCAgIAwNwMAAkACQAJAIAenIgIOAwIAAQQLQQEhAgsgASACNgIEIAAgASAGQQAQ8QIgACAGEAsMAwsgACABIAYQiQcgACAGEAsPCyAHEBFFDQQgASgCREF4aiICKQMAIQYgAkKAgICAMDcDACAAIAEQ0AMgACABIAZBARDxAiAAIAYQCwwBCwsQAQALIAAgAUKAgICAMEEBEPECCw8LQd3oAEGhDUHXmAFB9ugAEAAACykBAX4gACAAKQOQAUEDEFAiAhAMRQRAIAAgAkE0IAEQDkEDEBoaCyACCx8BAX8gASABKAIAQX9qIgI2AgAgAkUEQCAAIAEQIAsLiQEBAX8gAigCBEUEQCACQRhqEEcCQCABKAIABEAgAhCJBQwBCyAAIAIpAyAQJgsgACACKQMoECYgAiACKAIAQX9qIgM2AgACQCADRQRAIAJBEGoQRyAAIAIQIAwBCyACQoCAgIAwNwMoIAJCgICAgDA3AyAgAkEBNgIECyABIAEoAgxBf2o2AgwLCz8BAX8gAUEAIAFBAEobIQEDQAJAIAEgA0YEQEF/IQMMAQsgACADQQN0aigCBCACRg0AIANBAWohAwwBCwsgAwusBAIBfwR+AkACQCACECFFBEAgABAnDAELAkACf0EAIAAgAkE9EHdFDQAaQoCAgIAwIQRCgICAgDAhBUKAgICAMCEGIAAgAkE9IAJBABATIgcQDA0BQYECQYACIAAgBxAtGwshAyAAIAJBPhB3BEBCgICAgDAhBEKAgICAMCEFQoCAgIAwIQYgACACQT4gAkEAEBMiBxAMDQFBggRBgAQgACAHEC0bIANyIQMLIAAgAkE/EHcEQEKAgICAMCEEQoCAgIAwIQVCgICAgDAhBiAAIAJBPyACQQAQEyIHEAwNAUGECEGACCAAIAcQLRsgA3IhAwtCgICAgDAhBQJAIAAgAkHAABB3RQRAQoCAgIAwIQYMAQtCgICAgDAhBCAAIAJBwAAgAkEAEBMiBhAMBEAMAgsgA0GAwAByIQMLAkAgACACQcEAEHdFDQAgACACQcEAIAJBABATIgUQDEUEQCADQYAQciEDIAUQEQ0BIAAgBRA7DQELIABB5NgAQQAQFUKAgICAMCEEDAELAkAgACACQcIAEHdFBEBCgICAgDAhBAwBCyAAIAJBwgAgAkEAEBMiBBAMRQRAIANBgCByIQMgBBARDQEgACAEEDsNAQsgAEHz2ABBABAVDAELIANBgDBxRSADQYDEAHFFcg0CIABBgtkAQQAQFQsgACAGEAsgACAFEAsgACAEEAsLQX8PCyABIAQ3AxggASAFNwMQIAEgBjcDCCABIAM2AgBBAAuIAwIHfwJ+IwBBIGsiBCQAIARBADYCDCAEQQA2AggCQCAAIAEgAiABQQAQEyILEAwEQCALIQEMAQsCQAJAIAsQIUUEQAwBCyAAIAsQwAEiCUEASA0BAkAgCQRAIAAgBEEMaiALENgBRQ0BDAMLIAAgBEEIaiAEQQxqIAunQREQjQEhBSAEKAIIIQYgBUEASA0CCyAEKAIMIQgDQCAHIAhGDQECQCAJBEAgACAHEMoFIgUNAQwECyAAIAYgB0EDdGooAgQQGCEFCyAAIAsgBSADEOwEIgwQDARAIAAgBRASDAMLAn8gDBARBEAgACALIAVBABDaAQwBCyAAIAsgBSAMQQcQGgshCiAAIAUQEiAHQQFqIQcgCkEATg0ACwwBCyAAIAYgCBBoQQAhBiAAIAIQZCIMEAwNACAEIAs3AxggBCAMNwMQIAAgAyABQQIgBEEQahAjIQEgACAMEAsgACALEAsMAQsgACAGIAQoAgwQaCAAIAsQC0KAgICA4AAhAQsgBEEgaiQAIAELMAEBfyAAKAI4IAFBAnRqKAIAIgEgASgCACICQX9qNgIAIAJBAUwEQCAAIAEQoAMLC+8CAQN/IwBBQGoiAiQAAkAgACABEF8iARAMDQACQCAAIAJBIGogAaciBCgCBEH/////B3FBAmoQQg0AIAJBIGpBIhA8DQAgAkEANgI8A0AgAyAEKAIEQf////8HcUgEQAJAAkACQAJAAkACQAJAAkACQAJAIAQgAkE8ahDXASIDQXhqDgYFAgQBBgMACyADQSJGIANB3ABGcg0GCyADQSBPQQAgA0GAcHFBgLADRxsNBiACIAM2AgAgAkEQakEQQf7WACACEFQaIAJBIGogAkEQahCIAQ0KDAcLQfQAIQMMBAtB8gAhAwwDC0HuACEDDAILQeIAIQMMAQtB5gAhAwsgAkEgakHcABA8DQQgAkEgaiADEDxFDQEMBAsgAkEgaiADEL4BDQMLIAIoAjwhAwwBCwsgAkEgakEiEDwNACAAIAEQCyACQSBqEDghAQwBCyAAIAEQCyACQSBqEEVCgICAgOAAIQELIAJBQGskACABC24BBH9BfyEGQX8gAigCACIEQQF2IARqIARBqdWq1XpLGyEFAkACQCADIAEoAgAiB0YEQCAAIAUQLiIARQ0CIAAgAyAEECQaDAELIAAgByAFEJkCIgBFDQELIAEgADYCACACIAU2AgBBACEGCyAGC2EBAn8DQCAAKAIoIgFBAUhFBEAgACABQX9qIgE2AiggACgCACAAKAIEIAFBA3RqKQMAEAsMAQsLIAAoAgQiASAAQQhqIgJHBEAgACgCACABEBkLIABBBDYCLCAAIAI2AgQLqAUCCn8FfiMAQTBrIgIkACABKQMgIQ4gASkDGCENIAEpAwghDCABKQMAIQ8CfgJAAkAgASkDKCIQEJoBBEAgDBCaAQ0BCyAAQbDTAEEAEBUMAQsgACACQQhqQQAQQhogAkEANgIkAkAgDRARRQRAIAAgAkEkaiANENgBDQELIAAgAkEoaiAPENgBDQAgACACQSxqIAEpAxAQxQFBAEgNACAMpyEHIBCnIgQoAgRB/////wdxIQggAigCJCEJIAIoAighCkEAIQEDQAJAAkACQCAEQSQgARDVASIGQQBIDQAgBkEBaiIDIAhPDQAgAkEIaiAEIAEgBhBXGiAGQQJqIQECQAJAAkACQCAEIAMQMSIFQVxqDgQAAwUBAgsgAkEIakEkEDwaDAYLIAJBCGogByAKIAIoAixqIAcoAgRB/////wdxEFcaDAULIAVB4ABGDQMLAkAgBUFQaiIDQQlNBEACQCABIAhPDQAgBCABEDEiBUFQakEJSw0AIAZBA2ogASAFIANBCmxqIgFBMEogAUFQaiIFIAlJcSILGyEBIAUgAyALGyEDCyADQQFIIAMgCU9yDQEgACANIAOtEHEiDBAMDQYgDBARDQUgAkEIaiAMEIoBRQ0FDAYLIAVBPEcNACAOEBENACAEQT4gARDVASIDQQBIDQAgACAEIAEgAxCZASIMEAwNBSAAIA4gDBCdASIMEAwNBSAMEBFFBEAgAkEIaiAMEIoBDQYLIANBAWohAQwECyACQQhqIAQgBiABEFcaDAMLIAJBCGogBCABIAQoAgRB/////wdxEFcaIAJBCGoQOAwFCyACQQhqIA8QiQFFDQEMAgsgAkEIaiAHQQAgAigCLBBXGgwACwALIAJBCGoQRQtCgICAgOAACyENIAJBMGokACANC/gFAgh/BX4jAEEQayIIJABCgICAgOAAIQ8CQCAAIAFBARDZASICRQ0AIAAgAykDABAsIg0QDARAIA0hDwwBCwJAIAAgAUHVACABQQAQEyIMEAwNACAAIAhBCGogDBCtAQ0AIAIoAgRBEGoiAi0AAEEhcSIERQRAIAhCADcDCAsCQCACLQABIgdBAUkEQEEAIQMMAQsgACAHQQN0EC4iA0UNAQsCQAJAAkACQAJAAkACQAJAIAgpAwgiDCANpyIKKQIEIg5C/////weDVQ0AIAMgAiAKQRBqIgkgDKcgDqciBUH/////B3EgBUEfdiIFIAAQgAYiBkEBRg0DIAZBAEgNASAEDQAgBkECRw0CCyAAIAFB1QBCABBJQQBODQEMBAsgAEHF0gBBABBEDAMLIAAgDRALQoCAgIAgIQEMAQsgBARAIAAgAUHVACADKAIEIAlrIAV1rRBJQQBIDQILQoCAgIAwIQwgABBOIgEQDA0CIAItAABBgAFxBH8gAiACKAADakEHagVBAAsiBARAIABCgICAgCAQUSIMEAwNAwsgB0EAIAdBAEsbIQdBACECA0AgAiAHRwRAQoCAgIAwIQ4CQCADIAJBA3RqKAIAIgZFDQAgAyACQQN0QQRyaigCACILRQ0AIAAgCiAGIAlrIAV1IAsgCWsgBXUQmQEiDhAMDQULIAJFIARFckUEQAJAIAQtAABFDQAgACAMIAQgDhAOIhBBh4ABEIMCQX9KDQAgACAQEAsMBgsgBBBDIARqQQFqIQQLIAAgASACIA5Bh4ABEJsBIQYgAkEBaiECIAZBAE4NAQwECwsgACABQYcBIAxBh4ABEBpBAEgNAiAAIAFB1wAgAygCACAJayAFda1Bh4ABEBpBAEgNAiAAIAFB2AAgDUGHgAEQGkEASA0DCyAAIAMQGSABIQ8MBAtCgICAgCAhAUKAgICAMCEMCyAAIAwQCyAAIA0QCwsgACABEAsgACADEBkMAQsgACANEAsLIAhBEGokACAPCy8BAX8DQCABQQd2IgIEQCAAIAFBgAFyQf8BcRAPIAIhAQwBCwsgACABQf8AcRAPC18AIABCKIZCgICAgICAwP8AgyAAQjiGhCAAQhiGQoCAgICA4D+DIABCCIZCgICAgPAfg4SEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEC10BBH8gASEDAkADQCAEQQRLIAMgAk9yDQEgAy0AACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkGAAXENAAsgACAFNgIAIAMgAWsPCyAAQQA2AgBBfwtdAQF/AkAgASgCBEF/TARAIAAgAUEQaiACQQF0ECQaDAELIAJBACACQQBKGyECIAFBEGohAQNAIAIgA0YNASAAIANBAXRqIAEgA2otAAA7AQAgA0EBaiEDDAALAAsLsQEBAn8jAEEQayIDJAACQAJAAkACQAJAAkACQCABQiCIpyICQQhqDggCAAMDAwQBAQMLIAGnIgIpAgRCgICAgICAgIDAAFQNBCAAIAIQoAMMBQsgAC0AaEECRg0EIAGnQQhqIgIQRyACIABB2ABqIgIgAigCBBCDBSAALQBoDQQgABDwCAwECyAAIAGnEKADDAMLIAMgAjYCACADEPkICxABAAsgACACECALIANBEGokAAuxAQECfyMAQRBrIgYkAAJAAkAgAhAhRQ0AIAKnIgcvAQZBDEcNACAHLQApQQxHDQAgACABIAMgAwR/IAQFIAZCgICAgDA3AwggBkEIagsgBSAHLgEqIAcoAiQRFAAhAgwBCwJAIAAgAiABIAMgBBAjIgIQDEUEQCACECENASAAIAIQCyAAQaDGAEEAEBULIAVBADYCAEKAgICA4AAhAgwBCyAFQQI2AgALIAZBEGokACACCxQBAX4gACABECkhAiAAIAEQCyACCxwBAX8gAEKAgICAcFoEfyAApy0ABUEHdgVBAAsLDQAgACABIAJBABDbAQtCAQF8RAAAAAAAAPh/IAAgARDoBSICIAG9QoCAgICAgID4/wCDQoCAgICAgID4/wBRGyACIACZRAAAAAAAAPA/YRsLTQEBfkHwpgQoAgAEQEH4pgQpAwAiAFBFBEBB9KYEKAIAIAAQCwtB9KYEKAIAEKIDQfSmBEEANgIAQfCmBCgCABCwBUHwpgRBADYCAAsLewEBfgJAAn4gBEEEcQRAQSYhAiAAIAEQXwwBC0ElIQIgACABECkLIgEQDA0AIAAgAhCgASIFEAwNACAAQRAQLiICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBSACEIcBIAUPCyAAIAUQCwsgACABEAtCgICAgOAACygBAX4gACABEDIhAiAAIAEQ4AcEfiAAQa7KACACQbDKABC9AQUgAgsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQKCEBA0AgAkUEQEEADwsgASACQX9qIgRBA3RqIgUoAgAhAiAFKAIEQTZHBEAgAkH///8fcSECDAELC0EBIQECQCACQf////8DSw0AIAMoAhQgBEEDdGopAwAiAEKAgICAcINCgICAgJB/Ug0AIACnKAIEQf////8HcUEARyEBCyABCw0AIAAgAUHeyQAQxgELUAIBfwF+AkAgACABQekAIAFBABATIgQQDEUEQCAAIAQQLSEDIAAgAUHAACABQQAQEyIBEAxFDQELQoCAgIDgACEBQQAhAwsgAiADNgIAIAELHgAgASAANgIEIAAgAjYCBCAAIAE2AgAgAiAANgIAC8QBAQR/IAGnIgUgAjYCICAFQgA3AiQCQCACKAI8IgZFDQACQCAAIAZBAnQQaiIIRQ0AIAUgCDYCJEEAIQUDQCAFIAIoAjxODQIgAigCJCAFQQN0aiIHLwECIQYCQCAHLQAAIgdBAXEEQCAAIAQgBiAHQQF2QQFxEPoDIgYNAQwDCyADIAZBAnRqKAIAIgYgBigCAEEBajYCAAsgCCAFQQJ0aiAGNgIAIAVBAWohBQwACwALIAAgARALQoCAgIDgACEBCyABC64DAQh/IAEoAggiBkEAIAZBAEobIQQCQAJAA0AgBCAFRg0BIAVBAnQhByAFQQFqIQUgByABKAIAaigCACACRw0AC0EAIQQMAQtBfyEEIAAgAUEEIAFBBGogBkEBahB8DQAgASABKAIIIgVBAWo2AgggASgCACAFQQJ0aiACNgIAQQAhBSADQQBHIQkgAUEQaiEKIAFBDGohBgNAAkAgBSACKAIgTgRAQQAhBEEAIQUDQCAFIAIoAixODQQgBUECdCEDIAVBAWohBSAAIAEgAigCECADIAIoAihqKAIAQQN0aigCBEEBEIUFRQ0ACwwBCyACKAIcIgggBUEUbCILaiIHKAIQIgRBFkYgCXFFBEACQAJ/IAEgBBDuByIEQX9MBEAgACAGQQwgCiABKAIUQQFqEHwNBCABIAEoAhQiBEEBajYCFCABKAIMIARBDGxqIgQgCCALaiIIKAIQNgIAAkAgA0UEQCAIKAIIRQ0BCyAEQQhqDAILIARBCGohBAwCCyAGKAIAIARBDGxqQQhqCyEEQQAhBwsgBCAHNgIACyAFQQFqIQUMAQsLQX8PCyAEC18BBH8DQCAFIAJIBEAgASAFaiIGLQAAIgRBD2ogBCAEQbEBSxsgBCADG0ECdCIEQZAxai0AACEHIARBkzFqLQAAQWlqQQRNBEAgACAGKAABEPIBCyAFIAdqIQUMAQsLC0gBA38gAkEAIAJBAEobIQIDQCACIANGBEBBAA8LIAEgA2ohBCADQQF0IQUgA0EBaiEDIAAgBWovAQAgBC0AAGsiBEUNAAsgBAtVAQJ/IAEEQAJAIAAoAgQiAyABaiAAKAIISw0AIAEQnwIiAUUNACAAIANBCGo2AgQgACAAKAIAQQFqNgIAIAEhAgsgAg8LQdYfQaENQZ4NQeAfEAAAC0kBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0H7HkGhDUH54wJBhx8QAAALEQAgABDbByAAENcHIAAQzgcLGAEBfyABpygCICIDBEAgACADIAIRAwALC54NAgd/AX4jAEEQayIGJAAgASgCyAEiBEEAIARBAEobIQMDQCACIANGRQRAIAEoAswBIAJBA3RqQX82AgQgAkEBaiECDAELCyABKAI8BEAgASgCzAFBfjYCDAtBACECIAEoAnwiA0EAIANBAEobIQMCfgJAAkACQANAIAIgA0YEQAJAQQIhAiAEQQIgBEECShshBQNAAkAgAiAFRgRAQQAhAgNAIAIgA0YNAgJAIAEoAnQgAkEEdGoiBCgCCEF/Sg0AIAQoAgQiBUECSA0AIAQgASgCzAEiBCAEIAVBA3RqKAIAQQN0aigCBDYCCAsgAkEBaiECDAALAAsgASgCzAEiByACQQN0aiIEKAIEQX9MBEAgBCAHIAQoAgBBA3RqKAIENgIECyACQQFqIQIMAQsLIAEoAkQEQCAAIAEQ+wYLIAEoApQDBEAgACABEPoGDQELIAFBEGohBSABKAIUIQICQANAIAIgBUcEQCACKAIEIQQgAkFwaigCACEDIAAgAkFoahCMBSIJEAwNAyADQX9MDQIgASgCtAIgA0EDdGogCTcDACAEIQIMAQsLIAAgARD5Bg0BIAAgARD4Bg0BIAAgASAGQQxqEPcGQQBIDQFBwABB2AAgAS0AbkECcSIEGyIHIAEoArgCQQN0aiECIAACfyAEBEAgAiABKAJERQ0BGgsgASgCfCABKAKIAWpBBHQgAmoLIgQgASgCwAJBA3RqIgUgASgChAJqEGoiA0UNASADQQE2AgAgAyADIAVqIgU2AhQgAyABKAKEAiIINgIYIAUgASgCgAIgCBAkGiAAIAEoAoACEBkgAUEANgKAAiADIAEoAnA2AhwgASgCfCIFIAEoAogBIghqQQFIDQYgAS0AbkECcUUNBCABKAJEDQRBACECA0AgAiAFTgRAQQAhAgNAIAIgASgCiAFOBEBBACECA0AgAiABKALAAk4NCiAAIAJBA3QiBSABKALIAmooAgQQEiABKALIAiAFakEANgIEIAJBAWohAgwACwAFIAAgASgCgAEgAkEEdGooAgAQEiACQQFqIQIMAQsACwAFIAAgASgCdCACQQR0aigCABASIAJBAWohAiABKAJ8IQUMAQsACwALQfOVAUGhDUGk/QFBgpYBEAAACwUgASgCdCACQQR0aiIFIAEoAswBIAUoAgRBA3RqIgUoAgQ2AgggBSACNgIEIAJBAWohAgwBCwsgACABEIADQoCAgIDgAAwDCyADIAIgA2oiAjYCICACIAEoAoABIAhBBHQQJBogAygCICABKAKIAUEEdGogASgCdCABKAJ8QQR0ECQaCyADIAEoAnw7ASogAyABKAKIATsBKCADIAEoAowBOwEsIAAgASgCgAEQGSAAIAEoAnQQGQsgAyABKAK4AiICNgI4IAIEQCADIAMgB2oiBTYCNCAFIAEoArQCIAJBA3QQJBoLIAAgASgCtAIQGSABQQA2ArQCIAMgBigCDDsBLgJAIAEtAG5BAnEEQCAAIAEoAuwCEBIgAUH0AmoQogEMAQsgAyADLwARQYAIcjsAESADIAEoAuwCNgJAIAMgASgC8AI2AkQgAyAAIAEoAvQCIAEoAvgCEJkCIgI2AlAgAkUEQCADIAEoAvQCNgJQCyADIAEoAvgCNgJMIAMgASgCjAM2AlQgAyABKAKQAzYCSAsgASgCzAEiAiABQdABakcEQCAAIAIQGQsgAyABKALAAiICNgI8IAIEQCADIAMgBGoiBDYCJCAEIAEoAsgCIAJBA3QQJBoLIAAgASgCyAIQGSABQQA2AsgCIAMgAy8AEUF+cSABLwE0QQFxciICOwARIAMgAS8BOEEBdEECcSACQX1xciICOwARIAMgAS0AbjoAECADIAEvAWBBAnRBBHEgAkF7cXIiAjsAESAD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RQRAIABBEBAuIgUNAiAAIAcQCwtBfyEGIANFDQAgACABKQMAEAsLIAAoAhAgBBDoBCAGDwsgBCAEKAIAQQFqNgIAIAUgBDYCCCAFIAIQDjcDACAHIAUQhwEgACAHQS9BARCeAyABIANBA3RqIAc3AwAgA0EBaiEDDAALAAt0AQN/IAFByABqIQMgASgCTCECA0AgAiADRkUEQCACKAIEIQQgACACKQMQECYgACACKQMYECYgACACKQMgECYgACACKQMoECYgACACECAgBCECDAELCyABKAIEQX5xQQRHBEAgACABQQhqEP4CCyAAIAEQIAsgAQF/IAEgASgCAEF/aiICNgIAIAJFBEAgACABEJwHCwvvAgIEfwF+IwBBMGsiAiQAAkAgACABQShqELkCIgYQDEUEQCACIAEoAmRBeGoiAykDADcDICADQoCAgIAwNwMAIAYQEQRAIAAgACABKQMQQoCAgIAwQQEgAkEgahAjEAsgACACKQMgEAsgACgCECABENIDDAILIAAgBhALQQAhAyAAIAApA1BBASACQSBqQQAQiwIhBiAAIAIpAyAQC0ECIQQCQCAGEAwNACAAIAEgAkEQahCZBwRAIAAgBhALDAELIAJCgICAgDA3AwggAkKAgICAMDcDACAAIAYgAkEQaiACELICIQUgACAGEAsDQCADQQJGRQRAIAAgAkEQaiADQQN0aikDABALIANBAWohAwwBCwsgBUEAR0EBdCEEIAVFIQMLIAMgBEVyDQELIAIgABCPATcDKCAAIAEpAxhCgICAgDBBASACQShqECMhBiAAIAIpAygQCyAAKAIQIAEQ0gMgACAGEAsLIAJBMGokAAu3AgIFfwF+IwBBMGsiBSQAAkAgAUEqEEEiBEUNACAEKAIADQAgACAEQRhqIAIQDiICEB8gBCADQQFqIgY2AgACQCAGQQJHDQAgBCgCFA0AIAAoAhAiBigCkAEiB0UNACAAIAEgAkEAIAYoApQBIAcRMQALIARBBGoiByADQQN0aiIIKAIEIQQgA0EAR61CgICAgBCEIQEDQCAEIAhGRQRAIAQoAgQhBiAFIAQpAwg3AwAgBSAEKQMQNwMIIAQpAxghCSAFIAI3AyAgBSABNwMYIAUgCTcDECAAQS1BBSAFEPwCIAQQRyAAKAIQIAQQswIgBiEEDAELCyAHQQEgA2tB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ASAAELYCC+ICAQJ/IAAoAhAQ8QgCQCAAQTAQLiIDBEAgA0EANgIgIANBADYCGCADQQE6AAUgAyACOwEGIAMgATYCECADIAAgASgCHEEDdBAuIgQ2AhQgBA0BIAAgAxAZCyAAKAIQIAEQnAJCgICAgOAADwsCQAJAAkACQAJAAkACQAJAIAJBf2oOHgcABgQEBAQCBgQGAQYGBgYGBQYGAgICAgICAgICAwYLIANBADYCKCADQgA3AyAgAyADLQAFQQxyOgAFIAEgACgCJEcEfyAAIANBMEEKEH4FIAQLQgA3AwAMBgsgBEKAgICAMDcDAAwFCyADQgA3AiQgAyADLQAFQQxyOgAFDAQLIANCADcCJAwDCyADQoCAgIAwNwMgDAELIANCADcDIAsgACgCECgCRCACQRhsaigCFEUNACADIAMtAAVBBHI6AAULIANBATYCACAAKAIQIANBABC8ASADrUKAgICAcIQLQAAgACABIAJ0IAJrQRFqEOcBIgBFBEBBAA8LIABBADYCDCAAQQE2AgAgACABQf////8HcSACQR90cq03AgQgAAvXAQIBfwF+IwBB0ABrIgMkAAJAAn4gARBdBEAgAyABEHk2AgAgA0EQakHAAEHxDSADEFQaIAAgA0EQahByDAELIAAoAhAiACgCLCABTQ0BAkACQCAAKAI4IgAgAUECdGooAgAiASkCBCIEQoCAgICAgICAQINCgICAgICAgIDAAFENACACRQ0BIASnQYCAgIB4Rw0AIAAoArwBIQELIAGtQoCAgICQf4QQDgwBCyABrUKAgICAgH+EEA4LIQQgA0HQAGokACAEDwtByi9BoQ1BhBhB3y8QAAALCgAgAEEBdEEBcgtoAQF/IAEoAgQhAyAAKAIEQQBOBEAgA0EATgRAIABBEGogAUEQaiACEHQPC0EAIAFBEGogAEEQaiACEIcFaw8LIABBEGohACADQQBOBEAgACABQRBqIAIQhwUPCyAAIAFBEGogAhD8BwsxAQF/IAAoAgQiAkF/TARAIABBEGogAkH/////B3EgARD9Bw8LIABBEGogAiABEMwFC2ACAn8BfiMAQRBrIgIkAAJAIAFBAE4EQCABEJEBIQMMAQsgAiABNgIAIAJBBWpBC0HxDSACEFQaIAAgAkEFahByIgQQDA0AIAAoAhAgBKdBARDNAiEDCyAC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gIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALiQQCAn8EfgJAIAG9IgZCAYYiBVAgBkL///////////8Ag0KAgICAgICA+P8AVnJFBEAgAL0iB0I0iKdB/w9xIgJB/w9HDQELIAAgAaIiACAAow8LIAdCAYYiBCAFVgRAIAZCNIinQf8PcSEDAn4gAkUEQEEAIQIgB0IMhiIEQgBZBEADQCACQX9qIQIgBEIBhiIEQn9VDQALCyAHQQEgAmuthgwBCyAHQv////////8Hg0KAgICAgICACIQLIQQCfiADRQRAQQAhAyAGQgyGIgVCAFkEQANAIANBf2ohAyAFQgGGIgVCf1UNAAsLIAZBASADa62GDAELIAZC/////////weDQoCAgICAgIAIhAshBiACIANKBEADQAJAIAQgBn0iBUIAUw0AIAUiBEIAUg0AIABEAAAAAAAAAACiDwsgBEIBhiEEIAJBf2oiAiADSg0ACyADIQILAkAgBCAGfSIFQgBTDQAgBSIEQgBSDQAgAEQAAAAAAAAAAKIPCwJAIARC/////////wdWBEAgBCEFDAELA0AgAkF/aiECIARCgICAgICAgARUIQMgBEIBhiIFIQQgAw0ACwsgB0KAgICAgICAgIB/gyEEIAJBAU4EfiAFQoCAgICAgIB4fCACrUI0hoQFIAVBASACa62ICyAEhL8PCyAARAAAAAAAAAAAoiAAIAQgBVEbC6MMAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkEDcUUNASAAKAIAIgMgAWohASAAIANrIgBB+KcEKAIARwRAQfSnBCgCACEEIANB/wFNBEAgACgCCCIEIANBA3YiA0EDdEGMqARqRxogBCAAKAIMIgJGBEBB5KcEQeSnBCgCAEF+IAN3cTYCAAwDCyAEIAI2AgwgAiAENgIIDAILIAAoAhghBgJAIAAgACgCDCICRwRAIAQgACgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgAEEUaiIDKAIAIgQNACAAQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQECQCAAIAAoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAMLIAZBEEEUIAYoAhAgAEYbaiACNgIAIAJFDQILIAIgBjYCGCAAKAIQIgMEQCACIAM2AhAgAyACNgIYCyAAKAIUIgNFDQEgAiADNgIUIAMgAjYCGAwBCyAFKAIEIgJBA3FBA0cNAEHspwQgATYCACAFIAJBfnE2AgQgACABQQFyNgIEIAUgATYCAA8LAkAgBSgCBCICQQJxRQRAIAVB/KcEKAIARgRAQfynBCAANgIAQfCnBEHwpwQoAgAgAWoiATYCACAAIAFBAXI2AgQgAEH4pwQoAgBHDQNB7KcEQQA2AgBB+KcEQQA2AgAPCyAFQfinBCgCAEYEQEH4pwQgADYCAEHspwRB7KcEKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LQfSnBCgCACEDIAJBeHEgAWohAQJAIAJB/wFNBEAgBSgCCCIEIAJBA3YiAkEDdEGMqARqRxogBCAFKAIMIgNGBEBB5KcEQeSnBCgCAEF+IAJ3cTYCAAwCCyAEIAM2AgwgAyAENgIIDAELIAUoAhghBgJAIAUgBSgCDCICRwRAIAMgBSgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgBUEUaiIDKAIAIgQNACAFQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgMEQCACIAM2AhAgAyACNgIYCyAFKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsgACABQQFyNgIEIAAgAWogATYCACAAQfinBCgCAEcNAUHspwQgATYCAA8LIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQf8BTQRAIAFBA3YiAkEDdEGMqARqIQECf0HkpwQoAgAiA0EBIAJ0IgJxRQRAQeSnBCACIANyNgIAIAEMAQsgASgCCAshAyABIAA2AgggAyAANgIMIAAgATYCDCAAIAM2AggPC0EfIQMgAEIANwIQIAFB////B00EQCABQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgMgA0GA4B9qQRB2QQRxIgN0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAIgA3IgBHJrIgJBAXQgASACQRVqdkEBcXJBHGohAwsgACADNgIcIANBAnRBlKoEaiECAkACQEHopwQoAgAiBEEBIAN0IgdxRQRAQeinBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEAQRkgA0EBdmsgA0EfRht0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuFAQECfyAARQRAIAEQnwIPCyABQUBPBEBBhKcEQTA2AgBBAA8LIABBeGpBECABQQtqQXhxIAFBC0kbEIMJIgIEQCACQQhqDwsgARCfAiICRQRAQQAPCyACIABBfEF4IABBfGooAgAiA0EDcRsgA0F4cWoiAyABIAMgAUkbECQaIAAQ/wEgAgvYAwICfwJ+IwBBIGsiAiQAAkAgAUL///////////8AgyIFQoCAgICAgMD/Q3wgBUKAgICAgIDAgLx/fFQEQCABQgSGIABCPIiEIQQgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhBAwCCyAEQoCAgICAgICAQH0hBCAAQoCAgICAgICACIVCAFINASAEQgGDIAR8IQQMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCEEDAELQoCAgICAgID4/wAhBCAFQv///////7//wwBWDQBCACEEIAVCMIinIgNBkfcASQ0AIAJBEGogACABQv///////z+DQoCAgICAgMAAhCIEIANB/4h/ahB7IAIgACAEQYH4ACADaxDPAiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICAgICAf4OEvwuGEQIFfwx+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+IhCIEIAIQtQEgBUEgaiAEQgAgBSkDOH0QtQEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC1ASAFIARCACAFKQMYfRC1ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/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+fCIEIAIgDH58IgJCIIggAiAEVK0gCyAKVK0gBCALVK18fEIghoR8IgsgD1StfCALIBUgDSATfiIEIAwgEH58IgxCIIggDCAEVK1CIIaEfCIEIBVUrSAEIAJCIIZ8IARUrXx8IgQgC1StfCICQv////////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//wBWIARCgICAgICAwP//AFEbDQBBACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEAgAEIAVCABIAJTIAEgAlEbDQEgACABIAKFhEIAUg8LIABCAFYgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwsuAgF/AXwjAEEQayIBJAAgASAAEIsJIAEpAwAgASkDCBDXBSECIAFBEGokACACC/ADAgR/AX4CQAJAAkACfyAAKAIEIgEgACgCaEkEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFsLIgFBVWoOAwEAAQALIAFBUGohAgwBCyABQS1GIQQCQAJ/IAAoAgQiASAAKAJoSQRAIAAgAUEBajYCBCABLQAADAELIAAQWwsiAUFQ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FUKAgICA4AAhAQsgAQsDAAELCQAgACABEKYCC0YBAn8jAEEQayICJABBfyEDAkAgACACQQxqIAEQwwENACACKAIMIgNBfmpBI0kNACAAQea0ARBpQX8hAwsgAkEQaiQAIAMLigECAX8BfiMAQRBrIgIkAAJ+IAAgARCmAiIGEAwEQCAGDAELQQohBQJAAkAgBA0AIAMpAwAiARARDQAgACABEI0GIgVBAEgNAQtCgICAgOAAIAAgAkEIaiAGEFkNARogACACKwMIIAVBAEEAEMICDAELIAAgBhALQoCAgIDgAAshASACQRBqJAAgAQvDAQIBfgF8IwBBEGsiAiQAAkAgACABEKYCIgQQDARAIAQhAQwBC0KAgICA4AAhASAAIAIgBBBZDQACQAJAIAMpAwAiBBARBEAgAisDACEFDAELIAAgAkEMaiAEEMMBDQIgAisDACIFvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0BCyAAIAUQFhA+IQEMAQsgAigCDCIDQX9qQeQATwRAIABBwLQBEGkMAQsgACAFQQogA0EBEMICIQELIAJBEGokACABC58BAgF+AXwjAEEQayICJAACQCAAIAEQpgIiBBAMBEAgBCEBDAELQoCAgIDgACEBIAAgAiAEEFkNACAAIAJBDGogAykDABDDAQ0AIAIoAgwiA0HlAE8EQCAAQcC0ARBpDAELIAIrAwAiBZlEUO/i1uQaS0RmQQFzRQRAIAAgBRAWED4hAQwBCyAAIAVBCiADQQIQwgIhAQsgAkEQaiQAIAELxQEDAX8BfgF8IwBBEGsiAiQAAkAgACABEKYCIgUQDARAIAUhAQwBC0KAgICA4AAhASAAIAIgBRBZDQAgACACQQxqIAMpAwAQwwENACACKwMAIga9QoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgACAGEBYQPiEBDAELAn9BBCADKQMAEBENABogAigCDCIDQeUATwRAIABBwLQBEGkMAgsgA0EBaiEEQQULIQMgACAGQQogBCADEMICIQELIAJBEGokACABC3sBAn9CgICAgDAhAQJAIAJBf2pBAUsNACAAIAMpAwBCgICAgDBCgICAgDAQ7gMiARAMDQAgACABELgBIQQgACABEAsgBEUEQEKAgICA4AAPCyAEIAJBAkYEfyAAIAMpAwgQ9gEFQQALEAYgACAEEDdCgICAgDAhAQsgAQubAgIDfwF+IwBBEGsiBCQAIARBADoAD0KAgICAMCEBAkAgAkF/akEBSw0AAkAgACADKQMAELgBIgVFDQACQCACQQJHDQAgACADKQMIQoCAgIAwQoCAgIAwEO4DIgcQDARAIAAgBRA3IAchAQwDCyAAIAcQuAEhBiAAIAcQCyAGDQAgACAFEDcMAQsgBSAGIARBD2oQByECIAAgBRA3IAAgBhA3IAJFDQECfiAELQAPRQRAIAAgAiACEENBhrMBEO8DDAELAkAgAEEDEKABIgEQDARAQoCAgIAgIQEMAQsgACABQTMgACACEHJBAxAaGgsgACABEJABQoCAgIDgAAshASACEP8BDAELQoCAgIDgACEBCyAEQRBqJAAgAQtWACMAQRBrIgAkACAAQQhqQQAQAhoCfiAANAIMIAA0AghCwIQ9fnwiAUKAgICACHxC/////w9YBEAgAUL/////D4MMAQsgAbkQFgshASAAQRBqJAAgAQvzAQEEfyMAQSBrIgIkACAAIAMpAwAQLCIBEAxFBEAgACACQQhqQQAQQhogAaciBSgCBEH/////B3EhBkEAIQMDQCADIAZORQRAAkAgBSADEDEiBEElRw0AAkAgA0EGaiAGSg0AIAUgA0EBahAxQfUARw0AIAUgA0ECakEEELMDIgRBAEgNACADQQVqIQMMAQtBJSEEIANBA2ogBkoNACAFIANBAWpBAhCzAyIEQSUgBEF/SiIHGyEEIANBAmogAyAHGyEDCyACQQhqIAQQkgEaIANBAWohAwwBCwsgACABEAsgAkEIahA4IQELIAJBIGokACABC7IBAQR/IwBBIGsiAiQAIAAgAykDABAsIgEQDEUEQCAAIAJBCGogAaciBCgCBEH/////B3EQQhogBCgCBEH/////B3EhBkEAIQMDQCADIAZHBEACQCAEIAMQMSIFIgdB/wFMBH9BwLIBIAdBxQAQgQIFQQALBEAgAkEIaiAFEJIBGgwBCyACQQhqIAUQhAILIANBAWohAwwBCwsgACABEAsgAkEIahA4IQELIAJBIGokACABC0sBAX8CQCAAQf8BSg0AQQEhAiAAQVBqQQpJIABBX3FBv39qQRpJcg0AQZiyASAAQQkQgQINAEEAIQIgAQ0AIAAQsgRBAEchAgsgAguqAwEFfyMA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RQ0AIAItABJBBHFFDQAgACACKAJAEDIhAwsgAwsoAEKAgICA4AAgACADKQMAIAEQvQUiAEEAR61CgICAgBCEIABBAEgbC6wBAgJ/AX5CgICAgOAAIQYgACABEGYEfkKAgICA4AAFQdelASECAkAgAaciAy8BBhD1AUUNAAJAIAMoAiAiAy8AESIEQYAIcUUNACADKAJUIgVFDQAgACAFIAMoAkgQ/AEPCyAEQQR2QQNxQX9qIgNBAksNACADQQJ0QZjcAWooAgAhAgsgACACIAAgAUE2IAFBABATIgEQEQR+IABBLxAyBSABC0GNpgEQvQELC/IDAwV/A34DfAJAIAAgARBmDQAgACAAKQMwQQ4QUCIKEAwNACAKpyIGIAEQsgFBBHRBEHEgBi0ABUHvAXFyOgAFAkAgAEEAIAJBf2oQSyICQQN0QRhqEC4iBEUNACAEIAEQDiIBNwMAIAMpAwAQDiEJIAQgAjYCECAEIAk3AwggAkEAIAJBAEobIQcgBEEYaiEIA0AgBSAHRwRAIAggBUEDdGogAyAFQQFqIgVBA3RqKQMAEA43AwAMAQsLIAYgBDYCICAAIAEQ5ggiA0EASA0AAkAgA0UNACAAIAFBMCABQQAQEyIJEAwNASAJQv////8PWARAIAmnIgMgAmtBACADIAJKG60hCwwBCyAJEFNBB0YEQAJAIAkQSiINvUL///////////8Ag0KAgICAgICA+P8AVg0AIA2dIg0gArciDmUNACANIA6hIQwLIAy9An8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgK3vVEEQCACrSELDAILIAwQFiELDAELIAAgCRALCyAAIApBMCALQQEQGhogACABQTYgAUEAEBMiARAMDQAgAEHQpQEgARCaAQR+IAEFIAAgARALIABBLxAyC0G+FRC9ASIBEAwNACAAIApBNiABQQEQGhogCg8LIAAgChALC0KAgICA4AALMAAgAkEATARAIAAgAUKAgICAMEEAQQAQIw8LIAAgASADKQMAIAJBf2ogA0EIahAjC8IBAgF/AX4jAEEgayICJABCgICAgOAAIQYCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQADQCAAIAIgAacgAxBaIgVBAEgNAiAFBEBCgICAgDAhBiACLQAAQRBxBEAgAkEYaiACQRBqIAQbKQMAEA4hBgsgACACEFIMAwsgACABEI0EIgEQDA0CIAEQKgRAQoCAgIAwIQYMAwsgABCOAUUNAAsMAQtBACEDCyAAIAMQEiAAIAEQCyACQSBqJAAgBguVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARAMRQRAIAAgBRBmRQRAIAAgBhA6IgINAgsgACABEAsLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCyAAIAIQEkKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBFFBEAgARAqRQ0BCyAAECdCgICAgOAADwsCQCACECENACACECoNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJgCQQBIGwslAQF+IAAgARApIgEQDARAIAEPCyAAIAEQ+QEhAiAAIAEQCyACC5MBAgF/AX4jAEEgayICJABCgICAgOAAIQUCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQAgACACIAGnIAMQWiIEQQBIDQEgBEUEQEKAgICAECEFDAILIAI1AgAhBSAAIAIQUiAFQgKIQgGDQoCAgIAQhCEFDAELQQAhAwsgACADEBIgACABEAsgAkEgaiQAIAULiAEBAn4gAykDACIFECFFBEBCgICAgBAPCwJAIAAgARApIgQQDEUEQCAEpyECIAUQDiEBA0AgACABEI0EIgEQDEUEQCABECoiAyACIAGnRnINAyAAEI4BRQ0BCwsgACABEAsgACAEEAsLQoCAgIDgAA8LIAAgARALIAAgBBALIANFrUKAgICAEIQLZQEBfkKAgICA4AAhBAJAIAAgAykDABA6IgJFDQAgACABECkiARAMBEAgACACEBIgAQ8LIABBACABpyACEFohAyAAIAIQEiAAIAEQCyADQQBIDQAgA0EAR61CgICAgBCEIQQLIAQLCAAgACABECkLDwAgACABQTdBAEEAELwCC5wCAQV+IwBBEGsiAiQAIAMpAwAhBQJAIAAQPSIBEAwEQCABIQUMAQtCgICAgDAhBwJAAkAgACAFQQAQ8wEiBBAMDQAgACAEQeoAIARBABATIgcQDA0AA0AgACAEIAcgAkEMahCsASIGEAwNASACKAIMBEAgASEFDAMLAkACQCAGECFFBEAgABAnDAELIAAgBkEAEHgiCBAMDQAgACAGQQEQeCIFEAwEQCAAIAgQCwwBCyAAIAEgCCAFQYeAARDDAkF/Sg0BCyAAIAYQCwwCCyAAIAYQCwwACwALQoCAgIDgACEFIAQQIQRAIAAgBEEBELABGgsgByEGIAQhByABIQQLIAAgBhALIAAgBxALIAAgBBALCyACQRBqJAAgBQtIAEEvIQIgACADKQMAIgEQU0F/RgR/IAGnLwEGIgJBKUYEQEENQSkgACABEDsbIQILIAAoAhAoAkQgAkEYbGooAgQFQS8LEDIL8wECBH8BfiMAQTBrIgIkAAJAIAMpAwAiCRAhRQRAQoGAgIAQIQEMAQtCgICAgOAAIQEgACACQSxqIAJBKGogCaciCEEDEI0BDQAgAigCLCEGIAIoAighB0EAIQMCQANAIAMgB0cEQCAAIAJBCGogCCAGIANBA3RqKAIEEFoiBUEASA0CAkAgBUUNACAAIAJBCGoQUiACKAIIIgVBAXFFQQAgBEUgBUECcUVyGw0AQoCAgIAQIQEMAwsgA0EBaiEDDAELCyAAIAkQngEiA0EASA0BIANBAUetQoCAgIAQhCEBCyAAIAYgBxBoCyACQTBqJAAgAQudAQIBfwF+QoCAgIAwIQECQAJAIAAgAykDABApIgUQDA0AIAJBASACQQFKGyEEQQEhAgNAIAIgBEYNAgJAIAMgAkEDdGopAwAiARAqDQAgARARDQAgACABECkiARAMDQIgACAFIAFCgICAgDBBARCoBQ0CIAAgARALCyACQQFqIQIMAAsACyAAIAUQCyAAIAEQC0KAgICA4AAhBQsgBQsbACAAIAMpAwAgAykDCBBYQQBHrUKAgICAEIQLmwICA38DfiMAQSBrIgIkAEKAgICA4AAhByAAIAMpAwAQKSIIEAxFBEBCgICAgDAhAQJ+AkAgACACQRxqIAJBGGogCKdBAxCNAQ0AIAAQPSIBEAwNACACKAIcIQQgAigCGCEFQQAhAwNAIAMgBUcEQCAAIAQgA0EDdGoiBigCBBBkIgkQDA0CIAIgCTcDCCACIAg3AwAgAEKAgICAMEECIAJBABC7BCEHIAAgCRALIAcQDA0CIAcQEUUEQCAAIAEgBigCBCAHQYeAARAaQX9MDQMLIANBAWohAwwBCwsgACAEIAUQaCABDAELIAAgAigCHCACKAIYEGggACAIEAsgASEIQoCAgIDgAAshByAAIAgQCwsgAkEgaiQAIAcLbQACfgJAIAMpAwAiAUL/////b1gEQCAERQ0BIAAQJ0KAgICA4AAPC0KAgICA4AAgACABEIgEIgJBAEgNARogBARAIAJBAEetQoCAgIAQhA8LIAINACAAQaucAUEAEBVCgICAgOAADwsgARAOCwtPAAJAAkAgAykDACIBQv////9vWARAIARFBEBCgICAgBAPCyAAECcMAQsgACABEJ4BIgBBAE4NAQtCgICAgOAADwsgAEEAR61CgICAgBCECxAAIAAgAykDAEECQQAQ9AILEAAgACADKQMAQQFBABD0AgstAQF+QoCAgIDgACEBIAAgAykDACIEIAMpAwgQvQQEfkKAgICA4AAFIAQQDgsLQAACfgJAIAEQnAMiAkUNACACLQAQQQFxDQBCgICAgDAgAi0AEUEBcQ0BGgsgACABQQBBABDCBBpCgICAgOAACwt9AQJ+IAMpAwAiAUL/////b1gEQCAAECdCgICAgOAADwsgAykDECEGQoCAgIDgACEFAkAgACADKQMIEDoiAkUNACAAIAEgAiAGIARFQQ50ELwEIQMgACACEBIgA0EASA0AIAQEQCADQQBHrUKAgICAEIQPCyABEA4hBQsgBQsnACAAIAMpAwAiASADKQMIQQEQmAJBAEgEQEKAgICA4AAPCyABEA4LOAAgAykDACIBQiCIpyICQX9GIARFQQAgAkF+cUECRxtyRQRAIAAQJ0KAgICA4AAPCyAAIAEQ+QELYgEBfgJAIAMpAwAiARAhDQAgARAqDQAgAEHAoQFBABAVQoCAgIDgAA8LAkAgACABEFEiARAMRQRAIAMpAwgiBBARDQEgACABIAQQvQRFDQEgACABEAsLQoCAgIDgAA8LIAELuAEBAn4gARAhRQRAIAAQJ0KAgICA4AAPC0KAgICA4AAhBQJ+IAAgAUE2IAFBABATIgQQEQRAIABBjgEQMgwBCyAAIAQQPgsiBBAMBH5CgICAgOAABQJ+IAAgAUEzIAFBABATIgEQEQRAIABBLxAyDAELIAAgARA+CyIBEAwEQCAAIAQQC0KAgICA4AAPCwJAIAQQ9AENACABEPQBDQAgAEG+FSAEQZCcARC9ASEECyAAIAQgARC/AgsLTgEBfyAA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AgwgAygCCCIEayEGAkACQAJAAkAgAygCBEF/ag4EAAEDAgMLIAIoArAFIARqIAZB/wFxEMEEDAILIAIoArAFIARqIAZB//8DcRD4AgwBCyACKAKwBSAEaiAGEFwLIANBEGohAyAFQQFqIQUgASgC1AIhCQwACwALIAAgASgCzAIQGSABQQA2AswCIAAgASgCpAIQGSABQQA2AqQCIAEQ1QYgACABKALYAhAZIAFBADYC2AIgDRCiASANIAIpA8AFNwIQIA0gAikDuAU3AgggDSACKQOwBTcCACABQQE2AqACQQAgDSgCDEUNFBogABDHAQwTCyAGIAM2AgALIAogAigCsAVqQX9qIAM6AAAgBigCBCIDIAIoArAFIApqaiIEIAQgBWogAigCtAUgBSAKaiADamsQ/QEgAiACKAK0BSAFazYCtAVBACEEIAEoAqwCIgNBACADQQBKGyEHIAEoAqQCIQMDQCAEIAdGBEAgASgC1AIhCSAGIQcgCCEEA0ACQCAEQQFqIgQgCU4EQEEAIQMgASgC4AIiBEEAIARBAEobIQQDQCADIARGDQIgASgC2AIgA0EDdGoiBygCACILIApLBEAgByALIAVrNgIACyADQQFqIQMMAAsACyAHIgNBEGohByADKAIYIgsgCkwNASADIAsgBWs2AhgMAQsLIAxBAWohDAwCCyADKAIMIgkgCkoEQCADIAkgBWs2AgwLIANBFGohAyAEQQFqIQQMAAsACyAGQRBqIQYgCEEBaiEIDAALAAtBnYoBQaENQc32AUGomQEQAAALIAIoApQFIgRBAE4EQCACIAQ2AsgFCyACKAKgBSEFIAIoApAFIQYgAigCmAVBl39qIAhGDQEgASAFQX8QbxogBiEDDAwLIAQhBgwJCyACQX82AoQFIAJBiAVqIAYgASAFIAJBzAVqIAJBhAVqELkDIgcQuAMEQCABIAdBfxBvGiAGIQMMCwsgAigCzAUiBEFYaiIFQQdLQQEgBXRBgwFxRXJFBEAgASAHQX8QbxogASACKAK0BSACKALIBRA0IAJBsAVqIARB/wFxEA8gASAKIAkgBiACQcgFahCpAiEDDAsLQesAIQUMCAsCQCAFQfB+akECTwRAIAVBlwFGDQEgBUG0AUcEQCAFQcABRw0DIAIgBigAATYCyAUgBCEDDAwLIAYoAAEiA0EASA0D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UQRAIAStDAELIAUQFgshASACQdAAaiQAIAELhQEBAXwjAEEQayICJAACfkKAgICA4AAgACACQQhqIAEQsAINABpCgICAgMB+IAIrAwgiBL1C////////////AINCgICAgICAgPj/AFYNABoCfiAEnSIEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CxDNA60LIQEgAkEQaiQAIAELdQEBfgJAIAEQIUUEQCAAECcMAQsCQCADKQMAIgQQmgFFDQAgACAEEDoiAkUNASAAIAIQEkERIQMCQAJAAkAgAkG6f2oOAwIDAQALIAJBFkcNAgtBECEDCyAAIAEgAxCQAw8LIABB4PcAQQAQFQtCgICAgOAAC2gBAXwjAEEQayICJAACfkKAgICA4AAgACACQQhqIAEQsAINABogAisDCCIEvQJ/IASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0MAQsgBBAWCyEBIAJBEGokACABC8UBAQF/IARBAXEhBiAFKQMAQTIQQSICKAIEIQUgAykDACEBAkACQAJAIARBAk4EQCAFQX5xQQRHDQIgAkEFNgIEIAYEQCAAIAIgARDPAwwCCyAAIAIgAUEBEPECDAELIAVBA0cNAiACIAY2AhQgARAOIQECQCAGBEAgACABEJABDAELIAIoAkRBeGogATcDAAsgACACEOYEC0KAgICAMA8LQZXpAEGhDUH1mAFB/OkAEAAAC0Gg6gBBoQ1B/pgBQfzpABAAAAuvAQEBfyMAQTBrIgMkACADIAI3AygCQCAAIAApA1BBASADQShqQQAQiwIiAhAMDQAgACABNQIAQoCAgIBwhCADQRBqQQAQ5AQEQCAAIAIQCwwBCyADQoCAgIAwNwMIIANCgICAgDA3AwAgACACIANBEGogAxCyAhogACACEAtBACEBA0AgAUECRg0BIAAgA0EQaiABQQN0aikDABALIAFBAWohAQwACwALIANBMGokAAuMAQEBfyMAQTBrIgMkACADIAI3AyggACAAKQNQQQEgA0EoakEAEIsCIgIQDEUEQCAAIAE1AgBCgICAgHCEIANBARDkBEUEQCADQoCAgIAwNwMYIANCgICAgDA3AxAgACACIAMgA0EQahCyAhogACADKQMAEAsgACADKQMIEAsLIAAgAhALCyADQTBq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AkEQaiQAIAEL8QEBAn4jAEEgayICJAAgAykDACEEAkAgACABQoCAgIAwEO8BIgUQDA0AAkAgACAEEDtFBEAgAiAEEA4iBDcDECACIAQQDjcDGAwBCyACIAQ3AwggAiAFNwMAQQAhAwNAIANBAkYNASACQRBqIANBA3RqIABBMkEBIANBAiACEOIBIgQ3AwAgBBAMBEAgA0EBRgRAIAAgAikDEBALCyAAIAUQC0KAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRALIAAgAUH/AEECIAJBEGoQvAIhBSAAIAIpAxAQCyAAIAIpAxgQCwsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhC8AiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBnRQ0AIAAgAUKAgICAMBDvASIGEAwEQCAGIQUMAQsgACACIAYQuAIhByAAIAYQCwJAIAcQDA0AIAAgASADIAIQsgIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAsgBEEBaiEEDAELCyADRQ0AIAAgBxALDAELIAchBQsgAkEQaiQAIAULbgICfwF+A0ACQAJAIANBAkYNACACIANBA3RqIAAgACkDMCADQS5qEFAiBTcDACAFEAxFDQFBfyEEIANBAUcNACAAIAIpAwAQCwsgBA8LIAEgASgCAEEBajYCACAFpyABNgIgIANBAWohAwwACwALCABCgICAgDAL3wECAX8DfiMAQRBrIgMkACABQQVGBEAgAikDECEEIAAgAikDGBD2ASEBIAMgAikDICIFNwMIIAMCfiAEEBEEQCAFEA4iBCABRQ0BGiAAIAQQkAFCgICAgOAADAELIAAgBEKAgICAMEEBIANBCGoQIwsiBDcDACAEEAwiAQRAIAMgABCPASIENwMAC0KAgICAMCEFIAAgAiABQQN0aikDACIGEBEEfiAEBSAAIAZCgICAgDBBASADECMhBSADKQMACxALIANBEGokACAFDwtBx+MAQaENQa3oAkHR4wAQAAALJgAgACABENIDIAAgASkDEBAmIAAgASkDGBAmIAEQnQIgACABECALgQEBA38CQCABQTIQQSIERQ0AIARBzABqIQMgBEHIAGohBQNAIAMo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BEAgAkHIAGogAyAGIAmnEFcaIAJByABqIAwQiQEaIAunKQIEQv////8HgyAJfKchBgsgBUEBaiEFDAELCyACQcgAaiADIAYgAygCBEH/////B3EQVxogAkHIAGoQOCERDAILQoCAgIAwIQxCgICAgDAhCkKAgICAMCELCyACQcgAahBFCyACQRBqEPAEIAAgEBALIAAgCxALIAAgChALIAAgDBALIAAgDRALIAAgDhALCyACQZABaiQAIBELkgEAIwBBIGsiAiQAAn4CQCABECFFBEAgABAnDAELIAAgAkEIakEAEEIaIAJBCGpBLxA8GgJAIAJBCGogACABQewAIAFBABATEIoBDQAgAkEIakEvEDwaIAJBCGogACABQe0AIAFBABATEIoBDQAgAkEIahA4DAILIAJBCGoQRQtCgICAgOAACyEBIAJBIGokACABC6YBAQN/IABBAjoAaCAAQdgAaiECIABB4ABqIQMDQCADIAAoAmQiAUcEQCABQXxqLQAAQQ5xBEAgARBHIAEgAhBNDAIFIAAgAUF4ahDCBQwCCwALCyAAQQA6AGggACgCXCEBAkADQCABIAJHBEAgAUF8ai0AAEEOcQ0CIAEoAgQhAyAAIAFBeGoQICADIQEMAQsLIAIQbg8LQf85QaENQYctQeA6EAAACz8BAX5CgICAgOAAIQQgACABIAMpAwAQ1gEiARAMBH5CgICAgOAABSABECohAiAAIAEQCyACRa1CgICAgBCECwuAAgEDfgJAIAAgAUEBENkBIgJFDQAgAykDCCEGAkACQCAAIAMpAwAiBEEAENkBIgMEQCAGEBFFBEAgAEHn0gBBABAVQoCAgIDgAA8LIAM1AgBCgICAgJB/hBAOIQQgAzUCBEKAgICAkH+EEA4hBQwBC0KAgICAMCEFAn4gBBARBEAgAEEvEDIMAQsgACAEECwLIgQQDA0BIAAgBCAGEPQDIgUQDA0BCyAAIAI1AgBCgICAgJB/hBALIAAgAjUCBEKAgICAkH+EEAsgAiAFPgIEIAIgBD4CACAAIAFB1QBCABBJQQBIDQEgARAODwsgACAEEAsgACAFEAsLQoCAgIDgAAtrAQF/IAFC/////29YBEAgABAnQoCAgIDgAA8LAn4gACABQQAQ2QEiA0UEQEKAgICAMCAAIAEgACgCKCkDkAEQWA0BGiAAQRIQkQNCgICAgOAADwsgAiADKAIELQAQcUEAR61CgICAgBCECwvHAwEHfyMAQSBrIgUkAAJAAkACQAJAAkAgAUL/////b1gEQCAAECcMAQsgACABIAAoAigpA5ABEFgNAiAAIAFBARDZASICDQELQoCAgIDgACEBDAMLIAIoAgAiBykCBKciAkH/////B3EiAw0BCyAAQcDSABByIQEMAQsgACAFQQhqIAMgAkEfdhCfAxogBygCBEH/////B3EhCEEAIQADQAJAAkAgACAISARAIABBAWohAkF/IQYCQAJ/AkACQAJAAkACQAJAAkAgByAAEDEiA0Glf2oOAwMBAgALIAIhAAJAIANBdmoOBAQLCwUACyADQS9HDQcgBEUNBUEBIQRBLyEDDAcLQdwAIQMgAiAITg0GIABBAmohACAHIAIQMSEGDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAhOcg0GIABBAmogAiAHIAIQMUHdAEYiAhshAEHdAEF/IAIbIQZBASEEDAcLQe4ADAILQfIADAELQQAhBEEvCyEGQdwAIQMLIAIhAAwCCyAFQQhqEDghAQwDCyACIQBBASEECyAFQQhqIAMQkgEaIAZBAEgNACAFQQhqIAYQkgEaDAALAAsgBUEgaiQAIAEL2AICA38BfiMAQRBrIgQkAAJAIAFC/////29YBEAgABAnQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQe4AIAFBABATEC0iAkEASA0AIAIEfyAEQecAOgAIIARBCWoFIARBCGoLIQIgACAAIAFBj88AEMUCEC0iA0EASA0AIAMEQCACQekAOgAAIAJBAWohAgsgACAAIAFBms8AEMUCEC0iA0EASA0AIAMEQCACQe0AOgAAIAJBAWohAgsgACAAIAFBpM8AEMUCEC0iA0EASA0AIAMEQCACQfMAOgAAIAJBAWohAgsgACAAIAFB7wAgAUEAEBMQLSIDQQBIDQAgAwRAIAJB9QA6AAAgAkEBaiECCyAAIAAgAUGzzwAQxQIQLSIDQQBIDQAgACAEQQhqIAMEfyACQfkAOgAAIAJBAWoFIAILIARBCGprEPwBIQULIARBEGokACAFC4EBAgJ/AX4jAEEgayIDJABCgICAgOAAIQUCQCAAIANBCGogAhBCDQBBACEAIAJBACACQQBKGyECAkADQCAA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IANBAWohAwwACwALIAAoAgQgACgCCEEBdGpBEGogASACQQF0ECQaCyAAIAAoAgggAmo2AghBACEDCyADC3gCAX8BfgJAIAEQXQ0AQQAgACgCECgCOCABQQJ0aigCACkCBCIDQoCAgICAgICAQINCgICAgICAgICAf1IgA0KAgICA8P///z+DUCADQv//////////v39WcRsNACADp0F/c0EfdkEBIANC/////weDUBshAgsgAgt4AgF/An5CgICAgOAAIQMgACABQeoAIAFBABATIgQQDEUEQCAAQTAQoAEiAxAMBEAgACAEEAsgAw8LIABBEBBqIgJFBEAgACADEAsgACAEEAtCgICAgOAADwsgARAOIQEgAiAENwMIIAIgATcDACADIAIQhwELIAML7wECAn8CfgJAAkAgAikCBCIFp0H/////B3EgASkCBCIGp0H/////B3FqIgNBgICAgARPBEAgAEH0DUEAEEQMAQsgACADIAUgBoSnQR92IgQQ+gEiAA0BC0KAgICA4AAPCwJAIARFBEAgAEEQaiABQRBqIAEoAgRB/////wdxECQiBCABKAIEQf////8HcWogAkEQaiACKAIEQf////8HcRAkGiADIARqQQA6AAAMAQsgAEEQaiIDIAEgASgCBEH/////B3EQ9gQgAyABKAIEQQF0aiACIAIoAgRB/////wdxEPYECyAArUKAgICAkH+EC+ACAgF/An4jAEEgayIFJAACQAJAIAAgAUElEGciAkUNAAJAIAIpAwAiARARRQRAAkACQCABpyIDLwEGQWtqQf//A3FBCE0EQCADEKsBRQ0BIAAQcAwFCyAAIAVBHGogARDYAQ0EIAUoAhwhBgwBCyAFIAMoAigiBjYCHAsgAigCDCIDIAZJDQEgACACKQMAEAsgAkKAgICAMDcDAAsgBEEBNgIAQoCAgIAwIQEMAgsgAiADQQFqNgIMIARBADYCACACKAIIRQRAIANBAE4EQCADrSEBDAMLIAO4EBYhAQwCC0KAgICA4AAhASAAIAIpAwAgAxB4IgcQDA0BIAIoAghBAUYEQCAHIQEMAgsgA0EATgR+IAOtBSADuBAWCyEIIAUgBzcDCCAFIAg3AwAgAEECIAUQhQMhASAAIAcQCyAAIAgQCwwBCyAEQQA2AgBCgICAgOAAIQELIAVBIGokACABC8UE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AkEBaiECIANBCGohAwwBCwsgACABKAIUECAgACAEEJwCIAFCADcDECABKAIYBEAgACABEPcHCyAAKAJEIAEvAQZBGGxqKAIIIgIEQCAAIAGtQoCAgIBwhCACEQ0ACyABQgA3AyAgAUEAOwEGIAFBADYCKCABEJ0CAkAgAC0AaEECRw0AIAEoAgBFDQAgAUEIaiAAQdgAahBNDwsgACABECALmwIBAX8gACABKAIUIAEoAhhBARCGBQJAIAEoAiBFDQADQCACIAEvASogAS8BKGpPDQEgACABKAIgIAJBBHRqKAIAEPIBIAJBAWohAgwACwALQQAhAgNAIAIgASgCOE4EQEEAIQIDQCACIAEoAjxORQRAIAAgASgCJCACQQN0aigCBBDyASACQQFqIQIMAQsLIAEoAjAiAgRAIAIQogMLIAAgASgCHBDyASABLQASQQRxBEAgACABKAJAEPIBIAAgASgCUBAgIAAgASgCVBAgCyABEJ0CAkAgAC0AaEECRw0AIAEoAgBFDQAgAUEIaiAAQdgAahBNDwsgACABECAFIAAgASgCNCACQQN0aikDABAmIAJBAWohAgwBCwsLqAEBB38gAEEBIAF0IgZBAnQQmwIiBQRAIAAoAsQBIgRBACAEQQBKGyEHA0AgAyAHRkUEQCAAKALMASADQQJ0aigCACECA0AgAgRAIAIoAighBCACIAUgAigCFCABEMoCQQJ0aiIIKAIANgIoIAggAjYCACAEIQIMAQsLIANBAWohAwwBCwsgACAAKALMARAgIAAgBTYCzAEgACAGNgLEASAAIAE2AsABCwuFAQECfyABKAIARQRAIAEtABAEQCAAIAEQgAQLIAEoAiwiAgRAIAAgAq1CgICAgHCEECYLQQAhAiABECghAwNAIAIgASgCIE9FBEAgACADKAIEEPIBIAJBAWohAiADQQhqIQMMAQsLIAEQnQIgACABELcCECAPC0HwL0GhDUGtIkGKMBAAAAtEAQJ/IAJBACACQQBKGyEEA0AgAyAERgRAQQAPCyADQQF0IQIgA0EBaiEDIAAgAmovAQAgASACai8BAGsiAkUNAAsgAgsvAQF/A0AgASADRkUEQCAAIANBAXRqLwEAIAJBhwJsaiECIANBAWohAwwBCwsgAgtjAAJAAn8CQCABRQRAIAINAQwDCyACRQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQwDC0EAIAAoAgQgAmogACgCCEsNARogASACENYFDwsgACACEIgFCw8LQQALJgAgAQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEN4DCwscAQF/IAFBKBBBIgIEQCAAIAIQ5gMgACACECALCyUBAX8gAacoAiAiAwRAIAAgAykDACACECIgACADKQMIIAIQIgsLJwEBfyABpygCICICBEAgACACKQMAECYgACACKQMIECYgACACECALCx4BAX8gAacoAiAiAgRAIAAgAikDABAmIAAgAhAgCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDBBUUNACACKAIMIgNFDQAgACADEOADIAIpAwAhAQsgACABECYgACACECALC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECILIAAgAykDGCACECIgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBcGohBCACQXRqKAIARQRAAkAgAygCAARAIAQQiQUMAQsgACACKQMQECYLIAAgAikDGBAmCyAAIAQQICAGIQIMAQsLIAAgAygCEBAgIAAgAxAgCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIgsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEMEFBH4gAhBHIAI1AgxCgICAgHCEBSABCxAmIAAgAhAgCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK0ASIDRQ0AIAAoArwBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEFAAsgACACECALCykBAX8gACABpyICNQIkQoCAgICQf4QQJiAAIAI1AiBCgICAgJB/hBAmCxEAIAAgAacoAiApAwAgAhAiCxkBAX8gACABpygCICICKQMAECYgACACECALQQEDfwJAIAFBDxBBIgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECIgA0EBaiEDDAALAAsLQwEDfyABQQ8QQSIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJiACQQFqIQIMAQsLIAAgAxAgCwtJAQJ/IAAgAacoAiAiBCkDACACECIgACAEKQMIIAIQIgNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQIiADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECYgACACKQMIECYDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAmIANBAWohAwwBCwsgACACECALjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECILIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALIANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIgsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAmCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD3ASACQQFqIQIMAQsLIAAgBBAgCyAAIAOtQoCAgIBghBAmCwsSACABpygCICIABEAgABCiAwsLDgAgACABpykDICACECILGQAgACABpyIAKQMgECYgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCgCJCADQQN0aikDACACECIgA0EBaiEDDAELCws8AQJ/IAGnIQMDQCACIAMoAihPRQRAIAAgAygCJCACQQN0aikDABAmIAJBAWohAgwBCwsgACADKAIkECALqAICAn8CfiMAQRBrIgQkAEKAgICA4AAhBiAAIAEgAxBsIgcQDEUEQEKAgICAMCEBAn4CQCAAIAJBwwEgAkEAEBMiBhAMDQACQAJAIAYQEQ0AIAYQKg0AIAAgBEEEaiACIAYQ4gkhASAAIAYQCyABEAwNAiAEIAQ1AgQiBjcDCAwBCyAAIARBCGogAhBADQEgAhAOIQEgBCkDCCEGCyAAQoCAgIAwIAYgA0GZHmoxAACGEP8CIgIQDA0AIAAgByACQgAgBhDiAw0AQQAhAwNAIAcgBiADrVcNAhogACABIAMQeCICEAwNASAAIAcgAyACEJUCIQUgA0EBaiEDIAVBf0oNAAsLIAAgARALIAchAUKAgICA4AALIQYgACABEAsLIARBEGokACAGC6gCAgV/A34CQCAAIAEgAxBsIgEQDA0AAkACQCACpyIEEKsBDQAgBCgCKCEGQoCAgIAwIQogBCgCICIHKAIMIgUoAiAiCC0ABUUEQCAAIAWtQoCAgIBwhEKAgICAMBDvASIKEAwNAgsgACAKIAatIgsgA0GZHmoxAACGEP8CIQkgACAKEAsgCRAMDQEgBBCrAQRAIAAgCRALDAELIAlBExBBIQUgACABIAlCACALEOIDDQEgAyAELwEGRwRAQQAhAwNAIAMgBkYNBCAAIAIgAxB4IgkQDA0DIAAgASADIAkQlQIhBCADQQFqIQMgBEF/Sg0ACwwCCyAFKAIIIAgoAgggBygCEGogBSgCABAkGiABDwsgABBwCyAAIAEQC0KAgICA4AAhAQsgAQs3AQF/AkAgAUKAgICAcFoEQCABpyICLwEGQW1qQf//A3FBAkkNAQsgAEETEJEDQQAPCyACKAIgCwgAIAAgAhAgC+kBAQR/IAAoAhAhBQJAIAAgASADEGwiARAMRQRAIAJCgICAgAhaBEAgAEGg0AEQaQwCCyAAQRwQLiIERQRAQQAhBAwCCyAEIAKnIgY2AgACQAJAIANBFEcNACAFKAKwASIHRQ0AIAQgBSgCvAEgBkEBEEsgBxEBACIFNgIIIAVFDQMgBUEAIAYQTBoMAQsgBCAAIAZBARBLEGoiBjYCCCAGRQ0CCyAEQQxqEG4gBEEuNgIYIARBADYCFCAEIANBFEY6AAUgBEEAOgAEIAEgBBCHAQsgAQ8LIAAgARALIAAgBBAZQoCAgIDgAAu8AQICfwR+IwBBEGsiAiQAQoCAgIAwIQQCQAJAIAAgAUEAEPMBIgEQDARAQoCAgIAwIQUMAQsgACABQeoAIAFBABATIgUQDA0AIAAQTiIEEAwNAANAIAAgASAFIAJBDGoQrAEiBxAMRQRAIAIoAgwNAyAAIAQgBiAHEG0hAyAGQgF8IQYgA0EATg0BCwsgACABQQEQsAEaCyAAIAQQC0KAgICA4AAhBAsgACAFEAsgACABEAsgAkEQaiQAIAQLrwEBA38gACgCQCEBQX8hAwJAIAAQEA0AIAAQ2gQNAEEBIQIgASABKAIkQQJPBH8gAS0AbkF/c0EBcQVBAQs2AiggACgCREUEQCABIAAoAgAgAUHRABBWIgI2AqQBIAJBAEgNAQsDQCAAKAIQQap/RwRAIAAQ2QRFDQEMAgsLAkAgACgCREUEQCAAQdgAEA0gACABLwGkARAXIABBKBANDAELIABBKRANC0EAIQMLIAMLsgUBBX8gAigCPCEEIAIvASohBSACLwEoIQYgAUEANgLAAiABQQA2AsgCIAEgBCAFIAZqaiIENgLEAgJAIARFDQAgASAAIARBA3QQLiIENgLIAiAERQRAQX8hBwwBCwNAIANBAE4EQCACKAIgIAMgAi8BKGpBBHRqIgQoAgRBAU4EQCABIAEoAsACIgVBAWo2AsACIAAgASgCyAIgBUEDdGogBCADEMoDCyAEKAIIIQMMAQsLQQAhBAJAIANBfkYEQANAIAQgAi8BKk8NAgJAIAIoAiAgBCACLwEoakEEdGoiAygCBA0AIAMQ2wRFDQAgASABKALAAiIFQQFqNgLAAiAAIAEoAsgCIAVBA3RqIAMgBBDKAwsgBEEBaiEEDAALAAsDQCAEIAIvAShPBEBBACEEA0AgBCACLwEqTw0DAkAgAigCICAEIAIvAShqQQR0aiIDKAIEDQAgAygCAEHRAEYNACABIAEoAsACIgVBAWo2AsACIAAgASgCyAIgBUEDdGogAyAEEMoDCyAEQQFqIQQMAAsABSABIAEoAsACIgNBAWo2AsACIAIoAiAhBSABKALIAiADQQN0aiIDIAQ7AQIgA0EDOgAAIAMgACAFIARBBHRqKAIAEBg2AgQgBEEBaiEEDAELAAsAC0EAIQMDQCADIAIoAjxODQEgAigCJCEFIAEgASgCwAIiBEEBajYCwAIgASgCyAIgBEEDdGoiBCAELQAAIgZB/gFxOgAAIAQgBSADQQN0aiIFLQAAQQJxIAZB/AFxciIGOgAAIAQgBkH6AXEgBS0AAEEEcXIiBjoAACAEIAZB9gFxIAUtAABBCHFyIgY6AAAgBS0AACEIIAQgAzsBAiAEIAZBDnEgCEHwAXFyOgAAIAQgACAFKAIEEBg2AgQgA0EBaiEDDAALAAsgBwu+AQEDfyMAQRBrIgIkACACIAAoAjgiATYCDAJAIAEtAABBI0cNACABLQABQSFHDQAgAiABQQJqIgE2AgwDQAJAAkACQCABIAAoAjxPDQACQCABLQAAIgNBdmoOBAEAAAEACyADQRh0QRh1QX9KDQIgAUEGIAJBDGoQYyIDQX5xQajAAEcNASACKAIMIQELIAAgATYCOAwDCyACKAIMIQEgA0F/Rw0BCyACIAFBAWoiATYCDAwACwALIAJBEGokAAu3AQIBfwJ+IwBBIGsiAyQAIAFBA0YEQCACKQMQIQQgAikDCCEFAkAgACADQRBqIAIpAwAQkAVBAEgEQEKAgICA4AAhBAwBCyAAIAQgBUECIANBEGoQIyIEEAwEQCADIAAQjwE3AwggACADKQMYQoCAgIAwQQEgA0EIahAjIQQgACADKQMIEAsLIAAgAykDEBALIAAgAykDGBALCyADQSBqJAAgBA8LQebjAEGhDUGR6QJB8OMAEAAACz8CAX8BfiMAQRBrIgEkACABQoCAgIAwNwMIIAFCgICAgDA3AwAgAEEsQQJBAEECIAEQ4gEhAiABQRBqJAAgAgvaAQICfwN+IwBBIGsiBSQAQoCAgIDgACEHAkAgACAFQRhqIAFB3gAQhAEiBkUNACAGKQMAIgEQsgFFBEAgAEG2zABBABAVDAELIAUpAxgiCBARBEAgACABIAIgAyAEEIcDIQcMAQsCQCAAIAMgBBCFAyIJEAwNACAGKQMAIQEgBSACNwMQIAUgCTcDCCAFIAE3AwAgACAIIAYpAwhBAyAFECMiARAMIAFC/////29WckUEQCAAIAEQCyAAECcMAQsgASEHCyAAIAgQCyAAIAkQCwsgBUEgaiQAIAcL6wEBBX8jAEGQAWsiAyQAIAEoAgAhBSADQYABNgIIIAMgA0EQajYCDCADQRBqIQYCfwNAIAMoAghBemohBwJAA0AgBCAGaiACOgAAIARBAWohBCAFLAAAIgJBAEgNASACQf8BcSICQQN2QRxxQdDfAWooAgAgAnZBAXFFDQEgBUEBaiEFIAQgB0kNAAtBACAAKAIAIANBDGogA0EIaiADQRBqEO8EDQIaIAMoAgwhBgwBCwsgACgCACAGIAQQoQMLIQQgAygCDCICIANBEGpHBEAgACgCACACEBkLIAEgBTYCACADQZABaiQAIAQLewIBfwF+IwBB0ABrIgQkACAAIAQgASACIAMQmAUgBEEANgJMQoCAgIAwIQUCQAJAIAQQrgENACAEEPEDIgUQDA0AIAQoAhBBqn9GDQEgBEHAGkEAEBQLIAAgBRALIAQgBEEQahCOAkKAgICA4AAhBQsgBEHQAGokACAFC5wEAgN/An4jAEHgAGsiBCQAIAMtAAQhBUKAgICAMCEHAkACQAJAAkACQAJAAkACQAJAAkAgAy0ABQ4KAQICBQcDBAgFAAYLIAAgAygCCBCZBSEGAn4CQAJAAkAgAygCDEEBag4DAgABCQsgACAAKQPAASIHIAYgB0EAEBMMAgsgACAAKAIoKQMQIgcgBiAHQQAQEwwBCyAAIAEgBiABQQAQEwshByAAIAYQEiACQcIBRgRAQQEhBQwICyACQcsBRw0HQQAhBQwHCwJAIAJBwgFGBEBBASEFDAELIAJBywFHDQBBACEFCyAAIAEgAkECIAMgBRCIAxoMBwtCgICAgDAhCCAAIAEgAiADKAIIBH4gBCADKAIANgIQIARBIGpBwABB8s0AIARBEGoQVBogACADKAIIIARBIGpBAEEKQQggAy0ABUECRhsgAy4BBhDKAQVCgICAgDALIAMoAgwEfiAEIAMoAgA2AgAgBEEgakHAAEH5zQAgBBBUGiAAIAMoAgwgBEEgakEBQQtBCSADLQAFQQJGGyADLgEGEMoBBUKAgICAMAsgBRDcCAwGCyADKQMIIgdCgICAgAh8Qv////8PWARAIAdC/////w+DIQcMBQsgB7kQFiEHDAQLIAMrAwgQFiEHDAMLIAAgASACQQIgAyAFEIgDGgwDCxABAAsgAzUCCCEHCyAAIAEgAiAHIAUQGhoLIARB4ABqJAALQwEBfyAAIAEQkwQiAUUEQEEADwsCQCAAIAIQkwQiAkUEQAwBCyAAIAEgAhChBSEDIAAgARA3IAIhAQsgACABEDcgAwv4AQEBfyACLQAAQS5HBEAgACACIAIQQxCbAw8LIAEQ7AUhAyAAIAIQQyADIAFrQQAgAxsiA2pBAmoQLiIABH8gAyAAIAEgAxAkIgBqQQA6AAACQANAAkAgAi0AAEEuRw0AQQIhAQJAAkAgAi0AAUFSag4CAAECCyACLQACQS9HDQEgAC0AAEUNAyAAEOwFIgFBAWogACABGyIBQanNABCjBEUNASABQavNABCjBEUNASABQX9qIAEgASAASxtBADoAAEEDIQELIAEgAmohAgwBCwsgAC0AAEUNACAAEEMgAGpBLzsAAAsgABBDIABqIAIQ6wUgAAVBAAsLWwIBfwF+AkAgACABIAIQoQUiAUUNACAAIAEQ9gNBf0wEQCAAQQEQlwRBAA8LIAAgAa1CgICAgFCEEA4gACkDwAFBAEEAEJ8FIgQQDA0AIAAgBBALIAEhAwsgAws2AQF+An4gASkDaCICEBEEQEKAgICA4AAgAEKAgICAIBBRIgIQDA0BGiABIAI3A2gLIAIQDgsLzwEBAX8jAEHQAGsiBiQAAkAgAiAEEKMFBEACQCABBEAgBiAAIAZBEGogBBCVATYCACABQfHMACAGEBQMAQsgACAEQfHMABCJAwtBACEBDAELQQAhASAAIAJBHGpBFCACQSRqIAIoAiBBAWoQfA0AIAIgAigCICIBQQFqNgIgIAIoAhwgAUEUbGoiAUIANwIAIAFBEGpBADYCACABQQhqQgA3AgAgASAAIAMQGDYCDCAAIAQQGCEAIAEgBTYCCCABIAA2AhALIAZB0ABqJAAgAQtjAQF/IABB8AAQaiICRQRAIAAgARASQQAPCyACQoCAgIAwNwNoIAJCgICAgDA3A2AgAkKAgICAMDcDSCACQoCAgIAwNwNAIAIgATYCBCACQQE2AgAgAkEIaiAAQeABahBNIAILhAUBBH8gACgCACEDAkACQAJ/A0AgAyICQQFqIQMCQCACLQAAIgRBd2oiBUEXSw0AQQEgBXQiBUGNgIAEcQ0BIAVBEnFFDQAgAUUNAQwDCwJAIARBL0cEQEE9IQEgBEE9Rw0BQaR/IAMtAABBPkYNAxoMBQsgAy0AACICQSpHBEAgAkEvRwRAQS8hAQwGC0EvIQIgAQ0EA0ACQAJAIAJB/wFxIgJBdmoOBAUBAQUACyACRQ0ECyADLQABIQIgA0EBaiEDDAALAAsDQCADIgJBAWohAwJAAkACQCACLQABIgRBdmoOBAEDAwEACyAEQSpGDQEgBEUNBAwCCyABDQUMAQsgAi0AAkEvRw0ACyACQQNqIQMMAQsLIAQiARC7AkUNAgJAAkACQAJAAkAgAUGbf2oOBQECBAQAAwsgAy0AACIBQe4ARgR/IAItAAIQvwFFBEBBt38PCyADLQAABSABC0H/AXFB7QBHDQMgAi0AAkHwAEcNAyACLQADQe8ARw0DIAItAARB8gBHDQMgAi0ABUH0AEcNAyACLQAGEL8BDQMgACACQQZqNgIAQU0PCyADLQAAQfgARw0CIAItAAJB8ABHDQIgAi0AA0HvAEcNAiACLQAEQfIARw0CIAItAAVB9ABHDQIgAi0ABhC/AQ0CIAAgAkEGajYCAEFLDwsgAy0AAEH1AEcNASACLQACQe4ARw0BIAItAANB4wBHDQEgAi0ABEH0AEcNASACLQAFQekARw0BIAItAAZB7wBHDQEgAi0AB0HuAEcNASACLQAIEL8BDQFBRQ8LIAFB7wBHDQAgAy0AAEHmAEcNACACLQACEL8BDQBBWQ8LQYN/Cw8LQQoPCyABC+cBAQh/IwBBEGsiAyQAQX8hBAJAIAAtABJBBHFFDQAgACgCUCICRQ0AIAIgACgCTGohBiAAKAJEIQcDQCAHIQQgAiAGTw0BIAJBAWohBQJ/IAItAAAiAkUEQAJAIANBCGogBSAGEPUEIgJBAEgNACADKAIIIQkgA0EMaiACIAVqIgIgBhDeByIFQQBIDQAgAygCDCAEaiEHIAIgBWoMAgsgACgCRCEEDAMLIAQgAkF/aiICIAJB/wFxQQVuIglBBWxrQf8BcWpBf2ohByAFCyECIAggCWoiCCABTQ0ACwsgA0EQaiQAIAQLoQEBBn8CQCABQoCAgIBwVA0AIAGnIgQoAhAiAyADKAIYQX9zQQJ0QaR+cmooAgAhAiADECghAwNAIAJFDQEgAyACQX9qIgVBA3RqIgYoAgAhAiAGKAIEQTZHBEAgAkH///8fcSECDAELCyACQf////8DSw0AIAQoAhQgBUEDdGopAwAiAUKAgICAcINCgICAgJB/Ug0AIAAgARC4ASEHCyAHC4UBAQN/AkACQCAAQoCAgIBwVA0AIACnIgEvAQZBA0cNACABKAIQIgIgAigCGEF/c0ECdEGofnJqKAIAIQEgAhAoIQIDQCABRQRAQQAhAQwDCyABQQN0IAJqIgNBeGohASADQXxqKAIAQTVGDQIgASgCAEH///8fcSEBDAALAAtBAA8LIAFFC0ABAn9BfyEEIAAgAUHNASABQQAQEyIBEAwEf0F/BSABECEEQCAAIAAgASACIAFBABATEC0hAwsgACABEAsgAwsLbAIDfwJ+IAFBcGoiBCkDACEFQX8hAgJAIAAgAUF4aikDACIGEDoiAUUNACAAIAUgAUGAgAIQ2gEhAyAAIAEQEiADQQBIDQAgACAFEAsgACAGEAsgBCADQQBHrUKAgICAEIQ3AwBBACECCyACC0wCAX8CfiAAIAFBcGoiAikDACIDIAFBeGopAwAiBBC+BSIBQQBIBEAgAQ8LIAAgAxALIAAgBBALIAIgAUEAR61CgICAgBCENwMAQQALfgIDfwJ+IAFBeGopAwAiBUL/////b1gEQCAAQaHMAEEAEBVBfw8LQX8hAgJAIAAgAUFwaiIEKQMAIgYQOiIBRQ0AIAAgBSABEHchAyAAIAEQEiADQQBIDQAgACAGEAsgACAFEAsgBCADQQBHrUKAgICAEIQ3AwBBACECCyACC5oBAgJ/AX4jAEEQayICJAAgAUF4aiIDKQMAIQQCfwJAIAAgAkEMaiABQXBqIgEpAwAQ1wMEQCAAIAQQCwwBCyAAIAJBCGogBBDXAw0AIAECfiACKAIMIAIoAgh2IgBBAE4EQCAArQwBCyAAuBAWCzcDAEEADAELIAFCgICAgDA3AwAgA0KAgICAMDcDAEF/CyEAIAJBEGokACAAC0sBAX8jAEEQayICJAAgACACQQxqIAFBeGoiASkDABDEASEAIAFCgICAgDAgAjUCDEL/////D4UgABs3AwAgAkEQaiQAQX9BACAAGwvYAQMCfwF+AnwjAEEQayIDJAACfyAAIANBCGogAUF4aiIEKQMAEFkEQEKAgICAMCEFQX8MAQsgAQJ+IAMrAwgiBiACQQF0QeB9arigRAAAAAAAAPC/oCIHvQJ/IAeZRAAAAAAAAOBBYwRAIAeqDAELQYCAgIB4CyIAt71RBEAgAK0MAQsgBxAWCzcDACAGvQJ/IAaZRAAAAAAAAOBBYwRAIAaqDAELQYCAgIB4CyIBt71RBEAgAa0hBUEADAELIAYQFiEFQQALIQEgBCAFNwMAIANBEGokACABC5YCAwJ/AX4BfCMAQRBrIgMkACABQXhqIgQpAwAhBQJ/AkAgACADQQhqIAFBcGoiASkDABBZBEAgACAFEAsMAQsgACADIAUQWQ0AIAECfgJ8AkACQAJAAkACQAJAIAJB5n5qDgYAAQIEBQMECyADKwMIIAMrAwCiDAULIAMrAwggAysDAKMMBAsgAysDCCADKwMAENQFDAMLIAMrAwggAysDABD8BAwCCxABAAsgAysDCCADKwMAoQsiBr0CfyAGmUQAAAAAAADgQWMEQCAGqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAYQFgs3AwBBAAwBCyABQoCAgIAwNwMAIARCgICAgDA3AwBBfwshACADQRBqJAAgAAu2AwIHfwN+IwBBEGsiAiQAAkAgAUFwaiIHKQMAIgtCgICAgBBaBEAgAEHoywBBABBEQX8hBQwBC0F/IQUgACABQXhqIgQpAwAiCUHDASAJQQAQEyIJEAwNACAJQSlBARD/AyEGIAAgCRALIAAgBCkDAEEAEPMBIgkQDA0AIAAgCUHqACAJQQAQEyIKEAwEQCAAIAkQCwwBCyALpyEDAkACQAJAIAZFDQAgCkEqQQAQ/wNFDQAgBCkDACACQQxqIAJBCGoQjQJFDQAgACACQQRqIAQpAwAQ2AENAiACKAIEIgQgAigCCEcNACABQWhqIQYgAigCDCEIQQAhAQNAIAEgBEYNAiAAIAYpAwAgAyAIIAFBA3RqKQMAEA5BBxCbAUEASA0DIAFBAWohASADQQFqIQMMAAsACyABQWhqIQEDQCAAIAkgCiACQQRqEKwBIgsQDA0CIAIoAgQNASAAIAEpAwAgAyALQQcQmwFBf0wNAiADQQFqIQMMAAsACyAHIAOtNwMAIAAgCRALIAAgChALQQAhBQwBCyAAIAlBARCwARogACAJEAsgACAKEAsLIAJBEGokACAFC/MDAgJ/BX4gAUF4aiIIKQMAIQ0gAUFwaiEHAn4CQAJAAkAgA0EBcQRAIAcpAwAiChAqBEBCgICAgCAhCyAAKQMwEA4hCgwCCyAKELIBRQRAIABBvMoAQQAQFUKAgICAMCEMQoCAgIAwIQlCgICAgDAhCwwEC0KAgICAMCEMIAAgCkE7IApBABATIgsQDA0CIAsQKg0BIAsQIQ0BIABB3coAQQAQFQwCCyAAKAIoKQMIEA4hCyAAKQMwEA4hCgtCgICAgDAhCSAAIAsQUSIMEAwNASANpyIDLQARQTBxRQRAIAAgCkENEFAiCRAMDQJCgICAgDAhDSAAIAkgAyAEIAUQhAUiCRAMDQIgACAJIAwQ+QMgCUEBEKYDIAAgCUEwIAMzASxBARAaGgJAIAYEQCAAIAkgAUFoaikDABCpBUEATg0BDAQLIAAgCSACEKoFQQBIDQMLQQAhASAAIAxBPCAJEA4iCUGDgAEQGkEASA0CIAkgACAJQTsgDBAOIgxBgIABEBpBf0oNAxoMAgtBiMsAQaENQcn7AEGnywAQAAALQoCAgIAwIQkLIAAgChALIAAgCxALIAAgDRALQX8hASAMIQsgCSEKQoCAgIAwIQxCgICAgDALIQkgACALEAsgACAKEAsgByAJNwMAIAggDDcDACABC2wCAX8BfkGyygAhBSAAIAIQ/wQhBgJAIANBgBBxRQRAQbfKACEFIANBgCBxRQ0BCyAAIAUgBkG+FRC9ASEGC0F/IQMCQCAGEAwNACAAIAFBNiAGQQEQGkEASA0AIAAgASAEEPkDQQAhAwsgAwvBAQEEfwJAAkAgAUL/////b1gEQCAAECcMAQsgAkKAgICAcINCgICAgIB/UgRAIAAQ2AMMAQsgACACEJcCIQQgAaciBygCECIGIAQgBigCGHFBf3NBAnRqKAIAIQUgBhAoIQYCQANAIAVFDQEgBCAGIAVBf2pBA3RqIgUoAgRHBEAgBSgCAEH///8fcSEFDAELCyAAIARBhsoAEMYBDAELIAAgByAEQQcQfiIEDQELIAAgAxALQX8PCyAEIAM3AwBBAAu1AQEFfwJAAkAgAUL/////b1gEQCAAECcMAQsgAkKAgICAcINCgICAgIB/UgRAIAAQ2AMMAQsgACACEJcCIQYgAaciBygCECIFIAYgBSgCGHFBf3NBAnRqKAIAIQQgBRAoIQUDQCAEBEAgBSAEQX9qIgRBA3RqIggoAgQgBkYNAyAIKAIAQf///x9xIQQMAQsLIAAgBhCBBQsgACADEAtBfw8LIAAgBygCFCAEQQN0aiADEB9BAAu6AQEFfyABQv////9vWARAIAAQJ0KAgICA4AAPCyACQoCAgIBwg0KAgICAgH9SBEAgABDYA0KAgICA4AAPCyAAIAIQlwIhBSABpyIGKAIQIgQgBSAEKAIYcUF/c0ECdGooAgAhAyAEECghBAJAA0AgAwRAIAQgA0F/aiIDQQN0aiIHKAIEIAVGDQIgBygCAEH///8fcSEDDAELCyAAIAUQgQVCgICAgOAADwsgBigCFCADQQN0aikDABAOC3YCAn8CfiMAQRBrIgIkAAJ/IAFBeGoiAykDACIEECFFBEAgAEGgxgBBABAVQX8MAQtBfyAAIAQgAkEMahCCBSIFEAwNABogACAEEAsgAyAFNwMAIAEgAigCDEEAR61CgICAgBCENwMAQQALIQAgAkEQaiQAIAALzQIBB38CQAJAAkAgACgCQCIEIAFLBEBBfyEEIAAoAkQiBSABQRhsaigCAEUNAQwCC0EzIAFBAWogBEEDbEECbRBLEEsiBkEDdCEIIABBzABqIQQgAEHIAGohCQNAIAkgBCgCACIFRwRAIAAgBSgCFCAIEOMBIgdFDQQgBiAAKAJAIgQgBiAEShshCgNAIAQgCkZFBEAgByAEQQN0akKAgICAIDcDACAEQQFqIQQMAQsLIAUgBzYCFCAFQQRqIQQMAQsLIAAgACgCRCAGQRhsEOMBIgVFDQIgBSAAKAJAIgRBGGxqQQAgBiAEa0EYbBBMGiAAIAY2AkAgACAFNgJECyAFIAFBGGxqIgQgATYCACAEIAAgAxD0CDYCBCAEIAIoAgQ2AgggBCACKAIINgIMIAQgAigCDDYCECAEIAIoAhA2AhRBACEECyAEDwtBfwu1AQIDfwF+IwBBEGsiBCQAQQEhAyAEQQE2AgwCQAJAIAEgAkEDdGoiAikDACIGEBFFBEBBfyEFQX8hAwJAIAAgBiACKQMIIARBDGoQrAEiBhAMDQAgBCgCDCIDDQBBACEDDAILIAAgAikDABALIAJCgICAgDA3AwAgA0EASA0CIAAgBhALC0KAgICAMCEGCyABIAY3AwBBACEFIAEgA0EAR61CgICAgBCENwMICyAEQRBqJAAgBQvtAQIFfwN+QoGAgIAQIQdCgICAgDAhCAJAAkAgAUF4aikDACIJQoCAgIBwVA0AIAmnIgUvAQZBEUcNACAFKAIgIQMDQAJAIAMoAggEQCADKAIQIgIgAygCDE8NAyACEJEBIQQgAyACQQFqNgIQDAELIAMoAhAiAiAFKAIQIgQoAiBPDQIgBBAoIAJBA3RqIgYoAgQhBCADIAJBAWo2AhAgBEUNASAGLQADQRBxRQ0BCyAAIAMpAwAgBBB3IgJBAEgNAiACRQ0AC0KAgICAECEHIAAgBBBkIQgLIAEgBzcDCCABIAg3AwBBACECCyACCyMBAX4gAUF4aiIBIAAgASkDABDkByICNwMAQX9BACACEAwbC+EBAgR/AX4gACkDyAEiB6ciBSgCECIEIAQoAhggAXFBf3NBAnRqKAIAIQMgBBAoIQQgAgJ+AkACQAJAAkADQCADRQ0BIAEgBCADQX9qIgZBA3RqIgMoAgRHBEAgAygCAEH///8fcSEDDAELCyAFKAIUIAZBA3RqKQMAEIMBBEAgACABEN4BDAILIAMtAANBCHENAyAAQYCAASABENwBDwsgACAAKQPAASABEHciA0EATg0BC0F/DwtCgICAgDAgA0UNARogACkDwAEhBwsgBxAOCzcDACACIAAgARBkNwMIQQALhgECBH8BfiABQRhqIQYgASgCHCEFA0AgBiAFIgNHBEAgAygCBCEFIANBfmovAQAgAkcNASADQXhqIgQtAAVBAnENASABKAIUIAJBA3RqKQMAEA4hByADIANBEGo2AgggAyAHNwMQIAMQRyAEIAQtAAVBAXI6AAUgACgCECAEQQMQvAEMAQsLC5UBAgJ/AX4gACkDwAEiBqcoAhAiBSAFKAIYIAFxQX9zQQJ0aigCACEEIAUQKCEFIAAgBiABIAJCgICAgDBCgICAgDACfwJAA0AgBEUNASAEQQN0IAVqQXhqIgQoAgAhACABIAQoAgRHBEAgAEH///8fcSEEDAELC0GAwAEgAEGAgIAgcUUNARoLIANBhs4BcgsQdUEfdQu5AQIEfwF+IAJBAnFBBXIgAkEBcUEGciACQYABcSIDGyEGIABByAFBwAEgAxtqKAIAIgQoAhAiBSAFKAIYIAFxQX9zQQJ0aigCACECQoCAgIDAAEKAgICAMCADGyEHIAUQKCEDAkADQCACBEAgAyACQX9qQQN0aiICKAIEIAFGDQIgAigCAEH///8fcSECDAELCyAELQAFQQFxRQ0AIAAgBCABIAYQfiIARQRAQX8PCyAAIAc3AwALQQALMQECfyAAIAJBABDFBSIEBH8gBEEQaiABIAIQJCACakEAOgAAIAAgBCADEM0CBUEACwu/AgEEfyAAKALAASIFKAIQIgQgBCgCGCABcUF/c0ECdGooAgAhAyAEECghBAJAAkACQAJAAkADQCADRQ0BIANBA3QgBGoiBkF4aiEDIAEgBkF8aigCAEcEQCADKAIAQf///x9xIQMMAQsLIAJBgAFxBEAgAy0AA0EEcQ0DDAQLIAJBwABxRQ0CIAMoAgAiAkGAgIAgcQ0CIAJBgICAgHxxQYCAgIAERg0BIAJBgICAwAFxQYCAgMABRg0CDAELIAJBgAFxDQEgBS0ABUEBcQ0BCyAAIAFB18gAEMYBDAILIAAoAsgBKAIQIgIgAigCGCABcUF/c0ECdGooAgAhAyACECghAgNAIANFBEBBAA8LIAIgA0F/akEDdGoiAygCBCABRg0BIAMoAgBB////H3EhAwwACwALIAAgARCuBQtBfwubAQIEfwF+IAAoAsgBIgUoAhAiBCAEKAIYIAFxQX9zQQJ0aigCACEDIAQQKCEEAkADQCADRQ0BIAEgBCADQX9qIgNBA3RqIgYoAgRHBEAgBigCAEH///8fcSEDDAELCyAFKAIUIANBA3RqKQMAIgcQgwEEQCAAIAEQ3gFCgICAgOAADwsgBxAODwsgACAAKQPAASIHIAEgByACEBMLdQEDfyAAKALIASgCECICIAIoAhggAXFBf3NBAnRqKAIAIQMgAhAoIQQCQANAIAMEQEEBIQIgBCADQX9qQQN0aiIDKAIEIAFGDQIgAygCAEH///8fcSEDDAELCyAAIAApA8ABIAEQdyICQQBODQBBfyECCyACC6cBAgJ/A34jAEEwayICJAACfkKAgICAICAAEKIFIgNFDQAaIAAgAxBkCyEEIAAgAxASAkAgBBAMBEAgBCEFDAELAkAgACACQSBqEIQDIgUQDARAIAQhAQwBCyACIAIpAyAiBjcDACACIAE3AxggAiAENwMQIAIgAikDKCIBNwMIIABBKEEEIAIQ/AIgACAEEAsgACAGEAsLIAAgARALCyACQTBqJAAgBQuLAgEEfwJ/AkACQCACQv////9vWARAIAAQJwwBCyACpyIEKAIQIgUgBSgCGEF/c0ECdEH4eXJqKAIAIQMgBRAoIQUCQAJAA0AgAwRAIAUgA0F/aiIDQQN0aiIGKAIEQcEBRg0CIAYoAgBB////H3EhAwwBCwtBfyAAQfcAEKsFIgIQDA0EGiAAIARBwQFBBxB+IgNFBEAgACACEAtBfw8LIAMgAhAOIgI3AwAMAQsgBCgCFCADQQN0aikDABAOIQILIAAgAhCXAiEDIAFC/////29YBEAgABAnIAAgAxASDAELIAAgAacgA0EHEH4hBCAAIAMQEiAEDQELQX8PCyAEQoCAgIAwNwMAQQALC6gCAQR/An8CQAJAIAJC/////29YDQAgAqciAy8BBhD1AUUNACADKAIoIgVFDQAgBSgCECIEIAQoAhhBf3NBAnRB+HlyaigCACEDIAQQKCEEAkADQCADBEAgBCADQX9qIgNBA3RqIgYoAgRBwQFGDQIgBigCAEH///8fcSEDDAELCyAAQcLHAEEAEBUMAgsgAUKAgICAcFQNACAFKAIUIANBA3RqKQMAIgJCgICAgHCDQoCAgICAf1INACAAIAIQlwIhBSABpygCECIEIAUgBCgCGHFBf3NBAnRqKAIAIQMgBBAoIQQDQCADBEBBACAEIANBf2pBA3RqIgMoAgQgBUYNBBogAygCAEH///8fcSEDDAELCyAAQeLHAEEAEBUMAQsgABAnC0F/CwttAgN/AX4CQCAAEE4iBxAMDQAgAiABIAIgAUobIQQgASECA0AgAiAERg0BIAIgAWshBSACQQN0IQYgAkEBaiECIAAgByAFIAMgBmopAwAQDkEHEJsBQX9KDQALIAAgBxALQoCAgIDgACEHCyAHCz0BAn8CQCAAEKIFIgEEQCAAIAEQoAUhAiAAIAEQEiACDQELIABBmMcAQQAQFUKAgICA4AAPCyAAIAIQqwgLjwICBX8BfgJAIAAgACgCKCkDCEEJEFAiChAMDQAgACAKpyIHQTBBAxB+IAGtNwMAIARBACAEQQBKGyEIA0ACQAJAAkAgBSAIRgRAIAQgASAEIAFKGyEBA0AgASAERg0EIAAgCiAEIAIgBEEDdGopAwAQDkEHEJsBIQMgBEEBaiEEIANBAE4NAAsMAQsgACADIAVBARD6AyIGRQ0AIAAgByAFEJEBQScQfiIJDQEgACgCECAGEPcBCyAAIAoQC0KAgICA4AAhCgwDCyAJIAY2AgAgBUEBaiEFDAELCyAAIApBwwEgACkDqAEQDkEDEBoaIAAgCkHOACAAKAIQKAKEASkDCBAOQQMQGhogCg8LIAoLxAECBH8CfiAAIAAoAigpAwhBCBBQIgcQDEUEQCAAIAenIgVBMEEDEH4gAa03AwACQCABQQFIBEAMAQsgACABQQN0EC4iBARAA0AgASADRg0CIAQgA0EDdCIGaiACIAZqKQMAEA43AwAgA0EBaiEDDAALAAsgACAHEAtCgICAgOAADwsgBSABNgIoIAUgBDYCJCAAIAdBwwEgACkDqAEQDkEDEBoaIAAgB0HOAEKAgICAMCAAKQOwASIIIAhBgDAQdRoLIAcLLQEBfyABQSkQQSICRQRAQQAPCyACLQARBEAgABDBAkF/DwsgACACKQMAEMABC7YGAgN/AX4jAEHgAWsiBSQAAkAgAb0iCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIAhC////////////AINCgYCAgICAgPj/AFoEQCAAQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGNBAXNFBEAgAEEtOgAAIABBAWohAAsgAEG8wwAtAAA6AAggAEG0wwApAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiCEL/////////D3xC/v///////x9WIAi5IAFicg0BIAAgBUHWAWogCCACEOkHEOsFDAILRAAAAAAAAAAAIAEgAUQAAAAAAAAAAGEbIQEgBEECRw0AIAAgASADEOgHDAELIAEgAyAFQQhqIAVBDGogBUEQaiAEQQNxQQFGIgcQ5wchBiAFKAIIIQIgBSgCDARAIABBLToAACAAQQFqIQALAkAgBEEEcQ0AIAJBAUggAiADQRUgBxtKckUEQCAGIAJMBEBBACEEIAIgBmsiAkEAIAJBAEobIQIgACAFQRBqIAYQJCAGaiEAA0AgAiAERwRAIABBMDoAACAEQQFqIQQgAEEBaiEADAELCyAAQQA6AAAMAwsgACAFQRBqIAIQJCACaiIEQS46AABBACEAIAYgAmsiA0EAIANBAEobIQMDQCAEQQFqIQQgACADRwRAIAQgBUEQaiAAIAJqai0AADoAACAAQQFqIQAMAQsLIARBADoAAAwCCyACQQVqQQVLDQAgAEGw3AA7AABBACEEQQAgAmsgAkEfdXEhAiAAQQJqIQADQCACIARHBEAgAEEwOgAAIARBAWohBCAAQQFqIQAMAQsLIAAgBUEQaiAGECQgBmpBADoAAAwBCyAAIAUtABA6AAACQCAGQQJIBEAgAEEBaiEEDAELIABBLjoAASAAQQJqIQRBASEAA0AgACAGRg0BIAQgBUEQaiAAai0AADoAACAAQQFqIQAgBEEBaiEEDAALAAsgBEHlADoAACACQX9qIQAgAkEBSAR/IARBAWoFIARBKzoAASAEQQJqCyECIAUgADYCACACIAUQnQkLIAVB4AFqJAALLgAgAEEANgLIASAAQoSAgICAAjcDwAEgACAAQcAAEJsCIgA2AswBQQBBfyAAGwtWAQF8An8gACACEJwBIgIQDARARAAAAAAAAPh/IQNBfwwBCyACEFMiAEEHRwRAIABFBEAgAqe3IQNBAAwCCxABAAsgAhBKIQNBAAshACABIAM5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A2ggASABKQNwIARBAWogAigCHBDhAa18NwNwIAJBKGohAgwBCwsgBUEBaiEFDAELCyABIAtCA3wiETcDICABIAAoAigiBaw3AyggASAAKAIsIgMgACgCJGpBAnStIgs3AzBBACECIANBACADQQBKGyEDA0AgAiADRwRAIAAoAjggAkECdGooAgAiBBDdA0UEQCABIAsgBCgCBCIEQf////8HcSAEQR92IgR0IARrQRFqrXwiCzcDMAsgAkEBaiECDAELCyABAn4gBisDCBCjAyIXmUQAAAAAAADgQ2MEQCAXsAwBC0KAgICAgICAgIB/CyIMNwM4IAECfiAGKwMQEKMDIheZRAAAAAAAAOBDYwRAIBewDAELQoCAgICAgICAgH8LIg03A0AgASAGKQMYIhI3A3ggAQJ+IAYrAyAQowMiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfwsiEzcDgAEgASAGKQMoIhQ3A4gBIAEgBikDMCIVNwOQASABIAYpAzgiFjcDmAEgBisDACEXIAEgASkDcCABKQNgIBYgFCAPIBB8IA18IBN8fHwgC3x8fDcDECABAn4gFxCjAyAFt6AgDLmgIA65oCABKQNouaAgErmgIBW5oCARuaAiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfws3AyAgBkFAayQACw8AIAEgASgCAEEBajYCAAs5AQF/IAEgASgCACICQQFqNgIAIAJFBEAgAUEIaiICEEcgAiAAQdAAahBNIAEgAS0ABEEPcToABAsLVQEBfyABKAIAIgJBAEoEQCABIAJBf2oiAjYCAAJAIAINACABLQAEQfABcUEQRw0AIAFBCGoiARBHIAEgAEHgAGoQTQsPC0HWOUGhDUGaLEHnORAAAAtSAQJ/IABBAToAaCAAQdgAaiECAkADQCACIAAoAlwiAUcEQCABQXhqIgEoAgANAiAAIAEQwgUMAQsLIABBADoAaA8LQcYwQaENQcUqQdgwEAAACyoAIAAoAhRBMGogACgCbEsEQCAAEIoFIAAgACgCFCIAQQF2IABqNgJsCwtaAQF/IAAoAswBIAEQwwUiAiAAKALAARDKAkECdGohAANAAkAgACgCACIARQ0AAkAgACgCFCACRw0AIAAoAiwgAUcNACAAKAIgRQ0BCyAAQShqIQAMAQsLIAALqwEBAX8CfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABEMsCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgAUH/AU0EQCAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABAMAQtBfyAAIAAoAgwQ3AMNARogACAAKAIIIgJBAWo2AgggACgCBCACQQF0aiABOwEQC0EACwsoACABEPABRQRAIAAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABC8cBAgR/AX4gASACQQEQzAUiA0H/////A3EhBSAAKAI0IAAoAiRBf2ogA3FBAnRqIQMDQAJAAkAgAygCACIERQ0AIAAoAjggBEECdGooAgAiAykCBCIHQoCAgICAgICAQINCgICAgICAgIDAAFIgB0IgiKdB/////wNxIAVHcg0BIAenIgZBAEggBkH/////B3EgAkdyDQEgA0EQaiABIAIQdA0BIAQQ8AENACADIAMoAgBBAWo2AgALIAQPCyADQQxqIQMMAAsACxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALKgEBfyMAQRBrIgEkACABIAA2AgxB2KMEKAIAQYQOIAAQmwQgAUEQaiQACwQAQgAL1AIBB38jAEEgayIDJAAgAyAAKAIcIgQ2AhAgACgCFCEFIAMgAjYCHCADIAE2AhggAyAFIARrIgE2AhQgASACaiEEQQIhByADQRBqIQECfwJAAkAgACgCPCADQRBqQQIgA0EMahADEM8FRQRAA0AgBCADKAIMIgVGDQIgBUF/TA0DIAEgBSABKAIEIghLIgZBA3RqIgkgBSAIQQAgBhtrIgggCSgCAGo2AgAgAUEMQQQgBhtqIgkgCSgCACAIazYCACAEIAVrIQQgACgCPCABQQhqIAEgBhsiASAHIAZrIgcgA0EMahADEM8FRQ0ACwsgBEF/Rw0BCyAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgASgCBGsLIQQgA0EgaiQAIAQLjAICA38BfiMAQSBrIgUkAAJAIAGnIgcoAiAiBkUNACAGKAIIIggoAgQNACAIQQE2AgQgBy8BBkFVaiEHIANBAUgEfkKAgICAMAUgBCkDAAshAQJAAkAgBw0AIAEQIUUNAAJAAkAgACABIAYpAwAQWARAIABBr+MAQQAQFQwBCyAAIAFB/wAgAUEAEBMiAhAMRQ0BCyAAEI8BIQEgACAGKQMAIAFBARCUBSAAIAEQCwwDCyAAIAIQOw0BIAAgAhALCyAAIAYpAwAgASAHEJQFDAELIAYpAwAhCSAFIAI3AxAgBSABNwMIIAUgCTcDACAAQSZBAyAFEPwCIAAgAhALCyAFQSBqJABCgICAgDALRAIBfwF+IAFC////////P4MhAwJ/IAFCMIinQf//AXEiAkH//wFHBEBBBCACDQEaQQJBAyAAIAOEUBsPCyAAIAOEUAsL5gMDA38BfgZ8AkACQAJAAkAgAL0iBEIAWQRAIARCIIinIgFB//8/Sw0BCyAEQv///////////wCDUARARAAAAAAAAPC/IAAgAKKjDwsgBEJ/VQ0BIAAgAKFEAAAAAAAAAACjDwsgAUH//7//B0sNAkGAgMD/AyECQYF4IQMgAUGAgMD/A0cEQCABIQIMAgsgBKcNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIEQiCIpyECQct3IQMLIAMgAkHiviVqIgFBFHZqtyIHRABgn1ATRNM/oiIIIARC/////w+DIAFB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA/oqIiBaG9QoCAgIBwg78iBkQAACAVe8vbP6IiCaAiCiAJIAggCqGgIAAgBqEgBaEgACAARAAAAAAAAABAoKMiACAFIAAgAKIiBSAFoiIAIAAgAESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAUgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCIARAAAIBV7y9s/oiAHRDYr8RHz/lk9oiAAIAagRNWtmso4lLs9oqCgoKAhAAsgAAvNAwMDfwF+BXwCQAJAAkACQCAAvSIEQgBZBEAgBEIgiKciAUH//z9LDQELIARC////////////AINQBEBEAAAAAAAA8L8gACAAoqMPCyAEQn9VDQEgACAAoUQAAAAAAAAAAKMPCyABQf//v/8HSw0CQYCAwP8DIQJBgXghAyABQYCAwP8DRwRAIAEhAgwCCyAEpw0BRAAAAAAAAAAADwsgAEQAAAAAAABQQ6K9IgRCIIinIQJBy3chAwsgBEL/////D4MgAkHiviVqIgFB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA/oqIiBaG9QoCAgIBwg78iBkQAACBlRxX3P6IiByADIAFBFHZqtyIIoCIJIAcgCCAJoaAgACAGoSAFoSAAIABEAAAAAAAAAECgoyIAIAUgACAAoiIFIAWiIgAgACAARJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKKgIgBEAAAgZUcV9z+iIAAgBqBEAKLvLvwF5z2ioKCgIQALIAALRgAgAL1C////////////AINCgICAgICAgPj/AFgEQCAAIAAgAaUgAb1C////////////AINCgICAgICAgPj/AFYbDwsgAQtGACAAvUL///////////8Ag0KAgICAgICA+P8AWARAIAAgACABpCABvUL///////////8Ag0KAgICAgICA+P8AVhsPCyABC6EBAQF+IABB6AAQaiIFRQRAQoCAgIDgAA8LIAVBATYCACAAKAIQIAVBBBC8ASAFQoCAgIAwNwMYIAVCgICAgDA3AxAgBUEANgIgAkACQCAAIAVBEGoQhAMiBhAMRQRAIAAgBUEoaiABIAIgAyAEEOsDRQ0BCyAAIAYQC0KAgICA4AAhBgwBCyAFQQE2AiAgACAFEJMFCyAAKAIQIAUQkgUgBguuBwEJfyAAKAIEIgdBA3EhAiAAIAdBeHEiBmohBEH0pwQoAgAhBQJAIAJFBEBBACECIAFBgAJJDQEgBiABQQRqTwRAIAAhAiAGIAFrQcSrBCgCAEEBdE0NAgtBAA8LAkAgBiABTwRAIAYgAWsiAkEQSQ0BIAAgB0EBcSABckECcjYCBCAAIAFqIgEgAkEDcjYCBCAEIAQoAgRBAXI2AgQgASACENUFDAELQQAhAiAEQfynBCgCAEYEQEHwpwQoAgAgBmoiBSABTQ0CIAAgB0EBcSABckECcjYCBCAAIAFqIgIgBSABayIBQQFyNgIEQfCnBCABNgIAQfynBCACNgIADAELIARB+KcEKAIARgRAQeynBCgCACAGaiIFIAFJDQICQCAFIAFrIgJBEE8EQCAAIAdBAXEgAXJBAnI2AgQgACABaiIBIAJBAXI2AgQgACAFaiIFIAI2AgAgBSAFKAIEQX5xNgIEDAELIAAgB0EBcSAFckECcjYCBCAAIAVqIgEgASgCBEEBcjYCBEEAIQJBACEBC0H4pwQgATYCAEHspwQgAjYCAAwBCyAEKAIEIgNBAnENASADQXhxIAZqIgkgAUkNASAJIAFrIQoCQCADQf8BTQRAIAQoAggiBiADQQN2IgVBA3RBjKgEakcaIAYgBCgCDCIIRgRAQeSnBEHkpwQoAgBBfiAFd3E2AgAMAgsgBiAINgIMIAggBjYCCAwBCyAEKAIYIQgCQCAEIAQoAgwiA0cEQCAFIAQoAggiAk0EQCACKAIMGgsgAiADNgIMIAMgAjYCCAwBCwJAIARBFGoiAigCACIGDQAgBEEQaiICKAIAIgYNAEEAIQMMAQsDQCACIQUgBiIDQRRqIgIoAgAiBg0AIANBEGohAiADKAIQIgYNAAsgBUEANgIACyAIRQ0AAkAgBCAEKAIcIgVBAnRBlKoEaiICKAIARgRAIAIgAzYCACADDQFB6KcEQeinBCgCAEF+IAV3cTYCAAwCCyAIQRBBFCAIKAIQIARGG2ogAzYCACADRQ0BCyADIAg2AhggBCgCECICBEAgAyACNgIQIAIgAzYCGAsgBCgCFCICRQ0AIAMgAjYCFCACIAM2AhgLIApBD00EQCAAIAdBAXEgCXJBAnI2AgQgACAJaiIBIAEoAgRBAXI2AgQMAQsgACAHQQFxIAFyQQJyNgIEIAAgAWoiAiAKQQNyNgIEIAAgCWoiASABKAIEQQFyNgIEIAIgChDVBQsgACECCyACC1cCAX8BfgJAAn9BACAARQ0AGiAArSICpyIBIABBAXJBgIAESQ0AGkF/IAEgAkIgiKcbCyIBEJ8CIgBFDQAgAEF8ai0AAEEDcUUNACAAQQAgARBMGgsgAAtmAQF/IAGnIgUvAQZBUmohBiAFKAIgIQUgA0EBSAR+QoCAgIAwBSAEKQMACyEBIAUgBjYCNCABEA4hAQJAIAYEQCAAIAEQkAEMAQsgBSgCZEF4aiABNwMACyAAIAUQkwVCgICAgDALxgECA38CfiMAQRBrIgMkAAJ+IAG8IgRB/////wdxIgJBgICAfGpB////9wdNBEAgAq1CGYZCgICAgICAgMA/fAwBCyACQYCAgPwHTwRAIAStQhmGQoCAgICAgMD//wCEDAELIAJFBEBCAAwBCyADIAKtQgAgAmciAkHRAGoQeyADKQMAIQUgAykDCEKAgICAgIDAAIVBif8AIAJrrUIwhoQLIQYgACAFNwMAIAAgBiAEQYCAgIB4ca1CIIaENwMIIANBEGokAAuQAQIBfwF+QoCAgIDgACEHAkAgAEHQABBqIgYEQCAGQQA2AgQgBkHIAGoQbiAAIAZBCGoiBSABIAIgAyAEEOsDBEAgBkEFNgIEDAILIAAgBRC5AiICEAwNASAAIAIQCyAAIAFBMhBsIgcQDA0BIAYgBz4CACAHIAYQhwELIAcPCyAAKAIQIAYQkQVCgICAgOAACwYAQeCnBAsGAEHcpwQLBgBB1KcEC2sCAX8BfiMAQaABayICJAAgAkEQakEAQZABEEwaIAJBfzYCXCACIAE2AjwgAkF/NgIYIAIgATYCFCACQRBqEJoEIAIgAkEQahCOCSACKQMIIQMgACACKQMANwMAIAAgAzcDCCACQaABaiQAC/kbAw1/Bn4BfCMAQZDGAGsiBiQAQQAgAyAEaiIRayESAkACfwNAIAJBMEcEQAJAIAJBLkcNBCABKAIEIgIgASgCaE8NACABIAJBAWo2AgQgAi0AAAwDCwUgASgCBCICIAEoAmhJBH9BASEHIAEgAkEBajYCBCACLQAABUEBIQcgARBbCyECDAELCyABEFsLIQJBASEJIAJBMEcNAANAIBNCf3whEwJ/IAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAADAELIAEQWwsiAkEwRg0AC0EBIQcLIAZBADYCkAYCfgJAAkACQAJAIAJBLkYiCiACQVBqIghBCU1yBEADQAJAIApBAXEEQCAJRQRAIBQhE0EBIQkMAgsgB0UhBwwECyAUQgF8IRQgC0H8D0wEQCANIBSnIAJBMEYbIQ0gBkGQBmogC0ECdGoiByAMBH8gAiAHKAIAQQpsakFQagUgCAs2AgBBASEHQQAgDEEBaiICIAJBCUYiAhshDCACIAtqIQsMAQsgAkEwRg0AIAYgBigCgEZBAXI2AoBGQdyPASENCwJ/IAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAADAELIAEQWwsiAkEuRiIKIAJBUGoiCEEKSXINAAsLIBMgFCAJGyETIAdFIAJBX3FBxQBHckUEQAJAIAEQ2wUiFUKAgICAgICAgIB/Ug0AQgAhFSABKAJoRQ0AIAEgASgCBEF/ajYCBAsgB0UNAyATIBV8IRMMBAsgB0UhByACQQBIDQELIAEoAmhFDQAgASABKAIEQX9qNgIECyAHRQ0BC0GEpwRBHDYCAEIAIRQgARCaBEIADAELIAYoApAGIgFFBEAgBiAFt0QAAAAAAAAAAKIQtgEgBikDACEUIAYpAwgMAQsgEyAUUiAUQglVciADQR5MQQAgASADdhtyRQRAIAZBMGogBRB/IAZBIGogARCgAiAGQRBqIAYpAzAgBikDOCAGKQMgIAYpAygQMyAGKQMQIRQgBikDGAwBCyATIARBfm2tVQRAQYSnBEHEADYCACAGQeAAaiAFEH8gBkHQAGogBikDYCAGKQNoQn9C////////v///ABAzIAZBQGsgBikDUCAGKQNYQn9C////////v///ABAzIAYpA0AhFCAGKQNIDAELIBMgBEGefmqsUwRAQYSnBEHEADYCACAGQZABaiAFEH8gBkGAAWogBikDkAEgBikDmAFCAEKAgICAgIDAABAzIAZB8ABqIAYpA4ABIAYpA4gBQgBCgICAgICAwAAQMyAGKQNwIRQgBikDeAwBCyAMBEAgDEEITARAIAZBkAZqIAtBAnRqIgIoAgAhAQNAIAFBCmwhASAMQQFqIgxBCUcNAAsgAiABNgIACyALQQFqIQsLAkAgDSATpyIJSiANQQlOciAJQRFKcg0AIAlBCUYEQCAGQcABaiAFEH8gBkGwAWogBigCkAYQoAIgBkGgAWogBikDwAEgBikDyAEgBikDsAEgBikDuAEQMyAGKQOgASEUIAYpA6gBDAILIAlBCEwEQCAGQZACaiAFEH8gBkGAAmogBigCkAYQoAIgBkHwAWogBikDkAIgBikDmAIgBikDgAIgBikDiAIQMyAGQeABakEAIAlrQQJ0QcCjBGooAgAQfyAGQdABaiAGKQPwASAGKQP4ASAGKQPgASAGKQPoARDYBSAGKQPQASEUIAYpA9gBDAILIAMgCUF9bGpBG2oiAUEeTEEAIAYoApAGIgIgAXYbDQAgBkHgAmogBRB/IAZB0AJqIAIQoAIgBkHAAmogBikD4AIgBikD6AIgBikD0AIgBikD2AIQMyAGQbACaiAJQQJ0QfiiBGooAgAQfyAGQaACaiAGKQPAAiAGKQPIAiAGKQOwAiAGKQO4AhAzIAYpA6ACIRQgBikDqAIMAQsDQCAGQZAGaiALIgJBf2oiC0ECdGooAgBFDQALQQAhDAJAIAlBCW8iAUUEQEEAIQcMAQsgASABQQlqIAlBf0obIQgCQCACRQRAQQAhB0EAIQIMAQtBgJTr3ANBACAIa0ECdEHAowRqKAIAIgttIQ1BACEKQQAhAUEAIQcDQCAGQZAGaiABQQJ0aiIOIAogDigCACIOIAtuIg9qIgo2AgAgB0EBakH/D3EgByAKRSABIAdGcSIKGyEHIAlBd2ogCSAKGyEJIA0gDiALIA9sa2whCiABQQFqIgEgAkcNAAsgCkUNACAGQZAGaiACQQJ0aiAKNgIAIAJBAWohAgsgCSAIa0EJaiEJCwNAIAZBkAZqIAdBAnRqIQ0CQANAIAlBJE4EQCAJQSRHDQIgDSgCAEHR6fkETw0CCyACQf8PaiELQQAhCiACIQgDQCAIIQICf0EAIAqtIAZBkAZqIAtB/w9xIgFBAnRqIgg1AgBCHYZ8IhNCgZTr3ANUDQAaIBMgE0KAlOvcA4AiFEKAlOvcA359IRMgFKcLIQogCCATpyIINgIAIAIgAiACIAEgCBsgASAHRhsgASACQX9qQf8PcUcbIQggAUF/aiELIAEgB0cNAAsgDEFjaiEMIApFDQALIAggB0F/akH/D3EiB0YEQCAGQZAGaiAIQf4PakH/D3FBAnRqIgEgASgCACAGQZAGaiAIQX9qQf8PcSICQQJ0aigCAHI2AgALIAlBCWohCSAGQZAGaiAHQQJ0aiAKNgIADAELCwJAA0AgAkEBakH/D3EhCyAGQZAGaiACQX9qQf8PcUECdGohDQNAQQlBASAJQS1KGyEKAkADQCAHIQhBACEBAkADQAJAIAEgCGpB/w9xIgcgAkYNACAGQZAGaiAHQQJ0aigCACIHIAFBAnRBkKMEaigCACIOSQ0AIAcgDksNAiABQQFqIgFBBEcNAQsLIAlBJEcNAEIAIRNBACEBQgAhFANAIAIgASAIakH/D3EiB0YEQCACQQFqQf8PcSICQQJ0IAZqQQA2AowGCyAGQYAGaiATIBRCAEKAgICA5Zq3jsAAEDMgBkHwBWogBkGQBmogB0ECdGooAgAQoAIgBkHgBWogBikDgAYgBikDiAYgBikD8AUgBikD+AUQeiAGKQPoBSEUIAYpA+AFIRMgAUEBaiIBQQRHDQALIAZB0AVqIAUQfyAGQcAFaiATIBQgBikD0AUgBikD2AUQMyAGKQPIBSEUQgAhEyAGKQPABSEVIAxB8QBqIgcgBGsiBEEAIARBAEobIAMgBCADSCILGyIBQfAATA0CDAULIAogDGohDCACIQcgAiAIRg0AC0GAlOvcAyAKdiEOQX8gCnRBf3MhD0EAIQEgCCEHA0AgBkGQBmogCEECdGoiECABIBAoAgAiECAKdmoiATYCACAHQQFqQf8PcSAHIAFFIAcgCEZxIgEbIQcgCUF3aiAJIAEbIQkgDyAQcSAObCEBIAhBAWpB/w9xIgggAkcNAAsgAUUNASAHIAtHBEAgBkGQBmogAkECdGogATYCACALIQIMAwsgDSANKAIAQQFyNgIAIAshBwwBCwsLIAZBkAVqRAAAAAAAAPA/QeEBIAFrEMkBELYBIAZBsAVqIAYpA5AFIAYpA5gFIBUgFBDdBSAGKQO4BSEXIAYpA7AFIRggBkGABWpEAAAAAAAA8D9B8QAgAWsQyQEQtgEgBkGgBWogFSAUIAYpA4AFIAYpA4gFENMFIAZB8ARqIBUgFCAGKQOgBSITIAYpA6gFIhYQmQQgBkHgBGogGCAXIAYpA/AEIAYpA/gEEHogBikD6AQhFCAGKQPgBCEVCwJAIAhBBGpB/w9xIgMgAkYNAAJAIAZBkAZqIANBAnRqKAIAIgNB/8m17gFNBEAgA0VBACAIQQVqQf8PcSACRhsNASAGQfADaiAFt0QAAAAAAADQP6IQtgEgBkHgA2ogEyAWIAYpA/ADIAYpA/gDEHogBikD6AMhFiAGKQPgAyETDAELIANBgMq17gFHBEAgBkHQBGogBbdEAAAAAAAA6D+iELYBIAZBwARqIBMgFiAGKQPQBCAGKQPYBBB6IAYpA8gEIRYgBikDwAQhEwwBCyAFtyEZIAIgCEEFakH/D3FGBEAgBkGQBGogGUQAAAAAAADgP6IQtgEgBkGABGogEyAWIAYpA5AEIAYpA5gEEHogBikDiAQhFiAGKQOABCETDAELIAZBsARqIBlEAAAAAAAA6D+iELYBIAZBoARqIBMgFiAGKQOwBCAGKQO4BBB6IAYpA6gEIRYgBikDoAQhEwsgAUHvAEoNACAGQdADaiATIBZCAEKAgICAgIDA/z8Q0wUgBikD0AMgBikD2ANCAEIAEIACDQAgBkHAA2ogEyAWQgBCgICAgICAwP8/EHogBikDyAMhFiAGKQPAAyETCyAGQbADaiAVIBQgEyAWEHogBkGgA2ogBikDsAMgBikDuAMgGCAXEJkEIAYpA6gDIRQgBikDoAMhFQJAIAdB/////wdxQX4gEWtMDQAgBiAUQv///////////wCDNwOYAyAGIBU3A5ADIAZBgANqIBUgFEIAQoCAgICAgID/PxAzIAYpA5ADIAYpA5gDQoCAgICAgIC4wAAQ2QUhAiAUIAYpA4gDIAJBAEgiAxshFCAVIAYpA4ADIAMbIRUgCyADIAEgBEdycSATIBZCAEIAEIACQQBHcUVBACAMIAJBf0pqIgxB7gBqIBJMGw0AQYSnBEHEADYCAAsgBkHwAmogFSAUIAwQ3AUgBikD8AIhFCAGKQP4AgshEyAAIBQ3AwAgACATNwMIIAZBkMYAaiQAC/kMAgh/B34jAEGwA2siBSQAAn8gASgCBCIGIAEoAmhJBEAgASAGQQFqNgIEIAYtAAAMAQsgARBbCyEGAkACfwNAIAZBMEcEQAJAIAZBLkcNBCABKAIEIgYgASgCaE8NACABIAZBAWo2AgQgBi0AAAwDCwUgASgCBCIGIAEoAmhJBH9BASEIIAEgBkEBajYCBCAGLQAABUEBIQggARBbCyEGDAELCyABEFsLIQZBASEJIAZBMEcNAANAIBFCf3whEQJ/IAEoAgQiBiABKAJoSQRAIAEgBkEBajYCBCAGLQAADAELIAEQWwsiBkEwRg0AC0EBIQgLQoCAgICAgMD/PyENA0ACQCAGQSByIQoCQAJAIAZBUGoiC0EKSQ0AIAZBLkdBACAKQZ9/akEFSxsNAiAGQS5HDQAgCQ0CQQEhCSAPIREMAQsgCkGpf2ogCyAGQTlKGyEGAkAgD0IHVwRAIAYgB0EEdGohBwwBCyAPQhxXBEAgBUEwaiAGEH8gBUEgaiASIA1CAEKAgICAgIDA/T8QMyAFQRBqIAUpAyAiEiAFKQMoIg0gBSkDMCAFKQM4EDMgBSAOIBAgBSkDECAFKQMYEHogBSkDCCEQIAUpAwAhDgwBCyAMIAZFcg0AIAVB0ABqIBIgDUIAQoCAgICAgID/PxAzIAVBQGsgDiAQIAUpA1AgBSkDWBB6IAUpA0ghEEEBIQwgBSkDQCEOCyAPQgF8IQ9BASEICyABKAIEIgYgASgCaEkEfyABIAZBAWo2AgQgBi0AAAUgARBbCyEGDAELCwJ+AkAgCEUEQCABKAJoRQ0BIAEgASgCBCICQX9qNgIEIAEgAkF+ajYCBCAJRQ0BIAEgAkF9ajYCBAwBCyAPQgdXBEAgDyENA0AgB0EEdCEHIA1CAXwiDUIIUg0ACwsCQCAGQV9xQdAARgRAIAEQ2wUiDUKAgICAgICAgIB/Ug0BQgAhDSABKAJoRQ0BIAEgASgCBEF/ajYCBAwBC0IAIQ0gASgCaEUNACABIAEoAgRBf2o2AgQLIAdFBEAgBUHwAGogBLdEAAAAAAAAAACiELYBIAUpA3AhDiAFKQN4DAILIBEgDyAJG0IChiANfEJgfCIPQQAgA2utVQRAQYSnBEHEADYCACAFQaABaiAEEH8gBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AEDMgBUGAAWogBSkDkAEgBSkDmAFCf0L///////+///8AEDMgBSkDgAEhDiAFKQOIAQwCCyAPIANBnn5qrFkEQCAHQX9KBEADQCAFQaADaiAOIBBCAEKAgICAgIDA/79/EHogDiAQQoCAgICAgID/PxDZBSEBIAVBkANqIA4gECAOIAUpA6ADIAFBAEgiBhsgECAFKQOoAyAGGxB6IA9Cf3whDyAFKQOYAyEQIAUpA5ADIQ4gB0EBdCABQX9KciIHQX9KDQALCwJ+IA8gA6x9QiB8Ig2nIgFBACABQQBKGyACIA0gAq1TGyIBQfEATgRAIAVBgANqIAQQfyAFKQOIAyERIAUpA4ADIRJCAAwBCyAFQeACakQAAAAAAADwP0GQASABaxDJARC2ASAFQdACaiAEEH8gBUHwAmogBSkD4AIgBSkD6AIgBSkD0AIiEiAFKQPYAiIREN0FIAUpA/gCIRMgBSkD8AILIQ0gBUHAAmogByAHQQFxRSAOIBBCAEIAEIACQQBHIAFBIEhxcSIBahCgAiAFQbACaiASIBEgBSkDwAIgBSkDyAIQMyAFQZACaiAFKQOwAiAFKQO4AiANIBMQeiAFQaACakIAIA4gARtCACAQIAEbIBIgERAzIAVBgAJqIAUpA6ACIAUpA6gCIAUpA5ACIAUpA5gCEHogBUHwAWogBSkDgAIgBSkDiAIgDSATEJkEIAUpA/ABIg0gBSkD+AEiEUIAQgAQgAJFBEBBhKcEQcQANgIACyAFQeABaiANIBEgD6cQ3AUgBSkD4AEhDiAFKQPoAQwCC0GEpwRBxAA2AgAgBUHQAWogBBB/IAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQMyAFQbABaiAFKQPAASAFKQPIAUIAQoCAgICAgMAAEDMgBSkDsAEhDiAFKQO4AQwBCyAFQeAAaiAEt0QAAAAAAAAAAKIQtgEgBSkDYCEOIAUpA2gLIQ8gACAONwMAIAAgDzcDCCAFQbADaiQAC8UHAgZ/An4jAEEwayIEJABB0KMEKAIAIQZBxKMEKAIAIQcDQAJ/IAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAADAELIAEQWwsiAhDeBQ0AC0EBIQUCQAJAIAJBVWoOAwABAAELQX9BASACQS1GGyEFIAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAAIQIMAQsgARBbIQILAkACQAJAA0AgA0H5ogRqLAAAIAJBIHJGBEACQCADQQZLDQAgASgCBCICIAEoAmhJBEAgASACQQFqNgIEIAItAAAhAgwBCyABEFshAgsgA0EBaiIDQQhHDQEMAgsLIANBA0cEQCADQQhGDQEgA0EESQ0CIANBCEYNAQsgASgCaCICBEAgASABKAIEQX9qNgIECyADQQRJDQADQCACBEAgASABKAIEQX9qNgIECyADQX9qIgNBA0sNAAsLIAQgBbJDAACAf5QQhgkgBCkDCCEIIAQpAwAhCQwBCwJAAkACQCADDQBBACEDA0AgA0GCowRqLAAAIAJBIHJHDQECQCADQQFLDQAgASgCBCICIAEoAmhJBEAgASACQQFqNgIEIAItAAAhAgwBCyABEFshAgsgA0EBaiIDQQNHDQALDAELAkACQCADDgQAAQECAQsCQCACQTBHDQACfyABKAIEIgMgASgCaEkEQCABIANBAWo2AgQgAy0AAAwBCyABEFsLQV9xQdgARgRAIARBEGogASAHIAYgBRCNCSAEKQMYIQggBCkDECEJDAULIAEoAmhFDQAgASABKAIEQX9qNgIECyAEQSBqIAEgAiAHIAYgBRCMCSAEKQMoIQggBCkDICEJDAMLIAEoAmgEQCABIAEoAgRBf2o2AgQLDAELAkACfyABKAIEIgMgASgCaEkEQCABIANBAWo2AgQgAy0AAAwBCyABEFsLQShGBEBBASEDDAELQoCAgICAgOD//wAhCCABKAJoRQ0CIAEgASgCBEF/ajYCBAwCCwNAAn8gASgCBCICIAEoAmhJBEAgASACQQFqNgIEIAItAAAMAQsgARBbCyICQVBqQQpJIAJBv39qQRpJciACQd8ARnJFQQAgAkGff2pBGk8bRQRAIANBAWohAwwBCwtCgICAgICA4P//ACEIIAJBKUYNASABKAJoIgIEQCABIAEoAgRBf2o2AgQLIANFDQEDQCADQX9qIQMgAgRAIAEgASgCBEF/ajYCBAsgAw0ACwwBC0GEpwRBHDYCACABEJoECyAAIAk3AwAgACAINwMIIARBMGokAAu0AgIEfwN+IwBBEGsiBCQAQoCAgIDgACEJAkAgACADKQMAIgoQmwgiBkUNACAEQgA3AwggAkECTgRAIAAgBEEIaiADKQMIEMIBDQELIAYtAAQEQCAAEHAMAQsgBCkDCCIIIAYoAgAiBaxWBEAgAEGt2wEQaQwBCyAFIAinIgdrIQUCQCACQQNIDQAgAykDECIIEBENACAAIAQgCBDCAQ0BIAQpAwAiCCAFrVYEQCAAQcDbARBpDAILIAinIQULIAAgAUEeEGwiARAMDQACQAJAIAYtAAQEQCAAEHAMAQsgAEEYEC4iAg0BCyAAIAEQCwwBCyACIAGnIgA2AgggChAOIQkgAiAFNgIUIAIgBzYCECACIAk+AgwgAiAGQQxqEE0gACACNgIgIAEhCQsgBEEQaiQAIAkLQQECfyMAQRBrIgEkAEF/IQICQCAAEJEJDQAgACABQQ9qQQEgACgCIBEAAEEBRw0AIAEtAA8hAgsgAUEQaiQAIAILfAECfyAAIAAtAEoiAUF/aiABcjoASiAAKAIUIAAoAhxLBEAgAEEAQQAgACgCJBEAABoLIABBADYCHCAAQgA3AxAgACgCACIBQQRxBEAgACABQSByNgIAQX8PCyAAIAAoAiwgACgCMGoiAjYCCCAAIAI2AgQgAUEbdEEfdQt+AQV/A0AgACIBQQFqIQAgASwAABDeBQ0ACwJAAkACQCABLAAAIgVBVWoOAwECAAILQQEhAwsgACwAACEFIAAhASADIQQLIAUQRgRAA0AgAkEKbCABLAAAa0EwaiECIAEsAAEhACABQQFqIQEgABBGDQALCyACQQAgAmsgBBsLLgEBfyAAQdCnBCgCADYCOEHQpwQoAgAiAQRAIAEgADYCNAtB0KcEIAA2AgAgAAuhAQEEf0EAIAAoAlQiAygCBCIEIAMoAgAiBWsiBiAGIARLGyIEIAJJBEAgACAAKAIAQRByNgIAIAQhAgsgASADKAIMIAVqIAIQJBogAyADKAIAIAJqIgU2AgAgACAAKAIsIgE2AgQgACABIAAoAjAiACAEIAJrIgQgBCAASxsiAGo2AgggASADKAIMIAVqIAAQJBogAyADKAIAIABqNgIAIAILiwEBAX8jAEEQayIDJAACfgJAIAJBA08NACAAKAJUIQAgA0EANgIEIAMgACgCADYCCCADIAAoAgQ2AgxBACADQQRqIAJBAnRqKAIAIgJrrCABVQ0AIAAoAgggAmusIAFTDQAgACACIAGnaiIANgIAIACtDAELQYSnBEEcNgIAQn8LIQEgA0EQaiQAIAELwQIBA39BgAghAkGkCEErEKUDIQMCQAJAQfWiBEGkCCwAABClA0UEQEGEpwRBHDYCAAwBCyAAQQFyRQRAQYSnBEEwNgIADAELQawJQawRIAAbEIQJIgENAQtBAA8LIAFB/wE6AEsgAUF/NgI8IAFBgAg2AjAgAUGACDYCmAEgASABQZABajYCVCABIAFBrAFqNgIsIAEgACABQawJaiAAGyIANgKcASABQaQILAAANgKgASADRQRAIAFBCEEEQaQILQAAQfIARhs2AgALAkBBpAgtAAAiA0HyAEcEQCADQeEARw0BIAEgAEEAQYAIEIECIgIgAGtBgAggAhsiAjYCkAELIAEgAjYClAELIAFB8AI2AiggAUHxAjYCJCABQfICNgIgIAFB8wI2AgxBjKcEKAIARQRAIAFBfzYCTAsgARCTCQspACABIAEoAgBBD2pBcHEiAUEQajYCACAAIAEpAwAgASkDCBDXBTkDAAv+FgMSfwJ+AXwjAEGwBGsiCSQAIAlBADYCLAJ/IAG9IhhCf1cEQEEBIRIgAZoiAb0hGEHQogQMAQtBASESQdOiBCAEQYAQcQ0AGkHWogQgBEEBcQ0AGkEAIRJBASETQdGiBAshFQJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txEHMgACAVIBIQYSAAQeuiBEHvogQgBUEgcSIDG0HjogRB56IEIAMbIAEgAWIbQQMQYQwBCyAJQRBqIRACQAJ/AkAgASAJQSxqEOQFIgEgAaAiAUQAAAAAAAAAAGIEQCAJIAkoAiwiBkF/ajYCLCAFQSByIhZB4QBHDQEMAwsgBUEgciIWQeEARg0CIAkoAiwhC0EGIAMgA0EASBsMAQsgCSAGQWNqIgs2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQogCUEwaiAJQdACaiALQQBIGyIPIQgDQCAIAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAIQQRqIQggASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgC0EBSARAIAshAyAIIQYgDyEHDAELIA8hByALIQMDQCADQR0gA0EdSBshDAJAIAhBfGoiBiAHSQ0AIAytIRlCACEYA0AgBiAYQv////8PgyAGNQIAIBmGfCIYIBhCgJTr3AOAIhhCgJTr3AN+fT4CACAGQXxqIgYgB08NAAsgGKciA0UNACAHQXxqIgcgAzYCAAsDQCAIIgYgB0sEQCAGQXxqIggoAgBFDQELCyAJIAkoAiwgDGsiAzYCLCAGIQggA0EASg0ACwsgA0F/TARAIApBGWpBCW1BAWohESAWQeYARiENA0BBCUEAIANrIANBd0gbIRcCQCAHIAZPBEAgByAHQQRqIAcoAgAbIQcMAQtBgJTr3AMgF3YhFEF/IBd0QX9zIQ5BACEDIAchCANAIAggAyAIKAIAIgwgF3ZqNgIAIAwgDnEgFGwhAyAIQQRqIgggBkkNAAsgByAHQQRqIAcoAgAbIQcgA0UNACAGIAM2AgAgBkEEaiEGCyAJIAkoAiwgF2oiAzYCLCAPIAcgDRsiCCARQQJ0aiAGIAYgCGtBAnUgEUobIQYgA0EASA0ACwtBACEIAkAgByAGTw0AIA8gB2tBAnVBCWwhCEEKIQMgBygCACIMQQpJDQADQCAIQQFqIQggDCADQQpsIgNPDQALCyAKQQAgCCAWQeYARhtrIBZB5wBGIApBAEdxayIDIAYgD2tBAnVBCWxBd2pIBEAgA0GAyABqIg5BCW0iDEECdCAJQTBqQQRyIAlB1AJqIAtBAEgbakGAYGohDUEKIQMgDiAMQQlsayIOQQdMBEADQCADQQpsIQMgDkEBaiIOQQhHDQALCwJAQQAgBiANQQRqIhFGIA0oAgAiDiAOIANuIgwgA2xrIhQbDQBEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gFCADQQF2IgtGG0QAAAAAAAD4PyAGIBFGGyAUIAtJGyEaRAEAAAAAAEBDRAAAAAAAAEBDIAxBAXEbIQECQCATDQAgFS0AAEEtRw0AIBqaIRogAZohAQsgDSAOIBRrIgs2AgAgASAaoCABYQ0AIA0gAyALaiIDNgIAIANBgJTr3ANPBEADQCANQQA2AgAgDUF8aiINIAdJBEAgB0F8aiIHQQA2AgALIA0gDSgCAEEBaiIDNgIAIANB/5Pr3ANLDQALCyAPIAdrQQJ1QQlsIQhBCiEDIAcoAgAiC0EKSQ0AA0AgCEEBaiEIIAsgA0EKbCIDTw0ACwsgDUEEaiIDIAYgBiADSxshBgsDQCAGIgsgB00iDEUEQCALQXxqIgYoAgBFDQELCwJAIBZB5wBHBEAgBEEIcSETDAELIAhBf3NBfyAKQQEgChsiBiAISiAIQXtKcSIDGyAGaiEKQX9BfiADGyAFaiEFIARBCHEiEw0AQXchBgJAIAwNACALQXxqKAIAIgxFDQBBCiEOQQAhBiAMQQpwDQADQCAGIgNBAWohBiAMIA5BCmwiDnBFDQALIANBf3MhBgsgCyAPa0ECdUEJbCEDIAVBX3FBxgBGBEBBACETIAogAyAGakF3aiIDQQAgA0EAShsiAyAKIANIGyEKDAELQQAhEyAKIAMgCGogBmpBd2oiA0EAIANBAEobIgMgCiADSBshCgsgCiATciIUQQBHIQ4gAEEgIAICfyAIQQAgCEEAShsgBUFfcSIMQcYARg0AGiAQIAggCEEfdSIDaiADc60gEBChAiIGa0EBTARAA0AgBkF/aiIGQTA6AAAgECAGa0ECSA0ACwsgBkF+aiIRIAU6AAAgBkF/akEtQSsgCEEASBs6AAAgECARawsgCiASaiAOampBAWoiDSAEEHMgACAVIBIQYSAAQTAgAiANIARBgIAEcxBzAkACQAJAIAxBxgBGBEAgCUEQakEIciEDIAlBEGpBCXIhCCAPIAcgByAPSxsiBSEHA0AgBzUCACAIEKECIQYCQCAFIAdHBEAgBiAJQRBqTQ0BA0AgBkF/aiIGQTA6AAAgBiAJQRBqSw0ACwwBCyAGIAhHDQAgCUEwOgAYIAMhBgsgACAGIAggBmsQYSAHQQRqIgcgD00NAAsgFARAIABB86IEQQEQYQsgCkEBSCAHIAtPcg0BA0AgBzUCACAIEKECIgYgCUEQaksEQANAIAZBf2oiBkEwOgAAIAYgCUEQaksNAAsLIAAgBiAKQQkgCkEJSBsQYSAKQXdqIQYgB0EEaiIHIAtPDQMgCkEJSiEDIAYhCiADDQALDAILAkAgCkEASA0AIAsgB0EEaiALIAdLGyEFIAlBEGpBCHIhAyAJQRBqQQlyIQsgByEIA0AgCyAINQIAIAsQoQIiBkYEQCAJQTA6ABggAyEGCwJAIAcgCEcEQCAGIAlBEGpNDQEDQCAGQX9qIgZBMDoAACAGIAlBEGpLDQALDAELIAAgBkEBEGEgBkEBaiEGIBNFQQAgCkEBSBsNACAAQfOiBEEBEGELIAAgBiALIAZrIgYgCiAKIAZKGxBhIAogBmshCiAIQQRqIgggBU8NASAKQX9KDQALCyAAQTAgCkESakESQQAQcyAAIBEgECARaxBhDAILIAohBgsgAEEwIAZBCWpBCUEAEHMLDAELIBVBCWogFSAFQSBxIgsbIQoCQCADQQtLDQBBDCADayIGRQ0ARAAAAAAAACBAIRoDQCAaRAAAAAAAADBAoiEaIAZBf2oiBg0ACyAKLQAAQS1GBEAgGiABmiAaoaCaIQEMAQsgASAaoCAaoSEBCyAQIAkoAiwiBiAGQR91IgZqIAZzrSAQEKECIgZGBEAgCUEwOgAPIAlBD2ohBgsgEkECciEPIAkoAiwhCCAGQX5qIgwgBUEPajoAACAGQX9qQS1BKyAIQQBIGzoAACAEQQhxIQggCUEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgZBwKIEai0AACALcjoAACAFQQFqIgcgCUEQamtBAUcgCCADQQBKckVBACABIAa3oUQAAAAAAAAwQKIiAUQAAAAAAAAAAGEbckUEQCAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0ACyAAQSAgAiAPIBAgCUEQamsgDGsgB2ogAyAQaiAMa0ECaiADRSAHIAlrQW5qIANOchsiA2oiDSAEEHMgACAKIA8QYSAAQTAgAiANIARBgIAEcxBzIAAgCUEQaiAHIAlBEGprIgUQYSAAQTAgAyAFIBAgDGsiA2prQQBBABBzIAAgDCADEGELIABBICACIA0gBEGAwABzEHMgCUGwBGokACACIA0gDSACSBsLLQAgAFBFBEADQCABQX9qIgEgAKdBB3FBMHI6AAAgAEIDiCIAQgBSDQALCyABCzUAIABQRQRAA0AgAUF/aiIBIACnQQ9xQcCiBGotAAAgAnI6AAAgAEIEiCIAQgBSDQALCyABC4sCAAJAIAAEfyABQf8ATQ0BAkBBkKUEKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAsANPQQAgAUGAQHFBgMADRxtFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAw8LIAFBgIB8akH//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDwsLQYSnBEEZNgIAQX8FQQELDwsgACABOgAAQQELEwAgAEHQ1gFBABAVQoCAgIDgAAsiAQF/IwBBEGsiAiQAIAIgATYCDCAAIAEQngkgAkEQaiQAC4sBAQJ/IwBBoAFrIgIkACACQQhqQcCdBEGQARAkGiACIAA2AjQgAiAANgIcIAJBfiAAayIDQf////8HQf////8HIANLGyIDNgI4IAIgACADaiIANgIkIAIgADYCGCACQQhqQZ4ZIAEQmwQgAwRAIAIoAhwiACAAIAIoAhhGa0EAOgAACyACQaABaiQACzMBAX8gACgCFCIDIAEgAiAAKAIQIANrIgEgASACSxsiARAkGiAAIAAoAhQgAWo2AhQgAguRAQEEfyAAKAJMQQBOBEBBASECCyAAKAIAQQFxIgRFBEAgACgCNCIBBEAgASAAKAI4NgI4CyAAKAI4IgMEQCADIAE2AjQLIABB0KcEKAIARgRAQdCnBCADNgIACwsgABDmBRogACAAKAIMEQQAGiAAKAJgIgEEQCABEP8BCwJAIARFBEAgABD/AQwBCyACRQ0ACwt6AQF/IAAoAkxBAEgEQAJAIAAsAEtBCkYNACAAKAIUIgEgACgCEE8NACAAIAFBAWo2AhQgAUEKOgAADwsgABDRBQ8LAkACQCAALABLQQpGDQAgACgCFCIBIAAoAhBPDQAgACABQQFqNgIUIAFBCjoAAAwBCyAAENEFCwtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEMIBRQRAIAAgASACKQMIQRQQ4wMhBAsgAkEQaiQAIAQLBQAgAJ0LywEBAn8jAEEQayIBJAACQCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEAgAkGAgMDyA0kNASAARAAAAAAAAAAAQQAQ0wIhAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCwJAAkACQAJAIAAgARChBEEDcQ4DAAECAwsgASsDACABKwMIQQEQ0wIhAAwDCyABKwMAIAErAwgQ0gIhAAwCCyABKwMAIAErAwhBARDTApohAAwBCyABKwMAIAErAwgQ0gKaIQALIAFBEGokACAAC7oCAwF/AX4DfAJAAkAgAL0iAkIgiKdB/////wdxIgFBgIDA/wNPBEAgAqcgAUGAgMCAfGpyDQEgAEQYLURU+yH5P6JEAAAAAAAAcDigDwsgAUH////+A00EQCABQYCAQGpBgICA8gNJDQIgACAAohDUAiAAoiAAoA8LRAAAAAAAAPA/IACZoUQAAAAAAADgP6IiBJ8hACAEENQCIQUCfCABQbPmvP8DTwRARBgtRFT7Ifk/IAAgACAFoqAiACAAoEQHXBQzJqaRvKChDAELRBgtRFT7Iek/IAC9QoCAgIBwg78iAyADoKEgACAAoCAFokQHXBQzJqaRPCAEIAMgA6KhIAAgA6CjIgAgAKChoaFEGC1EVPsh6T+gCyIAIACaIAJCf1UbDwtEAAAAAAAAAAAgACAAoaMhAAsgAAt2AQF/IAC9QjSIp0H/D3EiAUH/B00EQCAARAAAAAAAAPC/oCIAIAAgAKIgACAAoKCfoBCkAw8LIAFBmAhNBEAgACAAoEQAAAAAAADwvyAAIACiRAAAAAAAAPC/oJ8gAKCjoBDRAg8LIAAQ0QJE7zn6/kIu5j+gCwUAIACcC5sBAgF/AX4gAL1C////////////AIMiAr8hAAJ8IAJCIIinIgFBwdyY/wNNBEBEAAAAAAAA8D8gAUGAgMDyA0kNARogABCiAiIAIACiIABEAAAAAAAA8D+gIgAgAKCjRAAAAAAAAPA/oA8LIAFBwdyYhARNBEAgABCiBCIARAAAAAAAAPA/IACjoEQAAAAAAADgP6IPCyAAEOoFCwsFACAAmwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABDnBSEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARChBCECIAErAwAgASsDCCACQQFxEOcFIQALIAFBEGokACAAC7wCAwN/A34BfCMAQSBrIgIkACAAvUL///////////8AgyIFIAG9Qv///////////wCDIgYgBSAGVBsiB78hAAJAIAdCNIinIgNB/w9GDQAgBSAGIAUgBlYbIgW/IQECQCAHUA0AIAVCNIinIgRB/w9GDQAgBCADa0HBAE4EQCABIACgIQAMAgsCfCAEQf4LTwRAIABEAAAAAAAAMBSiIQAgAUQAAAAAAAAwFKIhAUQAAAAAAACwawwBC0QAAAAAAADwPyADQbwESw0AGiAARAAAAAAAALBroiEAIAFEAAAAAAAAsGuiIQFEAAAAAAAAMBQLIQggAkEYaiACQRBqIAEQ6QUgAkEIaiACIAAQ6QUgCCACKwMAIAIrAxCgIAIrAwigIAIrAxign6IhAAwBCyABIQALIAJBIGokACAAC60DAgV/AX4gAb1C////////////AINCgICAgICAgPj/AFhBACAAvUL///////////8Ag0KBgICAgICA+P8AVBtFBEAgACABoA8LIAG9IgdCIIinIgJBgIDAgHxqIAenIgVyRQRAIAAQoAQPCyAHQj6Ip0ECcSIGIAC9IgdCP4inciEDAkACQCAHQiCIp0H/////B3EiBCAHp3JFBEACQCADQQJrDgICAAMLRBgtRFT7IQnADwsgAkH/////B3EiAiAFckUEQEQYLURU+yH5PyAApg8LAkAgAkGAgMD/B0YEQCAEQYCAwP8HRw0BIANBA3RBkJwEaisDAA8LIARBgIDA/wdHQQAgAkGAgIAgaiAETxtFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCgBAshAAJAAkACQCADDgMF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CwwBC0KAgICAMCEICyACRQ0BCyAIECEEQCAAIAhBARCwARoLIAAgCxALIAAgCBALIAAgChALIAAgARALDAELIAEhDQsgBUEgaiQAIA0LgwIDAn8BfgF8IAC9IgNCIIinQf////8HcSIBQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiECAkAgAUH//z9NBEBBk/H9ywIhAiAARAAAAAAAAFBDor0iA0IgiKdB/////wdxIgFFDQELIAAgA0KAgICAgICAgIB/gyABQQNuIAJqrUIghoS/IgQgBKIgBCAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIASivUKAgICACHxCgICAgHyDvyIAIACioyIEIAChIAAgAKAgBKCjIACiIACgIQALIAALsgEDAX8BfgF8IAC9IgJC////////////AIO/IQACQCACQjSIp0H/D3EiAUGZCE8EQCAAENECRO85+v5CLuY/oCEADAELIAFBgAhPBEAgACAAoEQAAAAAAADwPyAAIACiRAAAAAAAAPA/oJ8gAKCjoBDRAiEADAELIAFB5QdJDQAgACAAoiIDIANEAAAAAAAA8D+gn0QAAAAAAADwP6CjIACgEKQDIQALIAAgAJogAkJ/VRsLyAEBAX8CQAJAIAAgAXNBA3ENACABQQNxBEADQCAAIAEtAAAiAjoAACACRQ0DIABBAWohACABQQFqIgFBA3ENAAsLIAEoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENAANAIAAgAjYCACABKAIEIQIgAEEEaiEAIAFBBGohASACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLIAAgAS0AACICOgAAIAJFDQADQCAAIAEtAAEiAjoAASAAQQFqIQAgAUEBaiEBIAINAAsLC9kBAQJ/AkAgAUH/AXEiAwRAIABBA3EEQANAIAAtAAAiAkUgAiABQf8BcUZyDQMgAEEBaiIAQQNxDQALCwJAIAAoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENACADQYGChAhsIQMDQCACIANzIgJBf3MgAkH//ft3anFBgIGChHhxDQEgACgCBCECIABBBGohACACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLA0AgACICLQAA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QdHJAEEAEBVCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBAOBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQLCIEEAwEfkKAgICA4AAFIAAgBKdBAhDkAwsLSQIBfwF+IAAgARCwBCIBEAwEQCABDwtCgICAgDAhAyABpyICKAIEQYCAgIB4RwRAIAAgACgCECACEMwCEDIhAwsgACABEAsgAwsJACAAIAEQsAQLQAEBfiAAIAMpAwAQ9gFBAEetQoCAgIAQhCEEIAEQEQRAIAQPCyAAIAFBBhBsIgEQDEUEQCAAIAEgBBDoAQsgAQtOAQF+IwBBEGsiAiQAIAIgACABELAEIgE3AwgCQCABEAwEQCABIQQMAQsgAEKAgICAMEEBIAJBCGoQhgYhBCAAIAEQCwsgAkEQaiQAIAQLLQBCgICAgOAAIAAgAykDACADKQMIQQAQmAIiAEEAR61CgICAgBCEIABBAEgbC4sBAQR+IAMpAxAhBiADKQMIIQcgAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAECdCgICAgOAADwtCgICAgOAAIQUCQCAAIAcQOiICRQ0AIAAgAacgAiAGEA4gBEEAEPgDIQMgACACEBIgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAECdCgICAgOAADwsgACABQQNBABD0AgtjAQF+IAMpAwAiBEL/////b1gEQCAAECdCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOiICRQ0AIAAgBCACEHchAyAAIAIQEiADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQJwwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA6IgINAQtCgICAgOAADwsgACABIAIgBEEAEBMhASAAIAIQEiABC2YBAX4gAykDACIEQv////9vWARAIAAQJ0KAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA6IgJFDQAgACAEIAJBABDaASEDIAAgAhASIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuLAQIBfwJ+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gIAEaiEDDAILIAAgBGotABAhAwsgBCECCyABIAI2AgAgAwvZAgICfwJ+IwBBIGsiAiQAQoCAgIDgACEHAkAgACABEF8iARAMDQAgACACQQhqQQcQQhogAkEIakE8EDwaIAJBCGogBEEDdCIFQcDCAWooAgAiBhCIARpBnj0gBHZBAXFFBEAgAkEIakEgEDwaIAJBCGogBUHEwgFqKAIAEIgBGiACQQhqQcHDARCIARogACADKQMAEF8iCBAMBEAgACABEAsgAkEIahBFDAILIAinIQNBACEEA0AgBCADKAIEQf////8HcU9FBEACQCADIAQQMSIFQSJGBEAgAkEIakHEwwEQiAEaDAELIAJBCGogBRCSARoLIARBAWohBAwBCwsgACAIEAsgAkEIakEiEDwaCyACQQhqQT4QPBogAkEIaiABEIoBGiACQQhqQcvDARCIARogAkEIaiAGEIgBGiACQQhqQT4QPBogAkEIahA4IQcLIAJBIGokACAHC4oBAQJ/IwBBEGsiAiQAIAIgATYCDANAIAAgAkEMahCmCiIDEPUFDQALAkAgAxD3BUUEQEEAIQMMAQtBASEDIAIgAUEBaiIBNgIMA0AgASAAKAIEQf////8HcU4NASAAIAJBDGoQ1wEiARD1BQRAIAIoAgwhAQwBCwsgARD3BUUhAwsgAkEQaiQAIAMLogIBA38jAEEwayICJAACQCAAIAEQXyIBEAwNACABpyIFKAIEQf////8HcSIDRQ0AAkAgACACQRhqIAMQQg0AQQAhAyACQQA2AhQDQAJAIAMgBSgCBEH/////B3FIBEACQAJAIARFIAUgAkEUahDXASIDQaMHR3INACAFIAIoAhRBf2oQqApFDQAgAkHCBzYCCEEBIQYMAQsgAkEIaiADIAQQpgQiBkEBTg0AQQAhBgtBACEDA0AgAyAGRg0CIANBAnQhByADQQFqIQMgAkEYaiAHIAJBCGpqKAIAEL4BRQ0ACwwDCyAAIAEQCyACQRhqEDghAQwDCyACKAIUIQMMAAsACyAAIAEQCyACQRhqEEVCgICAgOAAIQELIAJBMGokACABC1oBAX5CgICAgOAAIQQgACABEF8iARAMBH5CgICAgOAABSAAIAMpAwAQLCIEEAwEQCAAIAEQC0KAgICA4AAPCyABpyAEpxCUAiECIAAgARALIAAgBBAL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dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wGwLgAAgC8AAEAwAACgMAAA8DAAAEAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0L8jBjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQAcy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAAAADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdABzdHJpbmcgZXhwZWN0ZWQAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB2YWx1ZSBpcyBub3QgaXRlcmFibGUAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQBKU19OZXdTeW1ib2xGcm9tQXRvbQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAbm90IGEgc3ltYm9sAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAWwBdAGdldCAAc2V0IABwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBwYXJlbnQgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIG51bGwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGpzX29wX2RlZmluZV9jbGFzcwByZWNlaXZlciBpcyBub3QgYW4gb2JqZWN0AHNldHRlciBpcyBmb3JiaWRkZW4AaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AaW52YWxpZCAnaW4nIG9wZXJhbmQAbm90IGEgY29uc3RydWN0b3IAICAgIGF0ICVzADolZAA8YW5vbnltb3VzPgAgKCVzACAobmF0aXZlKQBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAC4ALi4AYnl0ZWNvZGUgZnVuY3Rpb24gZXhwZWN0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAGNpcmN1bGFyIHJlZmVyZW5jZQBnZXQgJXMAc2V0ICVzAGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABub3JtYWxpemUAQbDOAAv1ARknAAADAAAAAAAAAHQAAABiYWQgbm9ybWFsaXphdGlvbiBmb3JtAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzACVzAGZsYWdzAHNvdXJjZQBnbG9iYWwAaWdub3JlQ2FzZQBtdWx0aWxpbmUAZG90QWxsAHVuaWNvZGUAc3RpY2t5AGV4ZWMAY29tcGlsZQB0ZXN0AHRvU3RyaW5nAFtTeW1ib2wucmVwbGFjZV0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wuc3BsaXRdAEGw0AAL4AN7JwAAAQEAAHUAAAAAAAAAgScAAAEBAAB2AAAAAAAAAIgnAAABAgEAdwAAAAAAAACPJwAAAQICAHcAAAAAAAAAmicAAAECBAB3AAAAAAAAAKQnAAABAggAdwAAAAAAAACrJwAAAQIQAHcAAAAAAAAAsycAAAECIAB3AAAAAAAAALonAAADAAAAAQAAADAAAAC/JwAAAwAAAAIAAAB4AAAAxycAAAMAAAABAAAAeQAAAMwnAAADAAAAAAAAAHoAAADVJwAAAwAAAAIAAAB7AAAA5icAAAMAAAABAAAAfAAAAPUnAAADAAAAAQAAAH0AAAAHKAAAAwAAAAEAAAB+AAAAFygAAAMAAAACAAAAfwAAACg/OikAb3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFJlZ0V4cCBleGVjIG1ldGhvZCBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbABub3QgYSBzdHJpbmcAeQBbU3ltYm9sLnNwZWNpZXNdAL8pAAABAQAAgAAAAAAAAABuZXh0AFtTeW1ib2wudG9TdHJpbmdUYWddAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAQaDUAAvXCuApAAADAAAAAAwAAIEAAADlKQAAAQMAAPopAAAAAAAAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudAB1bmV4cGVjdGVkIGNoYXJhY3RlcgBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAZXhwZWN0aW5nIHByb3BlcnR5IG5hbWUAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAGV4cGVjdGluZyAnJWMnACAAXHUlMDR4AEFycmF5IGxvbyBsb25nAEpTT04AAAAAAAAAAJQrAAADCAAAwCsAAAMAAABwYXJzZQBzdHJpbmdpZnkAsCsAAAMAAAACAAAAggAAALYrAAADAAAAAwAAAIMAAADlKQAAAQMAAJQrAAAAAAAAcHJveHk6IGluY29uc2lzdGVudCBpc0V4dGVuc2libGUAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBwcm94eTogaW5jb25zaXN0ZW50IGdldE93blByb3BlcnR5RGVzY3JpcHRvcgBpbnZhbGlkIGdldHRlcgBpbnZhbGlkIHNldHRlcgBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AHByb3h5OiB0YXJnZXQgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50IGluIHByb3h5IG93bktleXMAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGRlZmluZVByb3BlcnR5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IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24Acy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwAA5SkAAAEDAABCDgAAAAAAAHZhbHVlT2YAW1N5bWJvbC50b1ByaW1pdGl2ZV0AdG9VVENTdHJpbmcAdG9HTVRTdHJpbmcAdG9JU09TdHJpbmcAdG9EYXRlU3RyaW5nAHRvVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAGdldFRpbWV6b25lT2Zmc2V0AGdldFRpbWUAZ2V0WWVhcgBnZXRGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBnZXRNb250aABnZXRVVENNb250aABnZXREYXRlAGdldFVUQ0RhdGUAZ2V0SG91cnMAZ2V0VVRDSG91cnMAZ2V0TWludXRlcwBnZXRVVENNaW51dGVzAGdldFNlY29uZHMAZ2V0VVRDU2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAZ2V0VVRDTWlsbGlzZWNvbmRzAGdldERheQBnZXRVVENEYXkAc2V0VGltZQBzZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAHNldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBzZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAc2V0SG91cnMAc2V0VVRDSG91cnMAc2V0RGF0ZQBzZXRVVENEYXRlAHNldE1vbnRoAHNldFVUQ01vbnRoAHNldFllYXIAc2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAdG9KU09OAEGg7wALtgZgNQAAAwAAAAAAAACXAAAAzCcAAAMAEwAAAQAAmAAAAGg1AAADAAAAAQAAAJkAAAB9NQAAAwADAAABAACYAAAAiTUAAAMJAAB9NQAA/////5U1AAADACMAAAEAAJgAAAChNQAAAwARAAABAACYAAAArjUAAAMAEgAAAQAAmAAAALs1AAADADMAAAEAAJgAAADKNQAAAwAxAAABAACYAAAA3TUAAAMAMgAAAQAAmAAAAPA1AAADAAAAAAAAAJoAAAACNgAAAwAAAAAAAACXAAAACjYAAAMAAQEAAQAAmwAAABI2AAADAAEAAAEAAJsAAAAeNgAAAwAAAAABAACbAAAALTYAAAMAEQAAAQAAmwAAADY2AAADABAAAAEAAJsAAABCNgAAAwAhAAABAACbAAAASjYAAAMAIAAAAQAAmwAAAFU2AAADADEAAAEAAJsAAABeNgAAAwAwAAABAACbAAAAajYAAAMAQQAAAQAAmwAAAHU2AAADAEAAAAEAAJsAAACDNgAAAwBRAAABAACbAAAAjjYAAAMAUAAAAQAAmwAAAJw2AAADAGEAAAEAAJsAAACsNgAAAwBgAAABAACbAAAAvzYAAAMAcQAAAQAAmwAAAMY2AAADAHAAAAEAAJsAAADQNgAAAwAAAAEAAACcAAAA2DYAAAMAcQYBAQAAnQAAAOg2AAADAHAGAQEAAJ0AAAD7NgAAAwBxBQIBAACdAAAABjcAAAMAcAUCAQAAnQAAABQ3AAADAHEEAwEAAJ0AAAAfNwAAAwBwBAMBAACdAAAALTcAAAMAcQMEAQAAnQAAADY3AAADAHADBAEAAJ0AAABCNwAAAwAxAgEBAACdAAAASjcAAAMAMAIBAQAAnQAAAFU3AAADADEBAgEAAJ0AAABeNwAAAwAwAQIBAACdAAAAajcAAAMAAAABAAAAngAAAHI3AAADADEAAwEAAJ0AAAB+NwAAAwAwAAMBAACdAAAAjTcAAAMAAAABAAAAnwAAAG5vdCBhIERhdGUgb2JqZWN0AERhdGUgdmFsdWUgaXMgTmFOAEludmFsaWQgRGF0ZQAlLjNzLCAlMDJkICUuM3MgJTAqZCAAQeD1AAsVU3VuTW9uVHVlV2VkVGh1RnJpU2F0AEGA9gALogFKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMAJS4zcyAlLjNzICUwMmQgJTAqZAAlMDRkACUrMDdkAC0lMDJkLSUwMmRUACUwMmQvJTAyZC8lMCpkACUwMmQ6JTAyZDolMDJkIEdNVAAlMDJkJTAyZAAlMDJkOiUwMmQ6JTAyZC4lMDNkWgAlMDJkOiUwMmQ6JTAyZCAlY00AQbD3AAtkHwAAABwAAAAfAAAAHgAAAB8AAAAeAAAAHwAAAB8AAAAeAAAAHwAAAB4AAAAfAAAAaW52YWxpZCBoaW50AG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAbm93AFVUQwBBoPgAC7AsDTwAAAMAAAAAAAAAoAAAALArAAADAAAAAQAAAKEAAAARPAAAAwAAAAcAAACiAAAAc2YgIT0gTlVMTABfX0pTX0V2YWxJbnRlcm5hbABKU19WQUxVRV9HRVRfVEFHKHNmLT5jdXJfZnVuYykgPT0gSlNfVEFHX09CSkVDVABqc19jbGFzc19oYXNfYnl0ZWNvZGUocC0+Y2xhc3NfaWQpAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIG51bWJlciBsaXRlcmFsACUuKnMAdXNlIHN0cmljdAB1c2Ugc3RyaXAAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAGZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQB0b28gbWFueSBhcmd1bWVudHMAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACguLi5hKXtzdXBlciguLi5hKTt9ACgpe30AZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAHlpZWxkIGluIGRlZmF1bHQgZXhwcmVzc2lvbgCam5ydnqChoq2ur59jYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAYXdhaXQgaW4gZGVmYXVsdCBleHByZXNzaW9uAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9kZQBjYW5ub3QgZGVsZXRlIGEgcHJpdmF0ZSBjbGFzcyBmaWVsZABpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AHVwZGF0ZV9sYWJlbABscy0+cmVmX2NvdW50ID49IDAAaW52YWxpZCBwcm9wZXJ0eSBuYW1lAGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHB1dF9sdmFsdWUAc2V0X29iamVjdF9uYW1lACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGlkZW50aWZpZXIgZXhwZWN0ZWQAaW52YWxpZCBleHBvcnQgc3ludGF4AGZyb20gY2xhdXNlIGV4cGVjdGVkACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAGV4cGVjdGluZyAnYXMnAGludmFsaWQgaW1wb3J0IGJpbmRpbmcAZHVwbGljYXRlIGltcG9ydCBiaW5kaW5nAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAHJldHVybiBub3QgaW4gYSBmdW5jdGlvbgBsaW5lIHRlcm1pbmF0b3Igbm90IGFsbG93ZWQgYWZ0ZXIgdGhyb3cAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAGR1cGxpY2F0ZSBkZWZhdWx0AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBpbnZhbGlkIGtleXdvcmQ6IHdpdGgAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAYSBkZWNsYXJhdGlvbiBpbiB0aGUgaGVhZCBvZiBhIGZvci0lcyBsb29wIGNhbid0IGhhdmUgYW4gaW5pdGlhbGl6ZXIAb2YAaW4AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AY29udGludWUgbXVzdCBiZSBpbnNpZGUgbG9vcABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABicmVhay9jb250aW51ZSBsYWJlbCBub3QgZm91bmQAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAY3Bvb2xfaWR4ID49IDAAanNfY3JlYXRlX2Z1bmN0aW9uAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABhZGRfZXZhbF92YXJpYWJsZXMAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdAByZXNvbHZlX3ZhcmlhYmxlcwBsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AGJjX2J1Zltwb3NdID09IE9QX2xhYmVsAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgB2YXJfa2luZCAhPSBKU19WQVJfTk9STUFMAHJlc29sdmVfc2NvcGVfcHJpdmF0ZV9maWVsZAB2YXJfa2luZCA9PSBKU19WQVJfUFJJVkFURV9TRVRURVIAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABza2lwX2RlYWRfY29kZQByZXNvbHZlX2xhYmVscwBscy0+YWRkciA9PSAtMQBkaWZmID09IChpbnQxNl90KWRpZmYAZGlmZiA9PSAoaW50OF90KWRpZmYAbGFiZWxfc2xvdHNbaV0uZmlyc3RfcmVsb2MgPT0gTlVMTABmaW5kX2p1bXBfdGFyZ2V0AGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpAGJ5dGVjb2RlIGJ1ZmZlciBvdmVyZmxvdyAob3A9JWQsIHBjPSVkKQBzdGFjayB1bmRlcmZsb3cgKG9w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ZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA0HEAAJBvAADgcQAAAQAwADoAQeDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGVjX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBsOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEB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EvoGAIQJAPAKAHAMAPQNAEoQIBoYIHQbIN0gAAyoAFqqIBr/AK0OATgSIcEVIeUZIaodIYzRQUrhIfABDgAAAABBZGxhbSxBZGxtAEFob20sQWhvbQBBbmF0b2xpYW5fSGllcm9nbHlwaHMsSGx1dwBBcmFiaWMsQXJhYgBBcm1lbmlhbixBcm1uAEF2ZXN0YW4sQXZzdABCYWxpbmVzZSxCYWxpAEJhbXVtLEJhbXUAQmFzc2FfVmFoLEJhc3MAQmF0YWssQmF0awBCZW5nYWxpLEJlbmcAQmhhaWtzdWtpLEJoa3MAQm9wb21vZm8sQm9wbwBCcmFobWksQnJhaABCcmFpbGxlLEJyYWkAQnVnaW5lc2UsQnVnaQBCdWhpZCxCdWhkAENhbmFkaWFuX0Fib3JpZ2luYWwsQ2FucwBDYXJpYW4sQ2FyaQBDYXVjYXNpYW5fQWxiYW5pYW4sQWdoYgBDaGFrbWEsQ2FrbQBDaGFtLENoYW0AQ2hlcm9rZWUsQ2hlcgBDaG9yYXNtaWFuLENocnMAQ29tbW9uLFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEHwngILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHAB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YXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEHwvgILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFu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jVR1Hw1bdR+NYXUfDWh1H41udR8NdXUfjXt1Hw2CdR+NiHUfDY91H42VdR8NnHUfjaJ1AwGpdZ8IqnWBQK51n4OudYFAsHWfjLB1gcC2dS0Dt3WfiLh1gcC8dZ8DvXWBwL51nwy/dYFAxXUtg8V1nwjHdYFAy3Wfg8t1gUDNdZ+MzXWBwNN1LQPUdZ+I1XWBwNl1nwPadYHA23WfDNx1gUDidS2D4nWfCOR1gUDodZ+D6HWBQOp1n4zqdYHA8HUtBPF1H4XzdR8F9nUfhfh1HwX7dR+F/XUtAoB7rU2BewNCiHuBwIl7LUWKewMEjXuBgJB7A9yRey0FoHutyKJ7g0Soe63IqnuXAEB8IUVAfCUNRHyHgEp8FcFKfBdBS3wfDUx8F4JSfJmAU3yXwFN8l4FafJcAZHwvAYB8gYCAfAMWhHzBBJB8AwGUfB8F/H6sAQC+ENEAvqxHCb4QOQ2+LIcpviwCLb6QNy6+kP9JvhC8ab4AAAAAAAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCr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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:function(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 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, "javaScript", javaScript);
+ 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;
+ }
- for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {
+ const xref = parameters.xref;
+
+ 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,944 +21438,168 @@ 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;
-
-var _util = __w_pdfjs_require__(2);
-
-var QueueOptimizer = function QueueOptimizerClosure() {
- function addState(parentState, pattern, checkFn, iterateFn, processFn) {
- var state = parentState;
+}));
+exports.createDefaultAppearance = createDefaultAppearance;
+exports.parseDefaultAppearance = parseDefaultAppearance;
- for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
- var item = pattern[i];
- state = state[item] || (state[item] = []);
- }
+var _primitives = __w_pdfjs_require__(5);
- state[pattern[pattern.length - 1]] = {
- checkFn,
- iterateFn,
- processFn
- };
- }
+var _util = __w_pdfjs_require__(2);
- function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
- var iFirstPIMXO = iFirstSave + 2;
+var _colorspace = __w_pdfjs_require__(23);
- for (var i = 0; i < count; i++) {
- var arg = argsArray[iFirstPIMXO + 4 * i];
- var imageMask = arg.length === 1 && arg[0];
+var _core_utils = __w_pdfjs_require__(8);
- 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;
- }
+var _evaluator = __w_pdfjs_require__(27);
- break;
- }
+var _stream = __w_pdfjs_require__(12);
- return count - i;
+class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
+ constructor(str) {
+ super(new _stream.StringStream(str));
}
- 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
+ parse() {
+ const operation = {
+ fn: 0,
+ args: []
+ };
+ const result = {
+ fontSize: 0,
+ fontName: _primitives.Name.get(""),
+ fontColor: new Uint8ClampedArray([0, 0, 0])
};
- 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]];
+ try {
+ while (true) {
+ operation.args.length = 0;
- if (!state || Array.isArray(state)) {
- i++;
- continue;
+ if (!this.read(operation)) {
+ break;
}
- context.iCurr = i;
- i++;
-
- if (state.checkFn && !(0, state.checkFn)(context)) {
- state = null;
+ if (this.savedStatesDepth !== 0) {
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;
- }
+ const {
+ fn,
+ args
+ } = operation;
- this.dependencies.add(dependency);
- this.addOp(_util.OPS.dependency, [dependency]);
- },
+ switch (fn | 0) {
+ case _util.OPS.setFont:
+ const [fontName, fontSize] = args;
- addDependencies(dependencies) {
- for (const dependency of dependencies) {
- this.addDependency(dependency);
- }
- },
+ if ((0, _primitives.isName)(fontName)) {
+ result.fontName = fontName;
+ }
- addOpList(opList) {
- if (!(opList instanceof OperatorList)) {
- (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.');
- return;
- }
+ if (typeof fontSize === "number" && fontSize > 0) {
+ result.fontSize = fontSize;
+ }
- for (const dependency of opList.dependencies) {
- this.dependencies.add(dependency);
- }
+ break;
- for (var i = 0, ii = opList.length; i < ii; i++) {
- this.addOp(opList.fnArray[i], opList.argsArray[i]);
- }
- },
+ case _util.OPS.setFillRGBColor:
+ _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
- getIR() {
- return {
- fnArray: this.fnArray,
- argsArray: this.argsArray,
- length: this.length
- };
- },
+ break;
- get _transfers() {
- const transfers = [];
- const {
- fnArray,
- argsArray,
- length
- } = this;
+ case _util.OPS.setFillGray:
+ _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
- 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];
- ;
+ break;
- if (!arg.cached) {
- transfers.push(arg.data.buffer);
- }
+ case _util.OPS.setFillColorSpace:
+ _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
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();
+ } catch (reason) {
+ (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
}
- };
- return OperatorList;
-}();
-
-exports.OperatorList = OperatorList;
-
-/***/ }),
-/* 27 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.writeDict = writeDict;
-exports.incrementalUpdate = incrementalUpdate;
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _crypto = __w_pdfjs_require__(22);
-
-function writeDict(dict, buffer, transform) {
- buffer.push("<<");
-
- for (const key of dict.getKeys()) {
- buffer.push(` /${key} `);
- writeValue(dict.getRaw(key), buffer, transform);
- }
-
- 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);
- }
-
- buffer.push(string);
- buffer.push("\nendstream\n");
-}
-
-function writeArray(array, buffer, transform) {
- buffer.push("[");
- let first = true;
-
- for (const val of array) {
- if (!first) {
- buffer.push(" ");
- } else {
- first = false;
- }
-
- writeValue(val, buffer, transform);
- }
-
- buffer.push("]");
-}
-
-function numberToString(value) {
- if (Number.isInteger(value)) {
- return value.toString();
- }
-
- const roundedValue = Math.round(value * 100);
-
- 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(`/${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);
- }
-}
-
-function writeInt(number, size, offset, buffer) {
- for (let i = size + offset - 1; i > offset - 1; i--) {
- buffer[i] = number & 0xff;
- number >>= 8;
+ return result;
}
- return offset + size;
}
-function writeString(string, offset, buffer) {
- for (let i = 0, len = string.length; i < len; i++) {
- buffer[offset + i] = string.charCodeAt(i) & 0xff;
- }
-}
-
-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);
-
- 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 parseDefaultAppearance(str) {
+ return new DefaultAppearanceEvaluator(str).parse();
}
-function incrementalUpdate(originalData, xrefInfo, newRefs) {
- const newXref = new _primitives.Dict(null);
- const refForXrefTable = xrefInfo.newRef;
- let buffer, baseOffset;
- const lastByte = originalData[originalData.length - 1];
+function createDefaultAppearance({
+ fontSize,
+ fontName,
+ fontColor
+}) {
+ let colorCmd;
- if (lastByte === 0x0a || lastByte === 0x0d) {
- buffer = [];
- baseOffset = originalData.length;
+ if (fontColor.every(c => c === 0)) {
+ colorCmd = "0 g";
} else {
- buffer = ["\n"];
- baseOffset = originalData.length + 1;
- }
-
- newXref.set("Size", refForXrefTable.num + 1);
- newXref.set("Prev", xrefInfo.startXRef);
- newXref.set("Type", _primitives.Name.get("XRef"));
-
- if (xrefInfo.rootRef !== null) {
- newXref.set("Root", xrefInfo.rootRef);
- }
-
- if (xrefInfo.infoRef !== null) {
- newXref.set("Info", xrefInfo.infoRef);
- }
-
- if (xrefInfo.encrypt !== null) {
- newXref.set("Encrypt", xrefInfo.encrypt);
- }
-
- 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;
-
- 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);
+ colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg";
}
- newXref.set("Index", indexes);
-
- if (xrefInfo.fileIds.length !== 0) {
- const md5 = computeMD5(baseOffset, xrefInfo);
- newXref.set("ID", [xrefInfo.fileIds[0], md5]);
- }
-
- 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;
-
- 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;
+ return `/${(0, _core_utils.escapePDFName)(fontName.name)} ${fontSize} Tf ${colorCmd}`;
}
/***/ }),
-/* 28 */
-/***/ (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.PartialEvaluator = void 0;
+}));
+exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;
var _util = __w_pdfjs_require__(2);
-var _cmap = __w_pdfjs_require__(29);
+var _cmap = __w_pdfjs_require__(28);
var _primitives = __w_pdfjs_require__(5);
-var _fonts = __w_pdfjs_require__(30);
+var _fonts = __w_pdfjs_require__(29);
-var _encodings = __w_pdfjs_require__(33);
+var _encodings = __w_pdfjs_require__(32);
var _core_utils = __w_pdfjs_require__(8);
-var _unicode = __w_pdfjs_require__(36);
+var _unicode = __w_pdfjs_require__(35);
-var _standard_fonts = __w_pdfjs_require__(35);
+var _standard_fonts = __w_pdfjs_require__(34);
-var _pattern = __w_pdfjs_require__(39);
+var _pattern = __w_pdfjs_require__(38);
-var _function = __w_pdfjs_require__(40);
+var _function = __w_pdfjs_require__(39);
var _parser = __w_pdfjs_require__(11);
var _image_utils = __w_pdfjs_require__(24);
-var _bidi = __w_pdfjs_require__(42);
+var _bidi = __w_pdfjs_require__(41);
var _colorspace = __w_pdfjs_require__(23);
var _stream = __w_pdfjs_require__(12);
-var _glyphlist = __w_pdfjs_require__(34);
+var _glyphlist = __w_pdfjs_require__(33);
-var _metrics = __w_pdfjs_require__(43);
+var _metrics = __w_pdfjs_require__(42);
-var _murmurhash = __w_pdfjs_require__(44);
+var _murmurhash = __w_pdfjs_require__(43);
-var _operator_list = __w_pdfjs_require__(26);
+var _operator_list = __w_pdfjs_require__(44);
var _image = __w_pdfjs_require__(45);
@@ -21644,12 +21763,16 @@ class PartialEvaluator {
return newEvaluator;
}
- hasBlendModes(resources) {
+ hasBlendModes(resources, nonBlendModesSet) {
if (!(resources instanceof _primitives.Dict)) {
return false;
}
- const processed = new _primitives.RefSet();
+ if (resources.objId && nonBlendModesSet.has(resources.objId)) {
+ return false;
+ }
+
+ const processed = new _primitives.RefSet(nonBlendModesSet);
if (resources.objId) {
processed.put(resources.objId);
@@ -21761,6 +21884,9 @@ class PartialEvaluator {
}
}
+ processed.forEach(ref => {
+ nonBlendModesSet.put(ref);
+ });
return false;
}
@@ -22098,7 +22224,7 @@ class PartialEvaluator {
return transferMaps;
}
- handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {
+ handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, cacheKey, localTilingPatternCache) {
const tilingOpList = new _operator_list.OperatorList();
const patternResources = _primitives.Dict.merge({
@@ -22112,14 +22238,18 @@ class PartialEvaluator {
resources: patternResources,
operatorList: tilingOpList
}).then(function () {
- return (0, _pattern.getTilingPatternIR)({
- fnArray: tilingOpList.fnArray,
- argsArray: tilingOpList.argsArray
- }, patternDict, args);
- }).then(function (tilingPatternIR) {
+ const operatorListIR = tilingOpList.getIR();
+ const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);
operatorList.addDependencies(tilingOpList.dependencies);
operatorList.addOp(fn, tilingPatternIR);
- }, reason => {
+
+ if (cacheKey) {
+ localTilingPatternCache.set(cacheKey, patternDict.objId, {
+ operatorListIR,
+ dict: patternDict
+ });
+ }
+ }).catch(reason => {
if (reason instanceof _util.AbortException) {
return;
}
@@ -22136,17 +22266,15 @@ class PartialEvaluator {
});
}
- handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {
- var fontName,
- fontSize = 0;
+ handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null) {
+ var fontName;
if (fontArgs) {
fontArgs = fontArgs.slice();
fontName = fontArgs[0].name;
- fontSize = fontArgs[1];
}
- return this.loadFont(fontName, fontRef, resources).then(translated => {
+ return this.loadFont(fontName, fontRef, resources, fallbackFontDict).then(translated => {
if (!translated.font.isType3Font) {
return translated;
}
@@ -22167,8 +22295,6 @@ class PartialEvaluator {
});
}).then(translated => {
state.font = translated.font;
- state.fontSize = fontSize;
- state.fontName = fontName;
translated.send(this.handler);
return translated.loadedName;
});
@@ -22313,14 +22439,14 @@ class PartialEvaluator {
});
}
- loadFont(fontName, font, resources) {
- const errorFont = () => {
- return Promise.resolve(new TranslatedFont({
+ 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
- }));
+ });
};
var fontRef,
@@ -22352,7 +22478,12 @@ class PartialEvaluator {
featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
});
(0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
- fontRef = PartialEvaluator.fallbackFontDict;
+
+ if (fallbackFontDict) {
+ fontRef = fallbackFontDict;
+ } else {
+ fontRef = PartialEvaluator.fallbackFontDict;
+ }
}
if (this.fontCache.has(fontRef)) {
@@ -22365,12 +22496,20 @@ class PartialEvaluator {
return errorFont();
}
- if (font.translated) {
- return font.translated;
+ if (font.cacheKey && this.fontCache.has(font.cacheKey)) {
+ return this.fontCache.get(font.cacheKey);
}
var fontCapability = (0, _util.createPromiseCapability)();
- var preEvaluatedFont = this.preEvaluateFont(font);
+ let preEvaluatedFont;
+
+ try {
+ preEvaluatedFont = this.preEvaluateFont(font);
+ } catch (reason) {
+ (0, _util.warn)(`loadFont - ignoring preEvaluateFont errors: "${reason}".`);
+ return errorFont();
+ }
+
const {
descriptor,
hash
@@ -22416,21 +22555,13 @@ class PartialEvaluator {
fontID = this.idFactory.createFontId();
}
- this.fontCache.put(`id_${fontID}`, fontCapability.promise);
+ font.cacheKey = `cacheKey_${fontID}`;
+ this.fontCache.put(font.cacheKey, fontCapability.promise);
}
(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;
-
- try {
- translatedPromise = this.translateFont(preEvaluatedFont);
- } catch (e) {
- translatedPromise = Promise.reject(e);
- }
-
- translatedPromise.then(translatedFont => {
+ this.translateFont(preEvaluatedFont).then(translatedFont => {
if (translatedFont.fontType !== undefined) {
var xrefFontStats = xref.stats.fontTypes;
xrefFontStats[translatedFont.fontType] = true;
@@ -22518,26 +22649,45 @@ class PartialEvaluator {
});
}
- async handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache) {
- var patternName = args[args.length - 1];
- var pattern;
+ handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache) {
+ const patternName = args.pop();
- if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) {
- var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
- var typeNum = dict.get("PatternType");
+ if (patternName instanceof _primitives.Name) {
+ const name = patternName.name;
+ const localTilingPattern = localTilingPatternCache.getByName(name);
- 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;
+ 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;
+ }
+ }
}
- throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
+ let pattern = patterns.get(name);
+
+ 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}`);
+ }
}
throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
@@ -22604,7 +22754,8 @@ class PartialEvaluator {
task,
resources,
operatorList,
- initialState = null
+ initialState = null,
+ fallbackFontDict = null
}) {
resources = resources || _primitives.Dict.empty;
initialState = initialState || new EvalState();
@@ -22619,6 +22770,7 @@ class PartialEvaluator {
const localImageCache = new _image_utils.LocalImageCache();
const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
const localGStateCache = new _image_utils.LocalGStateCache();
+ const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
var xobjs = resources.get("XObject") || _primitives.Dict.empty;
@@ -22759,7 +22911,7 @@ class PartialEvaluator {
case _util.OPS.setFont:
var fontSize = args[1];
- next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) {
+ next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) {
operatorList.addDependency(loadedName);
operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
}));
@@ -22951,7 +23103,7 @@ class PartialEvaluator {
cs = stateManager.state.fillColorSpace;
if (cs.name === "Pattern") {
- next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache));
+ next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache));
return;
}
@@ -22963,7 +23115,7 @@ class PartialEvaluator {
cs = stateManager.state.strokeColorSpace;
if (cs.name === "Pattern") {
- next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache));
+ next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache));
return;
}
@@ -24293,6 +24445,11 @@ class PartialEvaluator {
}
dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
+
+ if (!(dict instanceof _primitives.Dict)) {
+ throw new _util.FormatError("Descendant font is not a dictionary.");
+ }
+
type = dict.get("Subtype");
if (!(0, _primitives.isName)(type)) {
@@ -24368,7 +24525,7 @@ class PartialEvaluator {
};
}
- translateFont(preEvaluatedFont) {
+ async translateFont(preEvaluatedFont) {
var baseDict = preEvaluatedFont.baseDict;
var dict = preEvaluatedFont.dict;
var composite = preEvaluatedFont.composite;
@@ -24440,7 +24597,7 @@ class PartialEvaluator {
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}".`);
+ (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;
@@ -24493,30 +24650,24 @@ class PartialEvaluator {
italicAngle: descriptor.get("ItalicAngle"),
isType3Font: false
};
- var cMapPromise;
if (composite) {
- var cidEncoding = baseDict.get("Encoding");
+ const cidEncoding = baseDict.get("Encoding");
if ((0, _primitives.isName)(cidEncoding)) {
properties.cidEncoding = cidEncoding.name;
}
- cMapPromise = _cmap.CMapFactory.create({
+ const cMap = await _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);
+ properties.cMap = cMap;
+ properties.vertical = properties.cMap.vertical;
}
- return cMapPromise.then(() => {
- return this.extractDataStructures(dict, baseDict, properties);
- }).then(newProperties => {
+ return this.extractDataStructures(dict, baseDict, properties).then(newProperties => {
this.extractWidths(dict, descriptor, newProperties);
if (type === "Type3") {
@@ -24615,7 +24766,7 @@ class TranslatedFont {
var charProcOperatorList = Object.create(null);
for (const key of charProcs.getKeys()) {
- loadCharProcsPromise = loadCharProcsPromise.then(function () {
+ loadCharProcsPromise = loadCharProcsPromise.then(() => {
var glyphStream = charProcs.get(key);
var operatorList = new _operator_list.OperatorList();
return type3Evaluator.getOperatorList({
@@ -24623,7 +24774,11 @@ class TranslatedFont {
task,
resources: fontResources,
operatorList
- }).then(function () {
+ }).then(() => {
+ if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) {
+ this._removeType3ColorOperators(operatorList);
+ }
+
charProcOperatorList[key] = operatorList.getIR();
for (const dependency of operatorList.dependencies) {
@@ -24643,10 +24798,66 @@ class TranslatedFont {
return this.type3Loaded;
}
+ _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;
+
+ 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;
+ }
+
+ j++;
+ }
+
+ break;
+ }
+
+ i++;
+ }
+ }
+
}
class StateManager {
- constructor(initialState) {
+ constructor(initialState = new EvalState()) {
this.state = initialState;
this.stateStack = [];
}
@@ -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", "paragraph", "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", "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", "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", "hyphensuperior", "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", "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", "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", "paragraph", "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", "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"];
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", "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", "sevensuperior", "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"];
@@ -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", "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", "", "", "", "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", "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", "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", "", "", "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);
@@ -46220,7 +52443,7 @@ class MurmurHash3_64 {
}
}
} else if ((0, _util.isArrayBuffer)(input)) {
- data = 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.");
@@ -46305,15 +52528,677 @@ class MurmurHash3_64 {
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 */
-/***/ (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.PDFImage = void 0;
var _util = __w_pdfjs_require__(2);
@@ -46980,14 +53865,853 @@ exports.PDFImage = PDFImage;
/***/ }),
/* 46 */
-/***/ (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.incrementalUpdate = incrementalUpdate;
+exports.writeDict = writeDict;
+
+var _util = __w_pdfjs_require__(2);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _core_utils = __w_pdfjs_require__(8);
+
+var _xml_parser = __w_pdfjs_require__(47);
+
+var _crypto = __w_pdfjs_require__(22);
+
+function writeDict(dict, buffer, transform) {
+ buffer.push("<<");
+
+ for (const key of dict.getKeys()) {
+ buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `);
+ writeValue(dict.getRaw(key), buffer, transform);
+ }
+
+ 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);
+ }
+
+ buffer.push(string);
+ buffer.push("\nendstream\n");
+}
+
+function writeArray(array, buffer, transform) {
+ buffer.push("[");
+ let first = true;
+
+ for (const val of array) {
+ if (!first) {
+ buffer.push(" ");
+ } else {
+ first = false;
+ }
+
+ writeValue(val, buffer, transform);
+ }
+
+ buffer.push("]");
+}
+
+function numberToString(value) {
+ if (Number.isInteger(value)) {
+ return value.toString();
+ }
+
+ const roundedValue = Math.round(value * 100);
+
+ 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);
+ }
+}
+
+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;
+}
+
+function writeString(string, offset, buffer) {
+ for (let i = 0, len = string.length; i < len; i++) {
+ buffer[offset + i] = string.charCodeAt(i) & 0xff;
+ }
+}
+
+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);
+
+ 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;
+ }
+
+ const {
+ path,
+ value
+ } = xfa;
+
+ if (!path) {
+ continue;
+ }
+
+ 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}`);
+ }
+ }
+
+ const buffer = [];
+ xml.documentElement.dump(buffer);
+ let updatedXml = buffer.join("");
+ const encrypt = xref.encrypt;
+
+ if (encrypt) {
+ const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen);
+ updatedXml = transform.encryptString(updatedXml);
+ }
+
+ const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length ${updatedXml.length}>>\nstream\n` + updatedXml + "\nendstream\nendobj\n";
+ newRefs.push({
+ ref: datasetsRef,
+ data
+ });
+}
+
+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 (lastByte === 0x0a || lastByte === 0x0d) {
+ buffer = [];
+ baseOffset = originalData.length;
+ } else {
+ buffer = ["\n"];
+ baseOffset = originalData.length + 1;
+ }
+
+ newXref.set("Size", refForXrefTable.num + 1);
+ newXref.set("Prev", xrefInfo.startXRef);
+ newXref.set("Type", _primitives.Name.get("XRef"));
+
+ if (xrefInfo.rootRef !== null) {
+ newXref.set("Root", xrefInfo.rootRef);
+ }
+
+ if (xrefInfo.infoRef !== null) {
+ newXref.set("Info", xrefInfo.infoRef);
+ }
+
+ if (xrefInfo.encrypt !== null) {
+ newXref.set("Encrypt", xrefInfo.encrypt);
+ }
+
+ 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;
+
+ 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);
+ }
+
+ newXref.set("Index", indexes);
+
+ if (xrefInfo.fileIds.length !== 0) {
+ const md5 = computeMD5(baseOffset, xrefInfo);
+ newXref.set("ID", [xrefInfo.fileIds[0], md5]);
+ }
+
+ 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;
+
+ 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);
+
+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;
+ }
+ }
+
+ return true;
+}
+
+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));
+ }
+
+ switch (entity) {
+ case "lt":
+ return "<";
+
+ case "gt":
+ return ">";
+
+ case "amp":
+ return "&";
+
+ case "quot":
+ return '"';
+ }
+
+ return this.onResolveEntity(entity);
+ });
+ }
+
+ _parseContent(s, start) {
+ const attributes = [];
+ let pos = start;
+
+ function skipWs() {
+ while (pos < s.length && isWhitespace(s, pos)) {
+ ++pos;
+ }
+ }
+
+ while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+ ++pos;
+ }
+
+ const name = s.substring(start, pos);
+ skipWs();
+
+ while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") {
+ skipWs();
+ let attrName = "",
+ attrValue = "";
+
+ while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") {
+ attrName += s[pos];
+ ++pos;
+ }
+
+ skipWs();
+
+ if (s[pos] !== "=") {
+ return null;
+ }
+
+ ++pos;
+ skipWs();
+ const attrEndChar = s[pos];
+
+ if (attrEndChar !== '"' && attrEndChar !== "'") {
+ return null;
+ }
+
+ 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
+ };
+ }
+
+ _parseProcessingInstruction(s, start) {
+ let pos = start;
+
+ function skipWs() {
+ while (pos < s.length && isWhitespace(s, pos)) {
+ ++pos;
+ }
+ }
+
+ while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+ ++pos;
+ }
+
+ const name = s.substring(start, pos);
+ skipWs();
+ const attrStart = pos;
+
+ while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) {
+ ++pos;
+ }
+
+ const value = s.substring(attrStart, pos);
+ return {
+ name,
+ value,
+ parsed: pos - start
+ };
+ }
+
+ parseXml(s) {
+ let i = 0;
+
+ while (i < s.length) {
+ const ch = s[i];
+ let j = i;
+
+ if (ch === "<") {
+ ++j;
+ const ch2 = s[j];
+ let q;
+
+ switch (ch2) {
+ case "/":
+ ++j;
+ q = s.indexOf(">", j);
+
+ if (q < 0) {
+ this.onError(XMLParserErrorCode.UnterminatedElement);
+ return;
+ }
+
+ this.onEndElement(s.substring(j, q));
+ j = q + 1;
+ break;
+
+ case "?":
+ ++j;
+
+ const pi = this._parseProcessingInstruction(s, j);
+
+ if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") {
+ this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
+ return;
+ }
+
+ this.onPi(pi.name, pi.value);
+ j += pi.parsed + 2;
+ break;
+
+ case "!":
+ if (s.substring(j + 1, j + 3) === "--") {
+ q = s.indexOf("-->", j + 3);
+
+ if (q < 0) {
+ this.onError(XMLParserErrorCode.UnterminatedComment);
+ return;
+ }
+
+ 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 (q < 0) {
+ this.onError(XMLParserErrorCode.UnterminatedCdat);
+ return;
+ }
+
+ 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 (q < 0) {
+ this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+ return;
+ }
+
+ if (q2 > 0 && q > q2) {
+ q = s.indexOf("]>", j + 8);
+
+ if (q < 0) {
+ this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+ return;
+ }
+
+ 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;
+ }
+
+ 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 {
+ while (j < s.length && s[j] !== "<") {
+ j++;
+ }
+
+ const text = s.substring(i, j);
+ this.onText(this._resolveEntities(text));
+ }
+
+ i = j;
+ }
+ }
+
+ onResolveEntity(name) {
+ return `&${name};`;
+ }
+
+ 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;
+ }
+
+ const index = childNodes.indexOf(this);
+
+ if (index === -1) {
+ return undefined;
+ }
+
+ return childNodes[index + 1];
+ }
+
+ get textContent() {
+ if (!this.childNodes) {
+ return this.nodeValue || "";
+ }
+
+ return this.childNodes.map(function (child) {
+ return child.textContent;
+ }).join("");
+ }
+
+ hasChildNodes() {
+ 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({
+ 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;
+ }
+
+ const [documentElement] = this._currentFragment;
+
+ if (!documentElement) {
+ return undefined;
+ }
+
+ return {
+ documentElement
+ };
+ }
+
+ onResolveEntity(name) {
+ switch (name) {
+ case "apos":
+ return "'";
+ }
+
+ return super.onResolveEntity(name);
+ }
+
+ onText(text) {
+ if (isWhitespaceString(text)) {
+ return;
+ }
+
+ const node = new SimpleDOMNode("#text", text);
+
+ this._currentFragment.push(node);
+ }
+
+ onCdata(text) {
+ const node = new SimpleDOMNode("#text", text);
+
+ this._currentFragment.push(node);
+ }
+
+ 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) {
+ return;
+ }
+
+ this._stack.push(this._currentFragment);
+
+ this._currentFragment = node.childNodes;
+ }
+
+ 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.SimpleXMLParser = SimpleXMLParser;
+
+/***/ }),
+/* 48 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+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/ach/viewer.properties</file>
+ <file compressed="true">web/locale/af/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/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/ur/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/brx/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/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/el/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/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/da/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/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/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/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/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/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/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/it/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/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/bn/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/ko/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/cs/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/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/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/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/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/findbarButton-next-dark.svg b/third-party/pdfjs/web/images/findbarButton-next-dark.svg
deleted file mode 100644
index 80df70bc1..000000000
--- a/third-party/pdfjs/web/images/findbarButton-next-dark.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8
-9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/findbarButton-previous-dark.svg b/third-party/pdfjs/web/images/findbarButton-previous-dark.svg
deleted file mode 100644
index d304a9b8c..000000000
--- a/third-party/pdfjs/web/images/findbarButton-previous-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M13 11a1 1 0 0 1-.707-.293L8 6.414l-4.293 4.293a1 1 0 0 1-1.414-1.414l5-5a1 1 0 0 1 1.414 0l5 5A1 1 0 0 1 13 11z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg
deleted file mode 100644
index 306e628d7..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16
-16"
-fill="rgba(255,255,255,1)">
-<path
- d="M8 16a8 8 0 1 1 8-8 8.009 8.009 0 0 1-8 8zM8 2a6 6 0 1 0 6 6 6.006 6.006 0 0 0-6-6z">
-</path>
-<path
- d="M8 7a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0V8a1 1 0 0 0-1-1z">
-</path>
-<circle
- cx="8" cy="5" r="1.188">
-</circle>
-</svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg
deleted file mode 100644
index c13ff8671..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M13 13c-.3 0-.5-.1-.7-.3L8 8.4l-4.3 4.3c-.9.9-2.3-.5-1.4-1.4l5-5c.4-.4 1-.4 1.4 0l5 5c.6.6.2 1.7-.7 1.7zm0-11H3C1.7 2 1.7 4 3 4h10c1.3 0 1.3-2 0-2z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg
deleted file mode 100644
index 834d8b0da..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M15 3.7V13c0 1.5-1.53 3-3 3H7.13c-.72 0-1.63-.5-2.13-1l-5-5s.84-1 .87-1c.13-.1.33-.2.53-.2.1 0 .3.1.4.2L4 10.6V2.7c0-.6.4-1 1-1s1 .4 1 1v4.6h1V1c0-.6.4-1 1-1s1 .4 1 1v6.3h1V1.7c0-.6.4-1 1-1s1 .4 1 1v5.7h1V3.7c0-.6.4-1 1-1s1 .4 1 1z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg
deleted file mode 100644
index 8633e420a..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M8 10c-.3 0-.5-.1-.7-.3l-5-5c-.9-.9.5-2.3 1.4-1.4L8 7.6l4.3-4.3c.9-.9 2.3.5 1.4 1.4l-5 5c-.2.2-.4.3-.7.3zm5 2H3c-1.3 0-1.3 2 0 2h10c1.3 0 1.3-2 0-2z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg
deleted file mode 100644
index 1a92f802c..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M1 1a1 1 0 011 1v2.4A7 7 0 118 15a7 7 0 01-4.9-2 1 1 0 011.4-1.5 5 5 0 10-1-5.5H6a1 1 0 010 2H1a1 1 0 01-1-1V2a1 1 0 011-1z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg
deleted file mode 100644
index 2a4ef7385..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M15 1a1 1 0 0 0-1 1v2.418A6.995 6.995 0 1 0 8 15a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.019 5.019 0 1 1 12.549 6H10a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg
deleted file mode 100644
index 337f85ef4..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M0 4h1.5c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5H0zM9.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C5 4.5 5.5 4 6.5 4zM16 4h-1.5c-1 0-1.5.5-1.5 1.5v5c0 1 .5 1.5 1.5 1.5H16z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg
deleted file mode 100644
index 41bdd8f14..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M9.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C5 4.5 5.5 4 6.5 4zM11 0v.5c0 1-.5 1.5-1.5 1.5h-3C5.5 2 5 1.5 5 .5V0h6zM11 16v-.5c0-1-.5-1.5-1.5-1.5h-3c-1 0-1.5.5-1.5 1.5v.5h6z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg
deleted file mode 100644
index cd50526ff..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M5.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C1 4.5 1.5 4 2.5 4zM7 0v.5C7 1.5 6.5 2 5.5 2h-3C1.5 2 1 1.5 1 .5V0h6zM7 16v-.5c0-1-.5-1.5-1.5-1.5h-3c-1 0-1.5.5-1.5 1.5v.5h6zM13.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5c0-1 .5-1.5 1.5-1.5zM15 0v.5c0 1-.5 1.5-1.5 1.5h-3C9.5 2 9 1.5 9 .5V0h6zM15 16v-.507c0-1-.5-1.5-1.5-1.5h-3C9.5 14 9 14.5 9 15.5v.5h6z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg
deleted file mode 100644
index 7a95098af..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M12.408 8.217l-8.083-6.7A.2.2 0 0 0 4 1.672V12.3a.2.2 0 0 0 .333.146l2.56-2.372 1.857 3.9A1.125 1.125 0 1 0 10.782 13L8.913 9.075l3.4-.51a.2.2 0 0 0 .095-.348z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg
deleted file mode 100644
index 0c9586ed8..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M1.5 3.5C.5 3.5 0 4 0 5v6.5c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm2 1.2c.8 0 1.4.2 1.8.6.5.4.7 1 .7 1.7 0 .5-.2 1-.5 1.4-.2.3-.5.7-1 1l-.6.4c-.4.3-.6.4-.75.56-.15.14-.25.24-.35.44H6v1.3H1c0-.6.1-1.1.3-1.5.3-.6.7-1 1.5-1.6.7-.4 1.1-.8 1.28-1 .32-.3.42-.6.42-1 0-.3-.1-.6-.23-.8-.17-.2-.37-.3-.77-.3s-.7.1-.9.5c-.04.2-.1.5-.1.9H1.1c0-.6.1-1.1.3-1.5.4-.7 1.1-1.1 2.1-1.1zM10.54 3.54C9.5 3.54 9 4 9 5v6.5c0 1 .5 1.5 1.54 1.5h4c.96 0 1.46-.5 1.46-1.5V5c0-1-.5-1.46-1.5-1.46zm1.9.95c.7 0 1.3.2 1.7.5.4.4.6.8.6 1.4 0 .4-.1.8-.4 1.1-.2.2-.3.3-.5.4.1 0 .3.1.6.3.4.3.5.8.5 1.4 0 .6-.2 1.2-.6 1.6-.4.5-1.1.7-1.9.7-1 0-1.8-.3-2.2-1-.14-.29-.24-.69-.24-1.29h1.4c0 .3 0 .5.1.7.2.4.5.5 1 .5.3 0 .5-.1.7-.3.2-.2.3-.5.3-.8 0-.5-.2-.8-.6-.95-.2-.05-.5-.15-1-.15v-1c.5 0 .8-.1 1-.14.3-.1.5-.4.5-.9 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.7-.3-.3 0-.6.1-.75.3-.2.2-.2.5-.2.86h-1.34c0-.4.1-.7.19-1.1 0-.12.2-.32.4-.62.2-.2.4-.3.7-.4.3-.1.6-.1 1-.1z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg
deleted file mode 100644
index 75e1b985d..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M6 3c-1 0-1.5.5-1.5 1.5v7c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5v-7c0-1-.5-1.5-1.5-1.5z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg
deleted file mode 100644
index 8dff9598e..000000000
--- a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M10.56 3.5C9.56 3.5 9 4 9 5v6.5c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm1.93 1.2c.8 0 1.4.2 1.8.64.5.4.7 1 .7 1.7 0 .5-.2 1-.5 1.44-.2.3-.6.6-1 .93l-.6.4c-.4.3-.6.4-.7.55-.1.1-.2.2-.3.4h3.2v1.27h-5c0-.5.1-1 .3-1.43.2-.49.7-1 1.5-1.54.7-.5 1.1-.8 1.3-1.02.3-.3.4-.7.4-1.05 0-.3-.1-.6-.3-.77-.2-.2-.4-.3-.7-.3-.4 0-.7.2-.9.5-.1.2-.1.5-.2.9h-1.4c0-.6.2-1.1.3-1.5.4-.7 1.1-1.1 2-1.1zM1.54 3.5C.54 3.5 0 4 0 5v6.5c0 1 .5 1.5 1.54 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm1.8 1.125H4.5V12H3V6.9H1.3v-1c.5 0 .8 0 .97-.03.33-.07.53-.17.73-.37.1-.2.2-.3.25-.5.05-.2.05-.3.05-.3z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg b/third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg
deleted file mode 100644
index 7bf332972..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M4 16V2s0-1 1-1h6s1 0 1 1v14l-4-5z"/></svg> \ No newline at end of file
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/images/toolbarButton-download-dark.svg b/third-party/pdfjs/web/images/toolbarButton-download-dark.svg
deleted file mode 100644
index d2a92e5d4..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-download-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M14 3h-2v2h2v8H2V5h7V3h-.849L6.584 1.538A2 2 0 0 0 5.219 1H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM2 3h3.219l1.072 1H2z"></path><path d="M8.146 6.146a.5.5 0 0 0 0 .707l2 2a.5.5 0 0 0 .707 0l2-2a.5.5 0 1 0-.707-.707L11 7.293V.5a.5.5 0 0 0-1 0v6.793L8.854 6.146a.5.5 0 0 0-.708 0z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg b/third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg
deleted file mode 100644
index eb7f50e6d..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" fill="rgba(255,255,255,1)"><path d="M8 11a1 1 0 01-.707-.293l-2.99-2.99c-.91-.942.471-2.324 1.414-1.414L8 8.586l2.283-2.283c.943-.91 2.324.472 1.414 1.414l-2.99 2.99A1 1 0 018 11z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg b/third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg
deleted file mode 100644
index 0bd612f0e..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M14.859 3.2a1.335 1.335 0 0 1-1.217.8H13v1h1v8H2V5h8V4h-.642a1.365 1.365 0 0 1-1.325-1.11L6.584 1.538A2 2 0 0 0 5.219 1H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-1.141-1.8zM2 3h3.219l1.072 1H2zm7.854-.146L11 1.707V8.5a.5.5 0 0 0 1 0V1.707l1.146 1.146a.5.5 0 1 0 .707-.707l-2-2a.5.5 0 0 0-.707 0l-2 2a.5.5 0 0 0 .707.707z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg b/third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg
deleted file mode 100644
index c2ca60c8f..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16
-16"
-fill="rgba(255,255,255,1)"><path transform='rotate(90) translate(0, -16)'
-d="M15.707 7.293l-6-6a1 1 0 0 0-1.414 1.414L12.586 7H1a1 1 0 0 0 0 2h11.586l-4.293
-4.293a1 1 0 1 0 1.414 1.414l6-6a1 1 0 0 0 0-1.414z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg b/third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg
deleted file mode 100644
index dddc4ab26..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16
-16"
-fill="rgba(255,255,255,1)">
-<path
- transform='rotate(90) translate(0, -16)'
- d="M15 7H3.414l4.293-4.293a1 1 0 0
-0-1.414-1.414l-6 6a1 1 0 0 0 0 1.414l6 6a1 1 0 0 0 1.414-1.414L3.414 9H15a1 1 0 0
-0 0-2z">
-</path>
-</svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg b/third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg
deleted file mode 100644
index 13fa9dc7c..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M.5 1H7s0-1 1-1 1 1 1 1h6.5s.5 0 .5.5-.5.5-.5.5H.5S0 2 0 1.5.5 1 .5 1zM1 3h14v7c0 2-1 2-2 2H3c-1 0-2 0-2-2zm5 1v7l6-3.5zM3.72 15.33l.53-2s0-.5.65-.35c.51.13.38.63.38.63l-.53 2s0 .5-.64.35c-.53-.13-.39-.63-.39-.63zM11.24 15.61l-.53-1.99s0-.5.38-.63c.51-.13.64.35.64.35l.53 2s0 .5-.38.63c-.5.13-.64-.35-.65-.35z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-print-dark.svg b/third-party/pdfjs/web/images/toolbarButton-print-dark.svg
deleted file mode 100644
index ad37022f0..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-print-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M14 5h-1V1a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4H2a2 2 0 0 0-2 2v5h3v3a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-3h3V7a2 2 0 0 0-2-2zM2.5 8a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5zm9.5 7H4v-5h8zm0-10H4V1h8zm-6.5 7h4a.5.5 0 0 0 0-1h-4a.5.5 0 1 0 0 1zm0 2h5a.5.5 0 0 0 0-1h-5a.5.5 0 1 0 0 1z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-search-dark.svg b/third-party/pdfjs/web/images/toolbarButton-search-dark.svg
deleted file mode 100644
index cec8a4206..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-search-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M15.707 14.293l-4.822-4.822a6.019 6.019 0 1 0-1.414 1.414l4.822 4.822a1 1 0 0 0 1.414-1.414zM6 10a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg b/third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg
deleted file mode 100644
index 0160c07cd..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M8.707 7.293l-5-5a1 1 0 0 0-1.414 1.414L6.586 8l-4.293 4.293a1 1 0 1 0 1.414 1.414l5-5a1 1 0 0 0 0-1.414zm6 0l-5-5a1 1 0 0 0-1.414 1.414L12.586 8l-4.293 4.293a1 1 0 1 0 1.414 1.414l5-5a1 1 0 0 0 0-1.414z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg b/third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg
deleted file mode 100644
index 0118e41a8..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M3 1h10a3.008 3.008 0 0 1 3 3v8a3.009 3.009 0 0 1-3 3H3a3.005 3.005 0 0 1-3-3V4a3.013 3.013 0 0 1 3-3zm11 11V4a1 1 0 0 0-1-1H8v10h5a1 1 0 0 0 1-1zM2 12a1 1 0 0 0 1 1h4V3H3a1 1 0 0 0-1 1v8z"></path><path d="M3.5 5h2a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm0 2h2a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm1 2h1a.5.5 0 0 0 0-1h-1a.5.5 0 0 0 0 1z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg
deleted file mode 100644
index c9714fdea..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M6.2 2s.5-.5 1.06 0c.5.5 0 1 0 1l-4.6 4.61s-2.5 2.5 0 5 5 0 5 0L13.8 6.4s1.6-1.6 0-3.2-3.2 0-3.2 0L5.8 8s-.7.7 0 1.4 1.4 0 1.4 0l3.9-3.9s.6-.5 1 0c.5.5 0 1 0 1l-3.8 4s-1.8 1.8-3.5 0C3 8.7 4.8 7 4.8 7l4.7-4.9s2.7-2.6 5.3 0c2.6 2.6 0 5.3 0 5.3l-6.2 6.3s-3.5 3.5-7 0 0-7 0-7z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg
deleted file mode 100644
index 76b042a95..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4.233 4.233" height="16" width="16" fill="rgba(255,255,255,1)"><path d="M.15 2.992c-.198.1-.2.266-.002.365l1.604.802a.93.93 0 00.729-.001l1.602-.801c.198-.1.197-.264 0-.364l-.695-.348c-1.306.595-2.542 0-2.542 0m-.264.53l.658-.329c.6.252 1.238.244 1.754 0l.659.329-1.536.768zM.15 1.935c-.198.1-.198.265 0 .364l1.604.802a.926.926 0 00.727 0l1.603-.802c.198-.099.198-.264 0-.363l-.694-.35c-1.14.56-2.546.001-2.546.001m-.264.53l.664-.332c.52.266 1.261.235 1.75.002l.659.33-1.537.768zM.15.877c-.198.099-.198.264 0 .363l1.604.802a.926.926 0 00.727 0l1.603-.802c.198-.099.198-.264 0-.363L2.481.075a.926.926 0 00-.727 0zm.43.182L2.117.29l1.538.769-1.538.768z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg
deleted file mode 100644
index 1704d961a..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
-fill="rgba(255,255,255,1)"><path d="M14 9H8c-1.3 0-1.3 2 0 2h6c1.3 0 1.3-2 0-2zm0-8H5C3.7 1 3.7 3 5 3h9c1.3 0 1.3-2 0-2zM2 1C1 1 .7 2 1.3 2.7 2 3.3 3 3 3 2c0-.5-.4-1-1-1zm3 8c-1 0-1.3 1-.7 1.7.6.6 1.7.2 1.7-.7 0-.5-.4-1-1-1zM14 5H5C3.6 5 3.6 7 5 7h9c1.3 0 1.3-2 0-2zM2 5c-.9 0-1.4 1-.7 1.7C2 7.3 3 6.9 3 6c0-.6-.5-1-1-1zM14 13H5c-1.3 0-1.3 2 0 2h9c1.3 0 1.3-2 0-2zM2 13c-1 0-1.3 1-.7 1.7.7.6 1.7.2 1.7-.712 0-.5-.4-1-1-1z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg
deleted file mode 100644
index 17c55f7b8..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><g style="--darkreader-inline-fill:rgba(81, 82, 83, 0.8);" data-darkreader-inline-fill=""><rect x="1" y="1" width="6" height="6" rx="1" ry="1"></rect><rect x="9" y="1" width="6" height="6" rx="1" ry="1"></rect><rect x="1" y="9" width="6" height="6" rx="1" ry="1"></rect><rect x="9" y="9" width="6" height="6" rx="1" ry="1"></rect></g></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg b/third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg
deleted file mode 100644
index 9b615541e..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><path d="M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z"></path></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg b/third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg
deleted file mode 100644
index 0fb3594d1..000000000
--- a/third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
-fill="rgba(255,255,255,1)"><rect x="2" y="7" width="12" height="2" rx="1"></rect></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/treeitem-collapsed-dark.svg b/third-party/pdfjs/web/images/treeitem-collapsed-dark.svg
deleted file mode 100644
index 1fb655162..000000000
--- a/third-party/pdfjs/web/images/treeitem-collapsed-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M13 9L6 5v8z"/></svg> \ No newline at end of file
diff --git a/third-party/pdfjs/web/images/treeitem-expanded-dark.svg b/third-party/pdfjs/web/images/treeitem-expanded-dark.svg
deleted file mode 100644
index 695b0aa61..000000000
--- a/third-party/pdfjs/web/images/treeitem-expanded-dark.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
-fill="rgba(255,255,255,1)"><path d="M10 13l4-7H6z"/></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;
-}
-html[dir="rtl"] #findNext {
- margin-left: 3px;
+ content: "";
+ background-color: rgba(0, 0, 0, 1);
+ background-color: var(--toolbar-icon-bg-color);
+ -webkit-mask-size: cover;
+ mask-size: cover;
}
-.toolbarButton::before {
- opacity: 0.7;
- opacity: var(--toolbar-icon-opacity);
- top: 6px;
-}
+@media (prefers-color-scheme: dark) {
-.secondaryToolbarButton::before {
- opacity: 0.9;
- opacity: var(--doorhanger-icon-opacity);
- top: 5px;
+ .toolbarButton::before {
+ background-color: rgba(255, 255, 255, 1);
+ background-color: var(--toolbar-icon-bg-color);
+ }
}
-.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,19 +215,321 @@ 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;
+}));
+exports.OptionKind = exports.AppOptions = void 0;
-var _ui_utils = __webpack_require__(2);
+var _viewer_compatibility = __webpack_require__(2);
-var _app_options = __webpack_require__(3);
+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);
+
+class AppOptions {
+ constructor() {
+ throw new Error("Cannot initialize AppOptions.");
+ }
+
+ static get(name) {
+ const userOption = userOptions[name];
+
+ if (userOption !== undefined) {
+ return userOption;
+ }
+
+ const defaultOption = defaultOptions[name];
+
+ if (defaultOption !== undefined) {
+ return defaultOption.compatibility || defaultOption.value;
+ }
+
+ return undefined;
+ }
+
+ static getAll(kind = null) {
+ const options = Object.create(null);
+
+ for (const name in defaultOptions) {
+ const defaultOption = defaultOptions[name];
+
+ 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 setAll(options) {
+ for (const name in options) {
+ userOptions[name] = options[name];
+ }
+ }
+
+ 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);
@@ -301,29 +537,29 @@ var _pdf_cursor_tools = __webpack_require__(6);
var _pdf_rendering_queue = __webpack_require__(8);
-var _pdf_sidebar = __webpack_require__(9);
+var _overlay_manager = __webpack_require__(9);
-var _overlay_manager = __webpack_require__(10);
+var _password_prompt = __webpack_require__(10);
-var _password_prompt = __webpack_require__(11);
+var _pdf_attachment_viewer = __webpack_require__(11);
-var _pdf_attachment_viewer = __webpack_require__(12);
+var _pdf_document_properties = __webpack_require__(13);
-var _pdf_document_properties = __webpack_require__(14);
+var _pdf_find_bar = __webpack_require__(14);
-var _pdf_find_bar = __webpack_require__(15);
+var _pdf_find_controller = __webpack_require__(15);
-var _pdf_find_controller = __webpack_require__(16);
+var _pdf_history = __webpack_require__(17);
-var _pdf_history = __webpack_require__(18);
+var _pdf_layer_viewer = __webpack_require__(18);
-var _pdf_layer_viewer = __webpack_require__(19);
+var _pdf_link_service = __webpack_require__(19);
-var _pdf_link_service = __webpack_require__(20);
+var _pdf_outline_viewer = __webpack_require__(20);
-var _pdf_outline_viewer = __webpack_require__(21);
+var _pdf_presentation_mode = __webpack_require__(21);
-var _pdf_presentation_mode = __webpack_require__(22);
+var _pdf_sidebar = __webpack_require__(22);
var _pdf_sidebar_resizer = __webpack_require__(23);
@@ -335,7 +571,7 @@ 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,8 +1667,261 @@ const PDFViewerApplication = {
this._initializeMetadata(pdfDocument);
},
+ async _initializeJavaScript(pdfDocument) {
+ if (!_app_options.AppOptions.get("enableScripting")) {
+ return;
+ }
+
+ const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]);
+
+ if (!objects && !docActions) {
+ return;
+ }
+
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+
+ 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
+ };
+
+ if (!this.documentInfo) {
+ await new Promise(resolve => {
+ this.eventBus._on("metadataloaded", evt => {
+ resolve();
+ }, {
+ once: true
+ });
+ });
+
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ }
+
+ if (!this._contentLength) {
+ await new Promise(resolve => {
+ this.eventBus._on("documentloaded", evt => {
+ resolve();
+ }, {
+ once: true
+ });
+ });
+
+ if (pdfDocument !== this.pdfDocument) {
+ return;
+ }
+ }
+
+ const updateFromSandbox = ({
+ detail
+ }) => {
+ const {
+ id,
+ command,
+ value
+ } = detail;
+
+ if (!id) {
+ switch (command) {
+ case "clear":
+ console.clear();
+ break;
+
+ case "error":
+ console.error(value);
+ break;
+
+ case "layout":
+ this.pdfViewer.spreadMode = apiPageLayoutToSpreadMode(value);
+ break;
+
+ case "page-num":
+ this.pdfViewer.currentPageNumber = value + 1;
+ break;
+
+ case "print":
+ this.pdfViewer.pagesPromise.then(() => {
+ this.triggerPrinting();
+ });
+ break;
+
+ case "println":
+ console.log(value);
+ break;
+
+ case "zoom":
+ this.pdfViewer.currentScaleValue = value;
+ break;
+ }
+
+ return;
+ }
+
+ 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, pdfDocument.getJavaScript()]);
+ const [openAction, javaScript] = await Promise.all([openActionPromise, !_app_options.AppOptions.get("enableScripting") ? pdfDocument.getJavaScript() : null]);
if (pdfDocument !== this.pdfDocument) {
return;
@@ -1321,7 +1929,7 @@ const PDFViewerApplication = {
let triggerAutoPrint = false;
- if (openAction && openAction.action === "Print") {
+ if (openAction?.action === "Print") {
triggerAutoPrint = true;
}
@@ -1348,14 +1956,8 @@ const PDFViewerApplication = {
}
}
- if (!this.supportsPrinting) {
- return;
- }
-
if (triggerAutoPrint) {
- setTimeout(function () {
- window.print();
- });
+ this.triggerPrinting();
}
},
@@ -1363,7 +1965,8 @@ const PDFViewerApplication = {
const {
info,
metadata,
- contentDispositionFilename
+ contentDispositionFilename,
+ contentLength
} = await pdfDocument.getMetadata();
if (pdfDocument !== this.pdfDocument) {
@@ -1372,7 +1975,8 @@ const PDFViewerApplication = {
this.documentInfo = info;
this.metadata = metadata;
- this.contentDispositionFilename = contentDispositionFilename;
+ 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;
@@ -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.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.isPortraitOrientation = isPortraitOrientation;
-exports.clamp = clamp;
-exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
+exports.moveToEndOfArray = moveToEndOfArray;
exports.noContextMenuHandler = noContextMenuHandler;
+exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
+exports.normalizeWheelEventDirection = normalizeWheelEventDirection;
exports.parseQueryString = parseQueryString;
-exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
-exports.getVisibleElements = getVisibleElements;
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,299 +4399,22 @@ function moveToEndOfArray(arr, condition) {
}
}
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.OptionKind = exports.AppOptions = void 0;
+function getActiveOrFocusedElement() {
+ let curRoot = document;
+ let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
-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.");
- }
-
- static get(name) {
- const userOption = userOptions[name];
-
- if (userOption !== undefined) {
- return userOption;
- }
-
- const defaultOption = defaultOptions[name];
-
- if (defaultOption !== undefined) {
- return defaultOption.compatibility || defaultOption.value;
- }
-
- return undefined;
- }
-
- static getAll(kind = null) {
- const options = Object.create(null);
-
- for (const name in defaultOptions) {
- const defaultOption = defaultOptions[name];
-
- 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];
+ while (curActiveOrFocused && curActiveOrFocused.shadowRoot) {
+ curRoot = curActiveOrFocused.shadowRoot;
+ curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
}
+ return curActiveOrFocused;
}
-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__) {
+/***/ ((module) => {
-"use strict";
let pdfjsLib;
@@ -4033,18 +4429,19 @@ module.exports = pdfjsLib;
/***/ }),
/* 6 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+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,
HAND: 1,
@@ -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,417 +4865,13 @@ 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;
-
-var _ui_utils = __webpack_require__(2);
-
-var _pdf_rendering_queue = __webpack_require__(8);
-
-const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
-const SidebarView = {
- UNKNOWN: -1,
- NONE: 0,
- THUMBS: 1,
- OUTLINE: 2,
- ATTACHMENTS: 3,
- LAYERS: 4
-};
-exports.SidebarView = SidebarView;
-
-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;
-
- this._addEventListeners();
- }
-
- reset() {
- this.isInitialViewSet = false;
-
- this._hideUINotification(null);
-
- this.switchView(SidebarView.THUMBS);
- this.outlineButton.disabled = false;
- this.attachmentsButton.disabled = false;
- this.layersButton.disabled = false;
- }
-
- get visibleView() {
- return this.isOpen ? this.active : SidebarView.NONE;
- }
-
- get isThumbnailViewVisible() {
- return this.isOpen && this.active === SidebarView.THUMBS;
- }
-
- get isOutlineViewVisible() {
- return this.isOpen && this.active === SidebarView.OUTLINE;
- }
-
- get isAttachmentsViewVisible() {
- return this.isOpen && this.active === SidebarView.ATTACHMENTS;
- }
-
- get isLayersViewVisible() {
- return this.isOpen && this.active === SidebarView.LAYERS;
- }
-
- setInitialView(view = SidebarView.NONE) {
- if (this.isInitialViewSet) {
- return;
- }
-
- this.isInitialViewSet = true;
-
- if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {
- this._dispatchEvent();
-
- return;
- }
-
- if (!this._switchView(view, true)) {
- this._dispatchEvent();
- }
- }
-
- switchView(view, forceOpen = false) {
- this._switchView(view, forceOpen);
- }
-
- _switchView(view, forceOpen = false) {
- const isViewChanged = view !== this.active;
- let shouldForceRendering = false;
-
- switch (view) {
- case SidebarView.NONE:
- if (this.isOpen) {
- this.close();
- return true;
- }
-
- return false;
-
- 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;
- }
-
- break;
-
- case SidebarView.LAYERS:
- if (this.layersButton.disabled) {
- return false;
- }
-
- break;
-
- default:
- console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`);
- return false;
- }
-
- 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 (forceOpen && !this.isOpen) {
- this.open();
- return true;
- }
-
- if (shouldForceRendering) {
- this._updateThumbnailViewer();
-
- this._forceRendering();
- }
-
- if (isViewChanged) {
- this._dispatchEvent();
- }
-
- this._hideUINotification(this.active);
-
- return isViewChanged;
- }
-
- open() {
- if (this.isOpen) {
- return;
- }
-
- this.isOpen = true;
- this.toggleButton.classList.add("toggled");
- this.outerContainer.classList.add("sidebarMoving", "sidebarOpen");
-
- if (this.active === SidebarView.THUMBS) {
- this._updateThumbnailViewer();
- }
-
- this._forceRendering();
-
- this._dispatchEvent();
-
- this._hideUINotification(this.active);
- }
-
- close() {
- if (!this.isOpen) {
- return;
- }
-
- this.isOpen = false;
- this.toggleButton.classList.remove("toggled");
- this.outerContainer.classList.add("sidebarMoving");
- this.outerContainer.classList.remove("sidebarOpen");
-
- this._forceRendering();
-
- this._dispatchEvent();
- }
-
- toggle() {
- if (this.isOpen) {
- this.close();
- } else {
- this.open();
- }
- }
-
- _dispatchEvent() {
- this.eventBus.dispatch("sidebarviewchanged", {
- source: this,
- view: this.visibleView
- });
- }
-
- _forceRendering() {
- if (this.onToggled) {
- this.onToggled();
- } else {
- this.pdfViewer.forceRendering();
- this.pdfThumbnailViewer.forceRendering();
- }
- }
-
- _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);
- }
- }
-
- pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
- }
-
- _showUINotification(view) {
- if (this._disableNotification) {
- return;
- }
-
- this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains outline/attachments/layers)").then(msg => {
- this.toggleButton.title = msg;
- });
-
- if (!this.isOpen) {
- this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
- } else if (view === this.active) {
- 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;
- }
- }
-
- _hideUINotification(view) {
- if (this._disableNotification) {
- return;
- }
-
- const removeNotification = sidebarView => {
- switch (sidebarView) {
- case SidebarView.OUTLINE:
- this.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);
- break;
-
- case SidebarView.ATTACHMENTS:
- this.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);
- break;
-
- case SidebarView.LAYERS:
- this.layersButton.classList.remove(UI_NOTIFICATION_CLASS);
- break;
- }
- };
-
- if (!this.isOpen && view !== null) {
- return;
- }
-
- this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
-
- if (view !== null) {
- removeNotification(view);
- return;
- }
-
- for (view in SidebarView) {
- removeNotification(SidebarView[view]);
- }
-
- this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => {
- this.toggleButton.title = msg;
- });
- }
-
- _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;
-
- if (count) {
- this._showUINotification(view);
- } else if (this.active === view) {
- this.switchView(SidebarView.THUMBS);
- }
- };
-
- this.eventBus._on("outlineloaded", evt => {
- onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);
- });
-
- this.eventBus._on("attachmentsloaded", evt => {
- onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, SidebarView.ATTACHMENTS);
- });
-
- this.eventBus._on("layersloaded", evt => {
- onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);
- });
-
- this.eventBus._on("presentationmodechanged", evt => {
- if (!evt.active && !evt.switchInProgress && this.isThumbnailViewVisible) {
- this._updateThumbnailViewer();
- }
- });
- }
-
-}
-
-exports.PDFSidebar = PDFSidebar;
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
+}));
exports.OverlayManager = void 0;
class OverlayManager {
@@ -4971,18 +4974,17 @@ class OverlayManager {
exports.OverlayManager = OverlayManager;
/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 10 */
+/***/ ((__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);
+var _ui_utils = __webpack_require__(4);
var _pdfjsLib = __webpack_require__(5);
@@ -5050,22 +5052,21 @@ class PasswordPrompt {
exports.PasswordPrompt = PasswordPrompt;
/***/ }),
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 11 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFAttachmentViewer = void 0;
var _pdfjsLib = __webpack_require__(5);
-var _base_tree_viewer = __webpack_require__(13);
+var _base_tree_viewer = __webpack_require__(12);
-var _viewer_compatibility = __webpack_require__(4);
+var _viewer_compatibility = __webpack_require__(2);
const PdfFileRegExp = /\.pdf$/i;
@@ -5204,9 +5205,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
attachmentsCount++;
}
- this.container.appendChild(fragment);
-
- this._dispatchEvent(attachmentsCount);
+ this._finishRendering(fragment, attachmentsCount);
}
_appendAttachment({
@@ -5248,19 +5247,21 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
exports.PDFAttachmentViewer = PDFAttachmentViewer;
/***/ }),
-/* 13 */
-/***/ (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.BaseTreeViewer = void 0;
var _pdfjsLib = __webpack_require__(5);
+const TREEITEM_OFFSET_TOP = -100;
+const TREEITEM_SELECTED_CLASS = "selected";
+
class BaseTreeViewer {
constructor(options) {
if (this.constructor === BaseTreeViewer) {
@@ -5273,7 +5274,9 @@ class BaseTreeViewer {
}
reset() {
+ this._pdfDocument = null;
this._lastToggleIsShow = true;
+ this._currentTreeItem = null;
this.container.textContent = "";
this.container.classList.remove("treeWithDeepNesting");
}
@@ -5324,29 +5327,73 @@ class BaseTreeViewer {
this._toggleTreeItem(this.container, !this._lastToggleIsShow);
}
+ _finishRendering(fragment, count, hasAnyNesting = false) {
+ if (hasAnyNesting) {
+ this.container.classList.add("treeWithDeepNesting");
+ this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden");
+ }
+
+ this.container.appendChild(fragment);
+
+ this._dispatchEvent(count);
+ }
+
render(params) {
throw new Error("Not implemented: render");
}
+ _updateCurrentTreeItem(treeItem = null) {
+ if (this._currentTreeItem) {
+ this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);
+
+ this._currentTreeItem = null;
+ }
+
+ if (treeItem) {
+ treeItem.classList.add(TREEITEM_SELECTED_CLASS);
+ this._currentTreeItem = treeItem;
+ }
+ }
+
+ _scrollToCurrentTreeItem(treeItem) {
+ if (!treeItem) {
+ return;
+ }
+
+ 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.BaseTreeViewer = BaseTreeViewer;
/***/ }),
-/* 14 */
-/***/ (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.PDFDocumentProperties = void 0;
var _pdfjsLib = __webpack_require__(5);
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
const DEFAULT_FIELD_CONTENT = "-";
const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"];
@@ -5397,7 +5444,7 @@ class PDFDocumentProperties {
});
}
- open() {
+ async open() {
const freezeFieldData = data => {
Object.defineProperty(this, "fieldData", {
value: Object.freeze(data),
@@ -5407,64 +5454,58 @@ class PDFDocumentProperties {
});
};
- Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(() => {
- const currentPageNumber = this._currentPageNumber;
- const pagesRotation = this._pagesRotation;
+ 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();
+ if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) {
+ this._updateUI();
- return;
- }
+ return;
+ }
- 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
- });
+ 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();
- this._updateUI();
+ const {
+ length
+ } = await this.pdfDocument.getDownloadInfo();
- return this.pdfDocument.getDownloadInfo();
- }).then(({
- length
- }) => {
- this.maybeFileSize = length;
- return this._parseFileSize(length);
- }).then(fileSize => {
- if (fileSize === this.fieldData.fileSize) {
- return;
- }
+ if (contentLength === length) {
+ return;
+ }
- const data = Object.assign(Object.create(null), this.fieldData);
- data.fileSize = fileSize;
- freezeFieldData(data);
+ const data = Object.assign(Object.create(null), this.fieldData);
+ data.fileSize = await this._parseFileSize(length);
+ freezeFieldData(data);
- this._updateUI();
- });
- });
+ this._updateUI();
}
close() {
@@ -5488,16 +5529,9 @@ class PDFDocumentProperties {
this._dataAvailableCapability.resolve();
}
- setFileSize(fileSize) {
- if (Number.isInteger(fileSize) && fileSize > 0) {
- this.maybeFileSize = fileSize;
- }
- }
-
_reset() {
this.pdfDocument = null;
this.url = null;
- this.maybeFileSize = 0;
delete this.fieldData;
this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
this._currentPageNumber = 1;
@@ -5628,20 +5662,19 @@ class PDFDocumentProperties {
exports.PDFDocumentProperties = PDFDocumentProperties;
/***/ }),
-/* 15 */
-/***/ (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.PDFFindBar = void 0;
-var _pdf_find_controller = __webpack_require__(16);
+var _pdf_find_controller = __webpack_require__(15);
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
const MATCHES_COUNT_LIMIT = 1000;
@@ -5717,7 +5750,6 @@ class PDFFindBar {
}
updateUIState(state, previous, matchesCount) {
- let notFound = false;
let findMsg = "";
let status = "";
@@ -5731,7 +5763,7 @@ class PDFFindBar {
case _pdf_find_controller.FindState.NOT_FOUND:
findMsg = this.l10n.get("find_not_found", null, "Phrase not found");
- notFound = true;
+ status = "notFound";
break;
case _pdf_find_controller.FindState.WRAPPED:
@@ -5744,7 +5776,6 @@ class PDFFindBar {
break;
}
- this.findField.classList.toggle("notFound", notFound);
this.findField.setAttribute("data-status", status);
Promise.resolve(findMsg).then(msg => {
this.findMsg.textContent = msg;
@@ -5839,22 +5870,21 @@ class PDFFindBar {
exports.PDFFindBar = PDFFindBar;
/***/ }),
-/* 16 */
-/***/ (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.PDFFindController = exports.FindState = void 0;
var _pdfjsLib = __webpack_require__(5);
-var _pdf_find_utils = __webpack_require__(17);
+var _pdf_find_utils = __webpack_require__(16);
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
const FindState = {
FOUND: 0,
@@ -5887,9 +5917,43 @@ function normalize(text) {
normalizationRegex = new RegExp(`[${replace}]`, "g");
}
- return text.replace(normalizationRegex, function (ch) {
- return CHARACTERS_TO_NORMALIZE[ch];
+ 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];
+}
+
+function getOriginalIndex(matchIndex, diffs = null) {
+ if (!diffs) {
+ return matchIndex;
+ }
+
+ let totalDiff = 0;
+
+ for (const [index, diff] of diffs) {
+ const currentIndex = index + totalDiff;
+
+ if (currentIndex >= matchIndex) {
+ break;
+ }
+
+ if (currentIndex + diff > matchIndex) {
+ totalDiff += matchIndex - currentIndex;
+ break;
+ }
+
+ totalDiff += diff;
+ }
+
+ return matchIndex - totalDiff;
}
class PDFFindController {
@@ -6038,6 +6102,7 @@ class PDFFindController {
};
this._extractTextPromises = [];
this._pageContents = [];
+ this._pageDiffs = [];
this._matchesCountTotal = 0;
this._pagesToSearch = null;
this._pendingFindMatches = Object.create(null);
@@ -6051,7 +6116,7 @@ class PDFFindController {
get _query() {
if (this._state.query !== this._rawQuery) {
this._rawQuery = this._state.query;
- this._normalizedQuery = normalize(this._state.query);
+ [this._normalizedQuery] = normalize(this._state.query);
}
return this._normalizedQuery;
@@ -6148,8 +6213,9 @@ class PDFFindController {
return true;
}
- _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) {
- const matches = [];
+ _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {
+ const matches = [],
+ matchesLength = [];
const queryLen = query.length;
let matchIdx = -queryLen;
@@ -6164,13 +6230,18 @@ class PDFFindController {
continue;
}
- matches.push(matchIdx);
+ const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),
+ matchEnd = matchIdx + queryLen - 1,
+ originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;
+ matches.push(originalMatchIdx);
+ matchesLength.push(originalQueryLen);
}
this._pageMatches[pageIndex] = matches;
+ this._pageMatchesLength[pageIndex] = matchesLength;
}
- _calculateWordMatch(query, pageIndex, pageContent, entireWord) {
+ _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) {
const matchesWithLength = [];
const queryArray = query.match(/\S+/g);
@@ -6190,9 +6261,12 @@ class PDFFindController {
continue;
}
+ const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs),
+ matchEnd = matchIdx + subqueryLen - 1,
+ originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1;
matchesWithLength.push({
- match: matchIdx,
- matchLength: subqueryLen,
+ match: originalMatchIdx,
+ matchLength: originalQueryLen,
skipped: false
});
}
@@ -6206,6 +6280,7 @@ class PDFFindController {
_calculateMatch(pageIndex) {
let pageContent = this._pageContents[pageIndex];
+ const pageDiffs = this._pageDiffs[pageIndex];
let query = this._query;
const {
caseSensitive,
@@ -6223,9 +6298,9 @@ class PDFFindController {
}
if (phraseSearch) {
- this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord);
+ this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord);
} else {
- this._calculateWordMatch(query, pageIndex, pageContent, entireWord);
+ this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord);
}
if (this._state.highlightAll) {
@@ -6270,11 +6345,12 @@ class PDFFindController {
strBuf.push(textItems[j].str);
}
- this._pageContents[i] = normalize(strBuf.join(""));
+ [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);
});
});
@@ -6521,15 +6597,14 @@ class PDFFindController {
exports.PDFFindController = PDFFindController;
/***/ }),
-/* 17 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 16 */
+/***/ ((__unused_webpack_module, exports) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.getCharacterType = getCharacterType;
exports.CharacterType = void 0;
const CharacterType = {
@@ -6617,20 +6692,19 @@ function getCharacterType(charCode) {
}
/***/ }),
-/* 18 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 17 */
+/***/ ((__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.isDestHashesEqual = isDestHashesEqual;
exports.PDFHistory = void 0;
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
const HASH_CHANGE_TIMEOUT = 1000;
const POSITION_UPDATED_THRESHOLD = 50;
@@ -6654,19 +6728,17 @@ class PDFHistory {
this._isViewerInPresentationMode = false;
this.eventBus._on("presentationmodechanged", evt => {
- this._isViewerInPresentationMode = evt.active || evt.switchInProgress;
+ this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL;
});
this.eventBus._on("pagesinit", () => {
this._isPagesLoaded = false;
- const onPagesLoaded = evt => {
- this.eventBus._off("pagesloaded", onPagesLoaded);
-
+ this.eventBus._on("pagesloaded", evt => {
this._isPagesLoaded = !!evt.pagesCount;
- };
-
- this.eventBus._on("pagesloaded", onPagesLoaded);
+ }, {
+ once: true
+ });
});
}
@@ -6726,10 +6798,6 @@ class PDFHistory {
this._updateInternalState(destination, state.uid, true);
- if (this._uid > this._maxUid) {
- this._maxUid = this._uid;
- }
-
if (destination.rotation !== undefined) {
this._initialRotation = destination.rotation;
}
@@ -6819,6 +6887,38 @@ class PDFHistory {
}
}
+ pushPage(pageNumber) {
+ if (!this._initialized) {
+ return;
+ }
+
+ if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {
+ console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`);
+ return;
+ }
+
+ if (this._destination?.page === pageNumber) {
+ return;
+ }
+
+ if (this._popStateInProgress) {
+ return;
+ }
+
+ this._pushOrReplaceState({
+ hash: `page=${pageNumber}`,
+ page: pageNumber,
+ rotation: this.linkService.rotation
+ });
+
+ if (!this._popStateInProgress) {
+ this._popStateInProgress = true;
+ Promise.resolve().then(() => {
+ this._popStateInProgress = false;
+ });
+ }
+ }
+
pushCurrentPosition() {
if (!this._initialized || this._popStateInProgress) {
return;
@@ -6875,7 +6975,7 @@ class PDFHistory {
let newUrl;
- if (this._updateUrl && destination && destination.hash) {
+ if (this._updateUrl && destination?.hash) {
const baseUrl = document.location.href.split("#")[0];
if (!baseUrl.startsWith("file://")) {
@@ -6883,12 +6983,11 @@ 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 {
- this._maxUid = this._uid;
window.history.pushState(newState, "", newUrl);
}
}
@@ -6951,7 +7050,7 @@ class PDFHistory {
const [perfEntry] = performance.getEntriesByType("navigation");
- if (!perfEntry || perfEntry.type !== "reload") {
+ if (perfEntry?.type !== "reload") {
return false;
}
} else {
@@ -6976,12 +7075,13 @@ class PDFHistory {
this._updateViewareaTimeout = null;
}
- if (removeTemporary && destination && destination.temporary) {
+ if (removeTemporary && destination?.temporary) {
delete destination.temporary;
}
this._destination = destination;
this._uid = uid;
+ this._maxUid = Math.max(this._maxUid, uid);
this._numPositionUpdates = 0;
}
@@ -7082,16 +7182,12 @@ class PDFHistory {
this._updateInternalState(destination, state.uid, true);
- if (this._uid > this._maxUid) {
- this._maxUid = this._uid;
- }
-
if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
this.linkService.rotation = destination.rotation;
}
if (destination.dest) {
- this.linkService.navigateTo(destination.dest);
+ this.linkService.goToDestination(destination.dest);
} else if (destination.hash) {
this.linkService.setHash(destination.hash);
} else if (destination.page) {
@@ -7207,18 +7303,17 @@ function isDestArraysEqual(firstDest, secondDest) {
}
/***/ }),
-/* 19 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 18 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFLayerViewer = void 0;
-var _base_tree_viewer = __webpack_require__(13);
+var _base_tree_viewer = __webpack_require__(12);
class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
constructor(options) {
@@ -7233,7 +7328,6 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
reset() {
super.reset();
this._optionalContentConfig = null;
- this._pdfDocument = null;
}
_dispatchEvent(layersCount) {
@@ -7369,14 +7463,7 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
}
}
- if (hasAnyNesting) {
- this.container.classList.add("treeWithDeepNesting");
- this._lastToggleIsShow = fragment.querySelectorAll(".treeItemsHidden").length === 0;
- }
-
- this.container.appendChild(fragment);
-
- this._dispatchEvent(layersCount);
+ this._finishRendering(fragment, layersCount, hasAnyNesting);
}
async _resetLayers() {
@@ -7400,18 +7487,17 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
exports.PDFLayerViewer = PDFLayerViewer;
/***/ }),
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 19 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.SimpleLinkService = exports.PDFLinkService = void 0;
-var _ui_utils = __webpack_require__(2);
+var _ui_utils = __webpack_require__(4);
class PDFLinkService {
constructor({
@@ -7468,89 +7554,111 @@ class PDFLinkService {
}
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;
- }
+ console.error("Deprecated method: `navigateTo`, use `goToDestination` instead.");
+ this.goToDestination(dest);
+ }
- if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
- console.error(`PDFLinkService.navigateTo: "${pageNumber}" is not ` + `a valid page number, for dest="${dest}".`);
- return;
- }
+ _goToDestinationHelper(rawDest, namedDest = null, explicitDest) {
+ const destRef = explicitDest[0];
+ let pageNumber;
- if (this.pdfHistory) {
- this.pdfHistory.pushCurrentPosition();
- this.pdfHistory.push({
- namedDest,
- explicitDest,
- pageNumber
- });
- }
+ if (destRef instanceof Object) {
+ pageNumber = this._cachedPageNumber(destRef);
- this.pdfViewer.scrollPageIntoView({
- pageNumber,
- destArray: explicitDest,
- ignoreDestinationZoom: this._ignoreDestinationZoom
- });
- };
+ if (pageNumber === null) {
+ this.pdfDocument.getPageIndex(destRef).then(pageIndex => {
+ this.cachePageRef(pageIndex + 1, destRef);
- new Promise((resolve, reject) => {
- if (typeof dest === "string") {
- this.pdfDocument.getDestination(dest).then(destArray => {
- resolve({
- namedDest: dest,
- explicitDest: destArray
- });
+ 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 (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
+ console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`);
+ return;
+ }
- resolve({
- namedDest: "",
- explicitDest: dest
+ if (this.pdfHistory) {
+ this.pdfHistory.pushCurrentPosition();
+ this.pdfHistory.push({
+ namedDest,
+ explicitDest,
+ pageNumber
});
- }).then(data => {
- if (!Array.isArray(data.explicitDest)) {
- console.error(`PDFLinkService.navigateTo: "${data.explicitDest}" is` + ` not a valid destination array, for dest="${dest}".`);
- return;
- }
+ }
- goToDestination(data);
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber,
+ destArray: explicitDest,
+ ignoreDestinationZoom: this._ignoreDestinationZoom
});
}
- getDestinationHash(dest) {
+ async goToDestination(dest) {
+ if (!this.pdfDocument) {
+ return;
+ }
+
+ let namedDest, explicitDest;
+
if (typeof dest === "string") {
- return this.getAnchorUrl("#" + escape(dest));
+ namedDest = dest;
+ explicitDest = await this.pdfDocument.getDestination(dest);
+ } else {
+ namedDest = null;
+ explicitDest = await dest;
+ }
+
+ if (!Array.isArray(explicitDest)) {
+ console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`);
+ return;
}
- if (Array.isArray(dest)) {
+ this._goToDestinationHelper(dest, namedDest, explicitDest);
+ }
+
+ goToPage(val) {
+ if (!this.pdfDocument) {
+ return;
+ }
+
+ const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
+
+ if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
+ console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
+ return;
+ }
+
+ if (this.pdfHistory) {
+ this.pdfHistory.pushCurrentPosition();
+ this.pdfHistory.pushPage(pageNumber);
+ }
+
+ this.pdfViewer.scrollPageIntoView({
+ pageNumber
+ });
+ }
+
+ 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);
- return this.getAnchorUrl("#" + escape(str));
+
+ if (str.length > 0) {
+ return this.getAnchorUrl("#" + escape(str));
+ }
}
return this.getAnchorUrl("");
@@ -7561,6 +7669,10 @@ class PDFLinkService {
}
setHash(hash) {
+ if (!this.pdfDocument) {
+ return;
+ }
+
let pageNumber, dest;
if (hash.includes("=")) {
@@ -7628,7 +7740,7 @@ class PDFLinkService {
}
if ("nameddest" in params) {
- this.navigateTo(params.nameddest);
+ this.goToDestination(params.nameddest);
}
} else {
dest = unescape(hash);
@@ -7642,7 +7754,7 @@ class PDFLinkService {
} catch (ex) {}
if (typeof dest === "string" || isValidExplicitDestination(dest)) {
- this.navigateTo(dest);
+ this.goToDestination(dest);
return;
}
@@ -7667,17 +7779,11 @@ class PDFLinkService {
break;
case "NextPage":
- if (this.page < this.pagesCount) {
- this.page++;
- }
-
+ this.pdfViewer.nextPage();
break;
case "PrevPage":
- if (this.page > 1) {
- this.page--;
- }
-
+ this.pdfViewer.previousPage();
break;
case "LastPage":
@@ -7716,6 +7822,10 @@ class PDFLinkService {
return this.pdfViewer.isPageVisible(pageNumber);
}
+ isPageCached(pageNumber) {
+ return this.pdfViewer.isPageCached(pageNumber);
+ }
+
}
exports.PDFLinkService = PDFLinkService;
@@ -7814,7 +7924,9 @@ class SimpleLinkService {
set rotation(value) {}
- navigateTo(dest) {}
+ async goToDestination(dest) {}
+
+ goToPage(val) {}
getDestinationHash(dest) {
return "#";
@@ -7834,25 +7946,30 @@ class SimpleLinkService {
return true;
}
+ isPageCached(pageNumber) {
+ return true;
+ }
+
}
exports.SimpleLinkService = SimpleLinkService;
/***/ }),
-/* 21 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 20 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFOutlineViewer = void 0;
var _pdfjsLib = __webpack_require__(5);
-var _base_tree_viewer = __webpack_require__(13);
+var _base_tree_viewer = __webpack_require__(12);
+
+var _ui_utils = __webpack_require__(4);
class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
constructor(options) {
@@ -7860,17 +7977,35 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
this.linkService = options.linkService;
this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this));
+
+ this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this));
+
+ this.eventBus._on("pagechanging", evt => {
+ this._currentPageNumber = evt.pageNumber;
+ });
+
+ this.eventBus._on("pagesloaded", evt => {
+ this._isPagesLoaded = !!evt.pagesCount;
+ });
+
+ this.eventBus._on("sidebarviewchanged", evt => {
+ this._sidebarView = evt.view;
+ });
}
reset() {
super.reset();
this._outline = null;
+ this._pageNumberToDestHashCapability = null;
+ this._currentPageNumber = 1;
+ this._isPagesLoaded = false;
}
_dispatchEvent(outlineCount) {
this.eventBus.dispatch("outlineloaded", {
source: this,
- outlineCount
+ outlineCount,
+ enableCurrentOutlineItemButton: outlineCount > 0 && !this._pdfDocument?.loadingParams.disableAutoFetch
});
}
@@ -7895,9 +8030,11 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
element.href = linkService.getDestinationHash(dest);
- element.onclick = () => {
+ element.onclick = evt => {
+ this._updateCurrentTreeItem(evt.target.parentNode);
+
if (dest) {
- linkService.navigateTo(dest);
+ linkService.goToDestination(dest);
}
return false;
@@ -7921,7 +8058,31 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
count,
items
}) {
- const hidden = count < 0 && Math.abs(count) === items.length;
+ let hidden = false;
+
+ if (count < 0) {
+ let totalCount = items.length;
+
+ if (totalCount > 0) {
+ const queue = [...items];
+
+ while (queue.length > 0) {
+ const {
+ count: nestedCount,
+ items: nestedItems
+ } = queue.shift();
+
+ if (nestedCount > 0 && nestedItems.length > 0) {
+ totalCount += nestedItems.length;
+ queue.push(...nestedItems);
+ }
+ }
+ }
+
+ if (Math.abs(count) === totalCount) {
+ hidden = true;
+ }
+ }
super._addToggleButton(div, hidden);
}
@@ -7935,13 +8096,15 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
}
render({
- outline
+ outline,
+ pdfDocument
}) {
if (this._outline) {
this.reset();
}
this._outline = outline || null;
+ this._pdfDocument = pdfDocument || null;
if (!outline) {
this._dispatchEvent(0);
@@ -7991,14 +8154,122 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
}
}
- if (hasAnyNesting) {
- this.container.classList.add("treeWithDeepNesting");
- this._lastToggleIsShow = fragment.querySelectorAll(".treeItemsHidden").length === 0;
+ this._finishRendering(fragment, outlineCount, hasAnyNesting);
+ }
+
+ async _currentOutlineItem() {
+ if (!this._isPagesLoaded) {
+ throw new Error("_currentOutlineItem: All pages have not been loaded.");
}
- this.container.appendChild(fragment);
+ if (!this._outline || !this._pdfDocument) {
+ return;
+ }
+
+ const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument);
+
+ if (!pageNumberToDestHash) {
+ return;
+ }
+
+ this._updateCurrentTreeItem(null);
+
+ if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) {
+ return;
+ }
+
+ for (let i = this._currentPageNumber; i > 0; i--) {
+ const destHash = pageNumberToDestHash.get(i);
+
+ if (!destHash) {
+ continue;
+ }
+
+ const linkElement = this.container.querySelector(`a[href="${destHash}"]`);
+
+ if (!linkElement) {
+ continue;
+ }
+
+ this._scrollToCurrentTreeItem(linkElement.parentNode);
+
+ break;
+ }
+ }
+
+ async _getPageNumberToDestHash(pdfDocument) {
+ if (this._pageNumberToDestHashCapability) {
+ return this._pageNumberToDestHashCapability.promise;
+ }
- this._dispatchEvent(outlineCount);
+ 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);
+
+ if (pdfDocument !== this._pdfDocument) {
+ return null;
+ }
+ } else {
+ explicitDest = dest;
+ }
+
+ if (Array.isArray(explicitDest)) {
+ const [destRef] = explicitDest;
+
+ if (typeof destRef === "object") {
+ pageNumber = this.linkService._cachedPageNumber(destRef);
+
+ if (!pageNumber) {
+ try {
+ pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;
+
+ if (pdfDocument !== this._pdfDocument) {
+ return null;
+ }
+
+ this.linkService.cachePageRef(pageNumber, destRef);
+ } catch (ex) {}
+ }
+ } else if (Number.isInteger(destRef)) {
+ pageNumber = destRef + 1;
+ }
+
+ 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);
+ }
+ }
+
+ if (items.length > 0) {
+ queue.push({
+ nesting: currentNesting + 1,
+ items
+ });
+ }
+ }
+ }
+
+ this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null);
+
+ return this._pageNumberToDestHashCapability.promise;
}
}
@@ -8006,18 +8277,17 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
exports.PDFOutlineViewer = PDFOutlineViewer;
/***/ }),
-/* 22 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 21 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-"use strict";
-Object.defineProperty(exports, "__esModule", {
+Object.defineProperty(exports, "__esModule", ({
value: true
-});
+}));
exports.PDFPresentationMode = 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;
@@ -8090,8 +8360,6 @@ class PDFPresentationMode {
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;
}
@@ -8128,7 +8396,7 @@ class PDFPresentationMode {
this._resetMouseScrollState();
- const success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage();
+ const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage();
if (success) {
this.mouseScrollTimeStamp = currentTime;
@@ -8137,36 +8405,30 @@ class PDFPresentationMode {
}
get isFullscreen() {
- return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement);
+ return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen);
}
- _goToPreviousPage() {
- const page = this.pdfViewer.currentPageNumber;
+ _notifyStateChange() {
+ let state = _ui_utils.PresentationModeState.NORMAL;
- if (page <= 1) {
- return false;
+ if (this.switchInProgress) {
+ state = _ui_utils.PresentationModeState.CHANGING;
+ } else if (this.active) {
+ state = _ui_utils.PresentationModeState.FULLSCREEN;
}
- this.pdfViewer.currentPageNumber = page - 1;
- return true;
- }
-
- _goToNextPage() {
- const page = this.pdfViewer.currentPageNumber;
+ this.eventBus.dispatch("presentationmodechanged", {
+ source: this,
+ state,
- if (page >= this.pdfViewer.pagesCount) {
- return false;
- }
+ get active() {
+ throw new Error("Deprecated parameter: `active`, please use `state` instead.");
+ },
- this.pdfViewer.currentPageNumber = page + 1;
- return true;
- }
+ get switchInProgress() {
+ throw new Error("Deprecated parameter: `switchInProgress`, please use `state` instead.");
+ }
- _notifyStateChange() {
- this.eventBus.dispatch("presentationmodechanged", {
- source: this,
- active: this.active,
- switchInProgress: !!this.switchInProgress
});
}
@@ -8252,9 +8514,9 @@ class PDFPresentationMode {
evt.preventDefault();
if (evt.shiftKey) {
- this._goToPreviousPage();
+ this.pdfViewer.previousPage();
} else {
- this._goToNextPage();
+ this.pdfViewer.nextPage();
}
}
}
@@ -8339,9 +8601,9 @@ class PDFPresentationMode {
}
if (delta > 0) {
- this._goToPreviousPage();
+ this.pdfViewer.previousPage();
} else if (delta < 0) {
- this._goToNextPage();
+ this.pdfViewer.nextPage();
}
break;
@@ -8399,14 +8661,12 @@ class PDFPresentationMode {
window.addEventListener("fullscreenchange", this.fullscreenChangeBind);
window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind);
window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
- window.addEventListener("MSFullscreenChange", this.fullscreenChangeBind);
}
_removeFullscreenChangeListeners() {
window.removeEventListener("fullscreenchange", this.fullscreenChangeBind);
window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind);
window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind);
- window.removeEventListener("MSFullscreenChange", this.fullscreenChangeBind);
delete this.fullscreenChangeBind;
}
@@ -8415,18 +8675,374 @@ class PDFPresentationMode {
exports.PDFPresentationMode = PDFPresentationMode;
/***/ }),
+/* 22 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.PDFSidebar = void 0;
+
+var _ui_utils = __webpack_require__(4);
+
+var _pdf_rendering_queue = __webpack_require__(8);
+
+const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
+
+class PDFSidebar {
+ constructor({
+ elements,
+ pdfViewer,
+ pdfThumbnailViewer,
+ eventBus,
+ l10n = _ui_utils.NullL10n
+ }) {
+ 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.l10n = l10n;
+
+ this._addEventListeners();
+ }
+
+ reset() {
+ this.isInitialViewSet = false;
+
+ this._hideUINotification(true);
+
+ this.switchView(_ui_utils.SidebarView.THUMBS);
+ this.outlineButton.disabled = false;
+ this.attachmentsButton.disabled = false;
+ this.layersButton.disabled = false;
+ this._currentOutlineItemButton.disabled = true;
+ }
+
+ get visibleView() {
+ return this.isOpen ? this.active : _ui_utils.SidebarView.NONE;
+ }
+
+ get isThumbnailViewVisible() {
+ return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS;
+ }
+
+ get isOutlineViewVisible() {
+ return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE;
+ }
+
+ get isAttachmentsViewVisible() {
+ return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS;
+ }
+
+ get isLayersViewVisible() {
+ return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS;
+ }
+
+ setInitialView(view = _ui_utils.SidebarView.NONE) {
+ if (this.isInitialViewSet) {
+ return;
+ }
+
+ this.isInitialViewSet = true;
+
+ if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) {
+ this._dispatchEvent();
+
+ return;
+ }
+
+ if (!this._switchView(view, true)) {
+ this._dispatchEvent();
+ }
+ }
+
+ switchView(view, forceOpen = false) {
+ this._switchView(view, forceOpen);
+ }
+
+ _switchView(view, forceOpen = false) {
+ const isViewChanged = view !== this.active;
+ let shouldForceRendering = false;
+
+ switch (view) {
+ case _ui_utils.SidebarView.NONE:
+ if (this.isOpen) {
+ this.close();
+ return true;
+ }
+
+ return false;
+
+ case _ui_utils.SidebarView.THUMBS:
+ if (this.isOpen && isViewChanged) {
+ shouldForceRendering = true;
+ }
+
+ break;
+
+ case _ui_utils.SidebarView.OUTLINE:
+ if (this.outlineButton.disabled) {
+ return false;
+ }
+
+ break;
+
+ case _ui_utils.SidebarView.ATTACHMENTS:
+ if (this.attachmentsButton.disabled) {
+ return false;
+ }
+
+ break;
+
+ case _ui_utils.SidebarView.LAYERS:
+ if (this.layersButton.disabled) {
+ return false;
+ }
+
+ break;
+
+ default:
+ console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`);
+ return false;
+ }
+
+ 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._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE);
+
+ if (forceOpen && !this.isOpen) {
+ this.open();
+ return true;
+ }
+
+ if (shouldForceRendering) {
+ this._updateThumbnailViewer();
+
+ this._forceRendering();
+ }
+
+ if (isViewChanged) {
+ this._dispatchEvent();
+ }
+
+ return isViewChanged;
+ }
+
+ open() {
+ if (this.isOpen) {
+ return;
+ }
+
+ this.isOpen = true;
+ this.toggleButton.classList.add("toggled");
+ this.outerContainer.classList.add("sidebarMoving", "sidebarOpen");
+
+ if (this.active === _ui_utils.SidebarView.THUMBS) {
+ this._updateThumbnailViewer();
+ }
+
+ this._forceRendering();
+
+ this._dispatchEvent();
+
+ this._hideUINotification();
+ }
+
+ close() {
+ if (!this.isOpen) {
+ return;
+ }
+
+ this.isOpen = false;
+ this.toggleButton.classList.remove("toggled");
+ this.outerContainer.classList.add("sidebarMoving");
+ this.outerContainer.classList.remove("sidebarOpen");
+
+ this._forceRendering();
+
+ this._dispatchEvent();
+ }
+
+ toggle() {
+ if (this.isOpen) {
+ this.close();
+ } else {
+ this.open();
+ }
+ }
+
+ _dispatchEvent() {
+ this.eventBus.dispatch("sidebarviewchanged", {
+ source: this,
+ view: this.visibleView
+ });
+ }
+
+ _forceRendering() {
+ if (this.onToggled) {
+ this.onToggled();
+ } else {
+ this.pdfViewer.forceRendering();
+ this.pdfThumbnailViewer.forceRendering();
+ }
+ }
+
+ _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);
+ }
+ }
+
+ pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
+ }
+
+ _showUINotification() {
+ this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains outline/attachments/layers)").then(msg => {
+ this.toggleButton.title = msg;
+ });
+
+ if (!this.isOpen) {
+ this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
+ }
+ }
+
+ _hideUINotification(reset = false) {
+ if (this.isOpen || reset) {
+ this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
+ }
+
+ if (reset) {
+ this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => {
+ this.toggleButton.title = msg;
+ });
+ }
+ }
+
+ _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
+ });
+ });
+
+ this._currentOutlineItemButton.addEventListener("click", () => {
+ this.eventBus.dispatch("currentoutlineitem", {
+ source: this
+ });
+ });
+
+ const onTreeLoaded = (count, button, view) => {
+ button.disabled = !count;
+
+ if (count) {
+ this._showUINotification();
+ } else if (this.active === view) {
+ this.switchView(_ui_utils.SidebarView.THUMBS);
+ }
+ };
+
+ this.eventBus._on("outlineloaded", evt => {
+ onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE);
+
+ if (evt.enableCurrentOutlineItemButton) {
+ this.pdfViewer.pagesPromise.then(() => {
+ this._currentOutlineItemButton.disabled = !this.isInitialViewSet;
+ });
+ }
+ });
+
+ this.eventBus._on("attachmentsloaded", evt => {
+ onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS);
+ });
+
+ this.eventBus._on("layersloaded", evt => {
+ onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS);
+ });
+
+ this.eventBus._on("presentationmodechanged", evt => {
+ if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.isThumbnailViewVisible) {
+ this._updateThumbnailViewer();
+ }
+ });
+ }
+
+}
+
+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